Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dictionary python:从另一个模块中的字典调用函数_Dictionary_Python 2.7_Module - Fatal编程技术网

Dictionary python:从另一个模块中的字典调用函数

Dictionary python:从另一个模块中的字典调用函数,dictionary,python-2.7,module,Dictionary,Python 2.7,Module,我有一个if语句,它检查来自另一个模块的字典,看看它是否包含一个关键字,而这个关键字恰好有一个函数作为它的值。函数从未被显式调用,但它在程序启动时执行,甚至在其他任何事情发生之前。这不是期望的行为,函数永远不应该被调用。如果关键字在字典中,那么程序将向终端打印“good”。我做错什么了吗?我在互联网上搜索了几个小时,我的大脑受伤了:( 来自“source.py”: import commands game_state = 'playing' while game_state == 'playi

我有一个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
返回的值存储在dict中。由于dict是全局的,它在导入时获取其值。即,您的代码相当于:

x = one()  # call the function
command_list = {'one' : x}  # store result in a dict
尝试:

这将存储函数对象,而不调用它

command_list = {'one' : one}  # store the function in a dict