背景
在写python脚本的时候,需要根据不同的命令来执行不同的函数,刚开始的时候是通过sys.argv来传递需要执行的函数和相关参数,很土的用if判断,每多一个函数就要多加几行执行逻辑,就搜索了一下python动态执行的方法,找到了eval这个函数。
def add(a, b):
return a + b
add(1, 2)
#返回3
如果想动态调用add函数,可以这么写:
eval('add(1, 2)')
#返回的结果也是3
有了eval,就不用每次都写执行逻辑了,例如:
import sys
class A(object):
def f1(self):
print "f1"
def add(self, a, b):
print "add " + str(a) + " " + str(b) + " = " + str(a + b)
def cmd(self, argv):
eval('self.' + argv[1] + '(' + ','.join(argv[2:]) + ')')
if __name__ == '__main__':
a = A()
a.cmd(sys.argv)
#就不用写下面的了
#if sys.argv[1] == "f1":
# a.f1()
#elif sys.argv[1] == "add":
# a.add(int(sys.argv[2]), int(sys.argv[3]))