关于python:使用参数运行函数

Using arguments to to run functions

我需要运行一个python程序并给它参数,这些参数是要执行的代码中的函数名。我可以通过使用sys.argv捕捉参数并执行适当的函数来实现这一点,但我希望自动完成这一点,因为我的代码中有很多函数。例如,当我跑步时

1
my_program f1 f2 f3

我的_程序应该执行名为'f1'的函数,然后执行'f2'等。我知道这听起来可能不是"Python式的"甚至"程序员的方式",但我很好奇是否有一种方式。


"自动"这样做是个坏主意。它为等待发生的各种安全错误打开了您的代码。相反,解析参数,专门寻找您认可的有限函数名集。

但是,如果必须"自动"执行,则可以在globals()dict中查找函数名。

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]()

编辑:这里有一个版本有一个小程度的安全内置。它将执行f1f2,但不执行f3sys.failsafe_nuclear_launch

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