簡體   English   中英

python:從另一個模塊的字典中調用函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM