我試圖使在python其中,如果用戶選擇了一些在執行不同的功能選項的菜單:訪問蟒蛇字典值
def options(x):
return {
1: f1(),
2: f2()
}[x]
def f1():
print "hi"
def f2():
print "bye"
然而,好,我叫
options(1)
我得到:
hi
bye
,並同當我打電話options(2)
這是怎麼回事?
我試圖使在python其中,如果用戶選擇了一些在執行不同的功能選項的菜單:訪問蟒蛇字典值
def options(x):
return {
1: f1(),
2: f2()
}[x]
def f1():
print "hi"
def f2():
print "bye"
然而,好,我叫
options(1)
我得到:
hi
bye
,並同當我打電話options(2)
這是怎麼回事?
要調用的函數,而不是assiging他們對鍵
def f1():
print "hi"
def f2():
print "bye"
functions = {1: f1, 2: f2} # dict of functions (Note: no parenthesis)
def options(x):
return functions[x]() # Get the function against the index and invoke it
options(1)
# hi
options(2)
# bye
你的字典是建立與返回值的功能;不要調用函數,直到從字典採摘之後:
def options(x):
return {
1: f1,
2: f2
}[x]()
現在您存儲只是一個在字典中的職能參考,並調用所選擇的功能後取回。
演示:
>>> def f1():
... print "hi"
...
>>> def f2():
... print "bye"
...
>>> def options(x):
... return {
... 1: f1,
... 2: f2
... }[x]()
...
>>> options(1)
hi
>>> options(2)
bye
與回報更換打印並用,那麼它會工作返回。或者使用fortheye版本。
問題在於,在構建字典時調用函數(使用()
)。離開後,只有在從字典中獲得價值後才應用它們:
def options(x):
return {
1: f1,
2: f2
}[x]()