这是我的代码:
def test1():
print("nr1")
def test2():
print("nr2")
def test3():
print("nr3")
def main():
dictionary = { 1: test1(), 2: test2(), 3: test3() }
dictionary[2]
if __name__ == "__main__":
main()
此代码返回:
nr1
nr2
nr3
我需要在代码中更改以获取此信息:
nr2
我正在使用Python 2.7.13。
答案 0 :(得分:6)
不要在dict中调用函数;调用dict查找的结果。
dictionary = { 1: test1, 2: test2, 3: test3 }
dictionary[2]()
答案 1 :(得分:3)
创建字典时忽略函数调用,只调用dictionary[2]
返回的内容:
def main():
dictionary = { 1: test1, 2: test2, 3: test3 }
dictionary[2]()
答案 2 :(得分:3)
下面的行实际上调用了每个函数并将结果存储在字典中:
dictionary = { 1: test1(), 2: test2(), 3: test3() }
这就是你看到三行输出的原因。每个函数都被调用。由于函数没有返回值,因此值None
存储在字典中。打印它(print(dictionary
):
{1: None, 2: None, 3: None}
相反,将函数本身存储在字典中:
dictionary = { 1: test1, 2: test2, 3: test3 }
print(dictionary)
的结果:
{1: <function test1 at 0x000000000634D488>, 2: <function test2 at 0x000000000634D510>, 3: <function test3 at 0x000000000634D598>}
然后使用字典查找来获取该函数,然后调用它:
dictionary[2]()