2024-10-05 14:25:28 发布
网友
我需要运行一个python程序并给它一个参数,这些参数是要执行的代码中的函数名。我可以通过使用系统argv并执行相应的函数,但我希望自动执行,因为我的代码中有很多函数。例如,当我跑步时
my_program f1 f2 f3
我的程序应该先执行名为“f1”的函数,然后再执行“f2”的函数,等等。我知道这听起来可能不像“pythonic”甚至“programmer'sway”,但我很好奇是否有办法。你知道吗
这样做“自动”是个坏主意。它会打开你的代码,让各种各样的安全漏洞等待发生。相反,解析参数,专门查找您认可的有限函数名集。你知道吗
但是,如果必须“自动”执行,可以在globals()dict中查找函数名
globals()
import sys def f1(): print "1" def f2(): print "2" def f3(): print "3" for fname in sys.argv[1:]: globals()[fname]()
编辑:这是一个版本,有一个小程度的安全内置。例如,它将执行f1或f2,但不执行f3或sys.failsafe_nuclear_launch。你知道吗
f1
f2
f3
sys.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
这样做“自动”是个坏主意。它会打开你的代码,让各种各样的安全漏洞等待发生。相反,解析参数,专门查找您认可的有限函数名集。你知道吗
但是,如果必须“自动”执行,可以在
globals()
dict中查找函数名编辑:这是一个版本,有一个小程度的安全内置。例如,它将执行
f1
或f2
,但不执行f3
或sys.failsafe_nuclear_launch
。你知道吗相关问题 更多 >
编程相关推荐