我开始学习Python中的字典。
对于以下字典:
nameMap={1: "Bob", 2: "Pete", 3: "Ben", 4: "Bud", 5: "Russ"}
为了获得一个值,使用print(nameMap[1])
和nameMap[1]
时输出略有不同。
你能解释一下这里到底发生了什么吗?
这就是意思:
nameMap[1]
将返回一个str
类型对象
print(nameMap[1])
将返回一个NoneType
对象
以下是支持代码:
混淆时,请使用type()
方法检查值的类型。
>>> nameMap = {1: "Bob", 2: "Pete", 3: "Ben", 4: "Bud", 5: "Russ"}
>>> nameMap[1]
'Bob'
>>> type(nameMap[1])
<class 'str'>
>>> print(nameMap[1])
Bob
>>> type(print(nameMap[1]))
Bob
<class 'NoneType'>
获得一个值,当使用print(nameMap[1](和nameMap[1]时,out的放值略有不同。你能解释一下这里到底发生了什么吗?谢谢。
我认为您的意思是"当您尝试使用显式print
调用打印变量的值时"与"通过在解释器上直接键入变量名称而不使用print
"之间的区别。
我已经厌倦了你的解释器代码:
Python 3.7.5 (default, Nov 20 2019, 09:21:52)
[GCC 9.2.1 20191008] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> nameMap={1: "Bob", 2: "Pete", 3: "Ben", 4: "Bud", 5: "Russ"}
>>> print(nameMap[1])
Bob
>>> nameMap[1]
'Bob'
>>>
我的猜测是,印刷的差异是由于类的__repr__
和__str__
方法的差异。
print(variable)
等于print(str(variable))
而
变量等于print(repr(variable))
。
也试试这个:
>>> print(nameMap[1])
Bob
>>> nameMap[1]
'Bob'
>>> print(repr(nameMap[1]))
'Bob'
>>>
print(nameMap[1])
只是在控制台(或您使用的任何输出系统(上打印值。
nameMap[1]
只返回字典包含的值,无论类型是什么。为了知道值是什么类型,type(nameMap[1])
.