字面量
约 969 字大约 3 分钟
2025-04-03
字面量简单来说就是直接在程序中写出来的值。Python 的字面量包括数字(整数、浮点数、虚数)、布尔值、None、字符串,等等。Python 的字面值都是不可变数据类型。字符串 因为要讲的内容实在太多,后面会详细讨论,这里暂时就先不介绍了
数字
Python 的数字有三种:整数、浮点数和虚数,构造函数分别为 int
、float
和 complex
。
整数
整型数字在 Python 中的关键字是 int
,整形在计算机中用于计算和比较。
在 32 位机器上 int
的范围是:-2**31 ~ 2**31 - 1
,也就是-2147483648 ~ 2147483647
;
在 64 位机器上 int
的范围是:-2**63 ~ 2**63 - 1
,也就是-9223372036854775808 ~ 9223372036854775807
;
在 Python3 中,整型统统使用 int
。在 Python2 中,较小的整形函数也用 int
,但是对于数值很大的整型,需要使用 long
。
在 Python2 中,数值较大的整型数据结尾可能 会出现一个 L
标识,例如 321312321L
。在 Python3 中,无论数值有多大,都不会出现这种标识。
整数在 Python 中的构造函数为 int
,基本操作如下:
a = 10
b = 5
print(-b) # 相反数
print(a - b)
print(a + b)
print(a * b) # 乘
print(a / b) # 除(结果为浮点数)
print(a // b) # 地板除(结果为整数,向下取整)
10 进制转换为 2 进制
整除 2,获取余数,将余数从下向上整合。例如求 11 的二进制数:
除数 余数
11 1
5 1
2 0
1 1
0
于是,11
的二进制数就是 1011
。
2 进制转换为 10 进制
从右向左,每一位的权重是 2**(位数 - 1)
。位数是从右向左数到的次序。例如,倒数第一位的权重是 2**0
,即 1
,倒数第二位的权重为 2**1
,即 2
。将二进制转换为十进制,只需要将二进制每一位的数值乘以改为的权重然后将它们想加到一起即可。例如,我们可以这样计算二进制数 1011
的十进制数值:
1 * 2 ** 0 + 1 * 2 ** 1 + 0 * 2 ** 2 + 1 * 2 ** 3
= 1 + 2 + 0 + 8
= 11
使用 Python 进行进制转换
bin(<十进制数>)
:将十进制数转换成二进制(常用)int("字符串", 2)
:将某个进制(示例中为二进制)转换为十进制
示例如下:
>>> bin(11)
'0b1011'
>>> int('1011', 2)
11
浮点数
一些浮点数(实数)字面值的示例如下:
3.14 10. .001 1e100 3.14e-10 0e0 3.14_15_93
需要注意的是 Python 中普通除法的结果是浮点数,即便除数和被除数都是整数,哪怕能够整除。要得到整数需要使用地板除:
>>> 2 / 1
2.0
>>> 3 // 2
1
虚数
虚数(复数)由一对浮点数表示,它们的取值范围相同。 创建实部不为零的复数,则需添加浮点数,例如 (3+4j)
。 虚数字面值示例如下:
3.14j 10.j 10j .001j 1e100j 3.14e-10j 3.14_15_93j
布尔值
布尔值在编程中用来表示真假。在 Python 中,真
用 True
表示;假
用 False
表示。只有 Python 中的 True
和 False
的首字母是大写的。示例如下:
print(3 > 2) # True 成立
print(2 > 3) # False 不成立
需要注意的是,Python 中的布尔值是 int
的子类。 在许多数字场景下,False
和 True
的行为分别与整数 0
和 1
类似。 但是,不建议这样使用:
>>> 1 == True
True
>>> 0 == False
True
>>> 0.0 == False
True
>>> int(True)
1
>>> int(False)
0
>>> 1 is True
<python-input-11>:1: SyntaxWarning: "is" with 'int' literal. Did you mean "=="?
1 is True
False
>>> 0 is False
<python-input-12>:1: SyntaxWarning: "is" with 'int' literal. Did you mean "=="?
0 is False
False
None
表示空,布尔运算时为假。判断一个对象是否为 None
应该这么写:
if a is None: # 不要写成 a == None
pass
版权所有
版权归属:Shuo Liu