python中内置方法的字典

时间:2015-11-10 13:38:35

标签: python python-3.x dictionary built-in

我正在尝试创建内置方法的字典,但我得到的输出如下所示。为什么会这样?我只想了解这一点。

>>>
>>> dict = {'a': print('avc'), 'b': print('bbbb'), 'c': print('aaa')}
avc
bbbb
aaa
>>> dict
>>> {'a': None, 'b': None, 'c': None}
>>>

此外,如果有人试图了解我的来源,那么他们可以看看这个问题: Link to the question I was trying to solve when I thought the above would be useful.

3 个答案:

答案 0 :(得分:2)

因为在创建字典时调用函数print。您已将调用的结果存储在字典中,而不是功能 print。因此,您的词典将由None值填充,代表print来电的返回值

你应该做的是如下结构:

d = {'abc': print} 

现在你的词典将存储实际的函数{'abc', <function print>}

然后,您可以通过迭代字典的值来调用这些函数:

for str, func in d.items():
    func(str)

# prints abc

此外,您需要避免为变量使用dict之类的名称。他们 掩盖 用于python的fixed version (filed for v9)(在您的情况下为built-in types内置类型)。

通常选择其他名称,例如d

答案 1 :(得分:0)

print是一个将内容输出到屏幕的函数,并返回None

当你做作业时,你说的是“哈希值a等于什么打印(”avc“)返回”

这意味着调用print("avc")(这就是你看到打印值的原因)并且它返回None,所以你的dict中a的值为None。

答案 2 :(得分:0)

打印不返回值。

想象一下它的定义

(void) print(object):
   do magic io stuff to make object appear in the console

因此,当您为键&#39; a&#39;分配打印(&#39; avc&#39;)时在字典中,它没有。