字典整数作为键和函数作为值?

时间:2017-08-01 16:10:40

标签: python python-2.7 function dictionary

这是我的代码:

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。

3 个答案:

答案 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]()