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