亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何通過名稱(字符串)調用當前函數中定義的函數

如何通過名稱(字符串)調用當前函數中定義的函數

慕神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 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號