[英]python: calling a function from a dictionary in another module
我有一個if語句,該語句檢查來自另一個模塊的字典,以查看它是否包含恰好具有功能為其值的關鍵字。 該函數從不被顯式調用,但是在程序啟動之前執行,甚至在其他任何事情發生之前都執行。 這不是理想的行為,永遠不要實際調用該函數。 如果關鍵字在詞典中,則所有應發生的就是程序在終端上打印“ good”。 難道我做錯了什么? 我已經在互聯網上搜尋了好幾個小時,而且我的大腦也很疼:(
來自“ source.py”:
import commands
game_state = 'playing'
while game_state == 'playing':
player_input = raw_input('>>')
if player_input == 'quit':
break
elif player_input in commands.command_list:
print 'good'
並且從“ commands.py”:
def one():
print '1'
command_list = {'one' : one()}
最后,這是輸入函數名稱后的結果終端:
1
>>one
good
>>_
一開始就不應該存在“ 1”,因為從不實際調用該函數...對嗎? 我不知道這個
您存儲由一個調用的返回值one
在你的字典。 由於您的字典是全球性的,因此它在導入時會獲得其價值。 即您的代碼等效於:
x = one() # call the function
command_list = {'one' : x} # store result in a dict
嘗試:
command_list = {'one' : one} # store the function in a dict
這將存儲功能對象,而不調用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.