![](/img/trans.png)
[英]How do you use a string from a list to call a function with the same name, in Python?
[英]How do you call a function defined in the current function by its name (a string)
当名称存储在字符串中时如何调用 function, 已经得到解答。
我想知道的是,如果我要呼叫的 function 在我的本地 scope 中定义,我该怎么做。
这与其他问题不同,因为当 function 在另一个 function 中时,它们并不是指按名称调用 function。
例如
def outer():
def inner():
# code for inner
method_to_call = 'inner'
# call inner by the value of method_to_call
那么在上面的代码中,我如何调用由 method_to_call 中的值定义的method_to_call
呢?
您可以使用locals()
:
def outer():
def inner():
print("Called.")
method_to_call = 'inner'
locals()[method_to_call]()
在调用outer
之后,“调用”。 被打印出来。
请注意,如果存在名为inner
的不可调用项(例如,具有inner = "abc"
将导致此错误),则会出现错误。
但是,正如评论所说,这仅在您从其他地方获取inner
名称时才有用(比方说输入)。 如果您事先已经知道要调用哪个本地 function,最好直接使用inner
而不是通过locals()
。
在 Python 中,您可以使用eval
将任何字符串转换为代码并执行它。
def outer():
def inner():
# code for inner
method_to_call = 'inner'
eval(method_to_call + '()')
请注意,该字符串必须包含有效的 Python 代码,因此在这种情况下,您需要将括号 () 添加到 function 的名称中,以创建调用语句,就像您在正常调用中编写的那样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.