使用参数运行函数

2024-10-05 14:25:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要运行一个python程序并给它一个参数,这些参数是要执行的代码中的函数名。我可以通过使用系统argv并执行相应的函数,但我希望自动执行,因为我的代码中有很多函数。例如,当我跑步时

my_program f1 f2 f3

我的程序应该先执行名为“f1”的函数,然后再执行“f2”的函数,等等。我知道这听起来可能不像“pythonic”甚至“programmer'sway”,但我很好奇是否有办法。你知道吗


Tags: 函数代码程序参数my系统pythonicprogram
1条回答
网友
1楼 · 发布于 2024-10-05 14:25:28

这样做“自动”是个坏主意。它会打开你的代码,让各种各样的安全漏洞等待发生。相反,解析参数,专门查找您认可的有限函数名集。你知道吗

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

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。你知道吗

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

相关问题 更多 >