2022年 11月 5日

python基础—常量

在程序运行的过程中,值不会发生变化的量

从代码的角度而言,直接在代码中出现的数据,统称为字面量;变量通过特殊的手段可以变成常量的形式;

  • 整数常量
  • 浮点数常量
  • 复数常量
  • 布尔值常量
  • 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

只有两个值 TrueFalse,表示对与错,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