2 回答

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊
您可以使用locals():
def outer():
def inner():
print("Called.")
method_to_call = 'inner'
locals()[method_to_call]()
呼叫后outer,“呼叫”。被打印出來(lái)。
注意如果有不可調(diào)用的named會(huì)報(bào)錯(cuò)inner(比如havinginner = "abc"會(huì)導(dǎo)致這個(gè))。
但是,正如評(píng)論所說(shuō),這僅在您從其他地方獲取名稱(chēng)inner(比方說(shuō)輸入)時(shí)才有用。如果您事先已經(jīng)知道要調(diào)用的本地函數(shù),最好inner直接使用而不是通過(guò)locals()。

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊
在 Python 中,您可以使用它eval來(lái)將任何字符串轉(zhuǎn)換為代碼并執(zhí)行它。
def outer():
def inner():
# code for inner
method_to_call = 'inner'
eval(method_to_call + '()')
請(qǐng)注意,該字符串必須包含有效的 Python 代碼,因此在這種情況下,您需要將括號(hào) () 添加到函數(shù)名稱(chēng),以創(chuàng)建一個(gè)調(diào)用語(yǔ)句,就像您在正常調(diào)用中編寫(xiě)的那樣。
添加回答
舉報(bào)