我想做的事情如下:
dct = ['do_this', 'do_that']
dct[0]() // call do_this
Run Code Online (Sandbox Code Playgroud)
但是你不能将字符串作为函数调用(会出错).
我怎样才能做到这一点,而无需切换,并且不使用lambda表达式或功能的列表?
显然我想按名称引用函数.
Fré*_*idi 12
函数是Python 中的第一类对象:
def do_this():
pass
def do_that():
pass
dct = [do_this, do_that]
dct[0]() # calls do_this()
Run Code Online (Sandbox Code Playgroud)
如果dct绝对必须是一个字符串列表,我会选择eval():
eval(dct[0] + "()")
Run Code Online (Sandbox Code Playgroud)
这不是很漂亮,但之间的切换globals(),并getattr()在适当的模块可以是一个痛苦.
kan*_*aka 10
函数是第一类对象.像这样:
def do_this():
print "In do_this"
def do_that():
print "In do_that"
dct = [do_this, do_that]
dct[0]()
Run Code Online (Sandbox Code Playgroud)
如果你真的想从字符串列表中调用它们,可以使用globals():
dct = ['do_this', 'do_that']
globals()[dct[0]]()
Run Code Online (Sandbox Code Playgroud)
但我建议使用globals()(或locals())可能不是解决问题的正确方法.以蟒蛇的方式:>>> import this
| 归档时间: |
|
| 查看次数: |
5579 次 |
| 最近记录: |