Using arguments to to run functions
我需要运行一个python程序并给它参数,这些参数是要执行的代码中的函数名。我可以通过使用sys.argv捕捉参数并执行适当的函数来实现这一点,但我希望自动完成这一点,因为我的代码中有很多函数。例如,当我跑步时
1 | my_program f1 f2 f3 |
我的_程序应该执行名为'f1'的函数,然后执行'f2'等。我知道这听起来可能不是"Python式的"甚至"程序员的方式",但我很好奇是否有一种方式。
"自动"这样做是个坏主意。它为等待发生的各种安全错误打开了您的代码。相反,解析参数,专门寻找您认可的有限函数名集。
但是,如果必须"自动"执行,则可以在
1 2 3 4 5 6 7 8 | import sys def f1(): print"1" def f2(): print"2" def f3(): print"3" for fname in sys.argv[1:]: globals()[fname]() |
编辑:这里有一个版本有一个小程度的安全内置。它将执行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import sys def f1(): print"1" f1.safe = True def f2(): print"2" f2.safe = True def f3(): print"3" for fname in sys.argv[1:]: fn = globals()[fname] if fn.__dict__.get('safe'): fn() else: print"No %s for you!" % fname |