遥怜小儿女,
未解忆长安。
——杜甫《月夜》
本期文章4000字
根据之前文章的后台统计数据推算
本期预计所需阅读时间25分钟
本系列文章已加入“维权骑士”(rightknights.com)的版权保护计划
本文原创内容受到保护
空值(None)
之前说过很多数据类型了,例如整型(整数)、浮点型(浮点数)、字符串型(字符串)、数组型(数组)、布尔型(布尔变量)等。如果我们想把各种类型的变量的值清空或留空,就需要None来表示:空值。
None(空)是一种数据,不是一种单独的数据类型。这个数据用于表示它所处的位置缺少应有的值。
与其他“空”值(如数值0,空数组[]和空字符串"")一样,None对应的布尔值为False,但并不意味着None与False相等,需要特别留意。详见后面的例子。
在Python中输出时,None直接输出为空字符串,在print语句输出则为None。
通俗来说,None(空)是一个特殊值,表示“这里没有东西”。“if”之类的语句只是将其解释为False,而这个结果并不意味着它等于False。 我们可以将None赋值给变量,就像把其他值赋值给变量一样,但我们没有必要这样做,因为这样赋值完的变量还是没有内容。
来看例子:
>>>None==None
True
>>>None
>>>None#这行命令和下面一行运行结果解释了“None直接输出内容为空字符串”
>>> print(None)#这行命令和下面一行运行结果解释了“None在print语句下输出为None”
None
关于None与False的关系,看下面这个例子:
print(None == False)
if None:
print("None got interpreted as True")
else:
print("None got interpreted as False")
运行结果:
False
None got interpreted as False
可以看到,在if语句等判断语句中,None对应的布尔值为False,但None与False并不相等。
既然是一个值,这么说来None也可以是函数的返回值。事实上也是如此——任何一个未显式返回内容(没有明确定义返回值)的函数,返回值就是None。
deffunc():
print("Hi!")
var = func()
print(var)
运行结果:
>>>
Hi!
None
>>>
测试题10.1.
代码的输出结果是?
a = print()
if a == None:
print(1)
else:
print(2)
点击下方空白区域查看答案
▼
1
print函数没有返回值。“输出内容”只是它的功能,而不是它的返回值。
数据类型:字典(Dictionary)
字典是一种用来存储和调用数据的结构,它用于将实际值映射到任意索引值。
可以看出,数组是一种特殊的字典。数组可以被认为是具有特定范围内的整数索引值的字典,字典可以被认为是可以自定义索引值的数组。
在字典中,我们可以使用包含索引值的花括号来对字典编制索引值。
定义字典时,字典中的每个元素都由一组“索引值:实际值”表示。
调用字典中某个值时,我们可以像调用数组中元素那样,把索引值放到自点名后面的方括号中来调用相应的字典元素。来看例子:
ages = {"ZhangSan": 21, "LiMing": 40, "WangErMaZi": 58}
print(ages["ZhangSan"])
print(ages["WangErMaZi"])
运行结果:
>>>
21
58
>>>
可以看到,与之前提到过的数组相似,只不过在字典中我们可以自己定义索引值(比如上面例子里的ZhangSan和WangErMaZi)。
如果试图调用字典中不存在的索引值,会引发KeyError。
primary = {
"red": [255, 0, 0],
"green": [0, 255, 0],
"blue": [0, 0, 255]
}
print(primary["red"])
print(primary["yellow"])
运行结果:
>>>
[255, 0, 0]
KeyError: 'yellow'
>>>
可以看到,定义字典时,我们可以在花括号中分行列出元素以便看起来更清晰。但是要注意的是,花括号中每一行前都要加缩进,花括号的后半部分("}")在最后单放一行,不加缩进。
另外,在上面的例子中还可以看出,字典存放的值同样没有类型要求,比如上面这个例子我们就把三个数组塞到了字典里作为了字典的三个元素。
要注意的是,数组是有默认索引值的——从0开始,每个元素索引值依次加1,但是字典是没有默认索引值的,只要我们自己没有定义字典元素的索引值,这个索引值就不存在。
测试题10.2.
代码的输出结果是?
test = { }
print(test[0])
领取专属 10元无门槛券
私享最新 技术干货