python:从另一个模块中的字典中调用函数
问题描述:
我有一个if语句来检查来自另一个模块的字典,看它是否包含碰巧有一个函数作为其值的关键字。该函数从未明确调用过,但是在程序启动之前执行,甚至发生任何事情。这不是所希望的行为,应该永远不会调用该函数。如果关键字在字典中,所有应该发生的事情是程序向终端打印“良好”。难道我做错了什么?我已经冲刷了好几个小时在网上和我的脑袋疼:(python:从另一个模块中的字典中调用函数
从 '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
此存储函数对象,而不调用它。
哦好吧很酷。非常感谢,这让O_O非常沮丧 – pulsefrequency 2013-03-12 05:49:29