您的位置:首页 > 编程语言 > Python开发

python eval函数 动态执行python语句

2015-08-05 16:01 603 查看

背景

在写python脚本的时候,需要根据不同的命令来执行不同的函数,刚开始的时候是通过sys.argv来传递需要执行的函数和相关参数,很土的用if判断,每多一个函数就要多加几行执行逻辑,就搜索了一下python动态执行的方法,找到了eval这个函数。

[code]def add(a, b):
  return a + b

add(1, 2)
#返回3


如果想动态调用add函数,可以这么写:

[code]eval('add(1, 2)')
#返回的结果也是3


有了eval,就不用每次都写执行逻辑了,例如:

[code]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]))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: