我正在尝试创建内置方法的字典,但我得到的输出如下所示。为什么会这样?我只想了解这一点。
>>>
>>> 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.
答案 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;)时在字典中,它没有。