當名稱存儲在字符串中時如何調用函數,已經得到解答。我想知道的是,如果我要調用的函數是在我的本地范圍內定義的,我該怎么做。這與其他問題不同,因為當函數在另一個函數內部時,它們不是指按名稱調用函數。例如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()。

米琪卡哇伊
TA貢獻1998條經驗 獲得超6個贊
在 Python 中,您可以使用它eval來將任何字符串轉換為代碼并執行它。
def outer():
def inner():
# code for inner
method_to_call = 'inner'
eval(method_to_call + '()')
請注意,該字符串必須包含有效的 Python 代碼,因此在這種情況下,您需要將括號 () 添加到函數名稱,以創建一個調用語句,就像您在正常調用中編寫的那樣。
添加回答
舉報
0/150
提交
取消