在程序运行的过程中,值不会发生变化的量
从代码的角度而言,直接在代码中出现的数据,统称为字面量;变量通过特殊的手段可以变成常量的形式;
- 整数常量
- 浮点数常量
- 复数常量
- 布尔值常量
- None常量
- 字符串常量
整数常量int
通常称之为整型,是零、正或负,不带小数点的数字
一般在程序中所表现的整数默认都是十进制,也有二进制,八进制,十六进制的表现形式
>>> print(0)
0
>>> print(-3)
-3
>>> print(0b1001)
9
>>> print(0o123)
83
>>> print(0x9c1b)
39963
>>> print(0x9C1B)
39963
>>> 3 + 9 * 2
21
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
注意:print打印出来的默认十进制数字
PS:在Python当中,其实任何数据都是对象的形式!一切皆对象!
Python的整数长度为32位-4字节,并且通常是连续分配内存空间的
>>> id(-2)
140720047104304
>>> id(-1)
140720047104336
>>> id(0)
140720047104368
>>> id(300)
1650089542576
>>> id(301)
1650089542576
>>> id(302)
1650089542576
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
小整数对象池:Python在初始化环境的时候,在内存自动划分一块空间,专门用于整数对象的存取,当然这个空间肯定不是无限的,所以能保存的整数是有限的,总共只能存储262个数字 -5 ~ 256
,这些数据是我们开发人员常用到的整数数字范围,所Python就会预先将其对应的数字对象创建出来,以便后续调用
好处就是不再用一个而创建一个了(耗时间),在Python运行期间,所创建的这个262个数字是一直存在的,直到程序消亡为止
>>> id(257) # 257第一次出现 且不在上述范围内 则内存开辟新空间存储该数据对象 假设存储空间是A
1972534526896 # 存储空间A的地址 之后 再也没人知道257的所在,所以257就会被Python自动清除
>>> id(258) # 258第一次出现 且不在上述范围内 则内存开辟新空间存储该数据对象 但是由于上述257被清除 258重新利 用空间A
1972534526896 # 存储空间A的地址 之后 再也没人直到258的所在,所以258就会被Python自动清除
>>> num1 = 300 # 300第一次出现 且不在上述范围内 则内存开辟新空间存储该数据对象 但是由于上述258被清除 A复用
>>> id(num1)
1972534526896 # 存储空间A num1目前还知道300在哪里的
>>> num2 = 301 # 301第一次出现 且不在上述范围内 则内存开辟新空间存储该数据对象上 一个新开辟的A还在被占用 只能新 建B空间
>>> id(num2)
1972534526608 # 存储空间B的地址 num2变量也是直到num2所在的 301的空间不会被清空
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
浮点数常量float
也就是小数,如果小数过大或者过小,可以使用科学计数法来表示
>>> 0.000000000000000023
2.3e-17
>>> 1.3e10
13000000000.0
- 1
- 2
- 3
- 4
复数常量complex
复数就是由实部和虚部组成的数字,一般标识为 a + bj,Python表示为complex(a,b)
>>> (1 + 2j) * (1 - 2j)
(5+0j)
>>> complex(1,2)*complex(1,-2)
(5+0j)
- 1
- 2
- 3
- 4
布尔常量bool
只有两个值 True
,False
,表示对与错,1与0,正与反,都是传统意义上的布尔类型
一般都是在布尔类型运算(比较类,逻辑)时出现,最好不要出现在算数相关中
>>> 3 > 2
True
>>> 3 < 2
False
>>> 4 > 2 and 3 < 2
False
>>> True and False
False
# 布尔类型 参与算数的话 True就当1处理 False就当0处理 实际上没什么计算意义
>>> True + 1
2
>>> False + 1
1
>>> True * 10
10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
None空值常量 NoneType
空值是Python一个特殊的值,不表示0,不能理解为0
0本身是一个数字 这个数字是存在的 只不过从数值上而言是没有
None是啥都没有!类似于空集∅的概念,真空!
>>> None + 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
>>> None > 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '>' not supported between instances of 'NoneType' and 'int'
# 额外的 对于None而言 常常用做 创建有长度但没内容的空列表
# 在对象使用中比较作 用于判空处理
>>> [None] * 10
[None, None, None, None, None, None, None, None, None, None]
# 创建一个长度为10但是没有内容的列表(有一辆公交车上面有10个座位,但是没乘客)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
字符串常量str
就是一段文本信息,一般用双引号包含起来,或者用单引号包含起来的数据
>>> print("Hello World!")
Hello World!
>>> print('Hello World!')
Hello World!
- 1
- 2
- 3
- 4
在Python中,不存在单字符数据的(其他的编程语言中 会存在char这么一个概念 char表示的是一个字符 'a'
,所谓的字符串无非就是多个字符数据组合在一起的整体)
就算是一个字符串中只包含一个字符 在Python中也叫字符串!
>>> print('a')
a
>>> print("a")
a
- 1
- 2
- 3
- 4
等同级别的双引号或单引号最好不要同时出现
>>> print("\"\"")
""
>>> print('\'\'')
''
>>> print("\")
File "<stdin>", line 1
print("\")
^
SyntaxError: EOL while scanning string literal
>>> print("\\")
\
>>> print("\\")
\
>>> print("\'")
'
>>> print("\"")
"
>>> print("\n")
>>> print("abc\tabc")
abc abc
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23