如何通过名称(字符串)调用当前函数中定义的函数

当名称存储在字符串中时如何调用函数,已经得到解答

我想知道的是,如果我要调用的函数是在我的本地范围内定义的,我该怎么做。

这与其他问题不同,因为当函数在另一个函数内部时,它们不是指按名称调用函数。

例如

def outer():

   

    def inner():

        # code for inner


    method_to_call = 'inner'

   

    # call inner by the value of method_to_call

那么在上面的代码中,我该如何调用由中的值定义的函数呢method_to_call?


慕神8447489
浏览 116回答 2
2回答

临摹微笑

您可以使用locals():def outer():    def inner():        print("Called.")    method_to_call = 'inner'    locals()[method_to_call]()呼叫后outer,“呼叫”。被打印出来。注意如果有不可调用的named会报错inner(比如havinginner = "abc"会导致这个)。但是,正如评论所说,这仅在您从其他地方获取名称inner(比方说输入)时才有用。如果您事先已经知道要调用的本地函数,最好inner直接使用而不是通过locals()。

米琪卡哇伊

在 Python 中,您可以使用它eval来将任何字符串转换为代码并执行它。def outer():    def inner():        # code for inner    method_to_call = 'inner'    eval(method_to_call + '()')请注意,该字符串必须包含有效的 Python 代码,因此在这种情况下,您需要将括号 () 添加到函数名称,以创建一个调用语句,就像您在正常调用中编写的那样。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python