空的定义
None是python的基本数据类型之一,None表示什么都没有,什么都不是,所以None不可被迭代。None是不可改变的,在内存中拥有唯一的地址。我们可以使用如下方式来表示空。
none = None
print(none) # None
空的使用场景
None这个数据类型有且仅有一个值None,我们该怎样去使用它呢?
给变量赋初值
我们在编写代码的过程中,常常会使用一些变量来存放对象。有的变量会在代码中频繁使用,当某个被频繁使用变量的首次定义出现在判断语句或循环语句中时,会使代码的可读性变差,有可能出现变量未定义的错误。这时我们应该在判断语句或循环语句之前,先给这个变量赋初值(提前声明变量)。如果此变量要声明的类型非python的基本数据类型,我们可以先声明此变量为None。
class MyData: # 自定义一个MyData类
"""
MyData 数据类型
暂不定义任何属性和方法
"""
my_date = None # 提前声明变量为空
while True: # while死循环
if type(my_date) == MyData: # 判断变量my_date的类型是否为MyData
break # 是MyData类型结束循环
my_date = MyData() # 给变量my_date赋值为MyData实例
print(my_date) # <__main__.MyData object at 0x000001D762E1A430>
没有定义返回值的函数返回None
python中每一个函数都会有返回值,当我们定义一个函数时,如果这个函数我们不需要它返回任何值时(未定义任何返回值),python默认返回None。
定义了返回值
def add(number_a: int, number_b: int): # 定义一个名为add的函数,接收两个参数number_a、number_b,皆已声明为整型
"""
做整数的加法
:param number_a: 第一个整数
:param number_b: 第二个整数
:return: 相加求和的结果
"""
sum_ab = number_a + number_b # 把number_a和number_b相加求和结果赋值给变量sum_ab
return sum_ab # 返回sum_ab
number = add(2, 3) # 使用add函数求出整数2和3的相加结果赋值给变量number
print(number) # 5
未定义返回值
def add(number_a: int, number_b: int): # 定义一个名为add的函数,接收两个参数number_a、number_b,皆已声明为整型
"""
做整数的加法
:param number_a: 第一个整数
:param number_b: 第二个整数
:return:
"""
sum_ab = number_a + number_b # 把number_a和number_b相加求和结果赋值给变量sum_ab
print(sum_ab) # 打印出sum_ab的值
number = add(2, 3) # 使用add函数求出整数2和3的相加结果
print(number) # None
作为省缺参数的默认值
当我们定义的函数中有省却参数时,可以给这个省却参数设置默认值为None,可以有效防止函数在未接收到参数时报错。
def square(number: int = None): # 定义一个名为square的函数,接收一个参数number声明为整型默认值为None
"""
求整数的平方
:param number: 一个整数,默认值为None
:return: number
"""
if number is not None: # 判断number是否为空
number **= 2 # 不为空则使用求幂赋值运算符(**=)求出number的平方再赋值给number
return number # 返回number
print(square()) # None
print(square(3)) # 9
bool的定义
bool是python的基本数据类型之一,是不可被迭代的数据类型,不可被修改。bool数据类型有两个值True和False,True表示真、False表示假。因此bool在python中被作为条件判断的依据。定义方式如下:
state = True
print(state) # True
state = False
print(state) # False
bool的使用场景
用于条件判断
python中的比较运算也被称作bool运算,因为使用比较运算符==、!=、<、>、<=、>=返回的结果都是bool值(True或者False)。当比较运算符两边的值满足比较运算符的条件时返回真(True),不满足比较运算符的条件时返回假(False)。同理的还有成员运算符和身份运算符。
print(1 < 2) # True
print(1 > 2) # False
在判断语句中的使用如下:
if 1 < 2:
print('yes')
因为1 < 2返回的值是True,所以上面代码的本质是:
if True:
print('yes')
所以我们可以直接使用bool类型的变量来影响条件判断语句。
state = True
if state:
print('state is True')
else:
print('state is False')
state = False
if state:
print('state is True')
else:
print('state is False')
执行结果如下:
用于while循环语句
while循环语句的循环条件也是使用的bool,当条件为真时(True)执行循环语句,当条件为假时(False)结束循环。
number = 1
while number < 10:
print(f'number = {number}')
number += 1
其本质就是看number < 10的返回值,返回值为True时执行循环语句,返回值为False时结束循环。所以我们可以直接使用bool类型的变量来影响while循环语句。
state = True
number = 1
while state:
print(f'number = {number}')
number += 1
state = False
执行结果如下:
循环语句在执行一轮后state被赋值为了False,所以下一轮while条件为False,while循环结束。
bool的等效值
python中其他的基本数据类型跟bool在条件判断中拥有同等效用。其中False的等效值有限,True的等效值无限多。
Fasle的等效值
条件判断中False的等效值如下表:
整型 | 0 |
浮点型 | 0.0 |
字符串 | '' "" '''''' """""" |
列表 | [] |
元组 | () |
字典 | {} |
集合 | set() |
冻结集合 | frozenset() |
空 | None |
整型中的0、浮点型中的0.0、字符串中的空字符串、列表中的空列表、元组中的空元组、字典中的空字典、集合中的空集合、冻结集合中的空冻结集合、空中的None都与False等效。举个例子:
list1 = []
if list1:
print('hello')
else:
print('world')
执行结果如下:
从上面的例子中我们可以看出空列表与False是等效的。
number = 5
while number:
print(f'number = {number}')
number -= 1
执行结果如下:
从上面的例子我们可以看出整型0与False是等效的。
True的等效值
python的基本数据中除去False的等效值都是True的等效值,所以True的等效值是无限的。光一个整型,除去0以外,从1数到正无穷,从-1数到负无穷。列举的完吗,根本列举不完,所以我们这里就不一一列举了。
if 1:
print('hello')
else:
print('world')
执行结果如下:
从上面的例子我们可以看出整型1与True等效。