为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕神8447489 2023-03-16 16:32:04
当名称存储在字符串中时如何调用函数,已经得到解答。我想知道的是,如果我要调用的函数是在我的本地范围内定义的,我该怎么做。这与其他问题不同,因为当函数在另一个函数内部时,它们不是指按名称调用函数。例如def outer():       def inner():        # code for inner    method_to_call = 'inner'       # call inner by the value of method_to_call那么在上面的代码中,我该如何调用由中的值定义的函数呢method_to_call?
查看完整描述

2 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

您可以使用locals():


def outer():

    def inner():

        print("Called.")


    method_to_call = 'inner'


    locals()[method_to_call]()

呼叫后outer,“呼叫”。被打印出来。


注意如果有不可调用的named会报错inner(比如havinginner = "abc"会导致这个)。


但是,正如评论所说,这仅在您从其他地方获取名称inner(比方说输入)时才有用。如果您事先已经知道要调用的本地函数,最好inner直接使用而不是通过locals()。


查看完整回答
反对 回复 2023-03-16
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

在 Python 中,您可以使用它eval来将任何字符串转换为代码并执行它。


def outer():

    def inner():

        # code for inner


    method_to_call = 'inner'


    eval(method_to_call + '()')

请注意,该字符串必须包含有效的 Python 代码,因此在这种情况下,您需要将括号 () 添加到函数名称,以创建一个调用语句,就像您在正常调用中编写的那样。


查看完整回答
反对 回复 2023-03-16
  • 2 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信