贡献者: addis; 叶燊Leafshen
Python 中的变量(variable) 和数学中的不同,Python 的变量可以理解为一个储存数值的容器,我们可以用等号把一个数值储存在一个变量中。例如要计算一个长方体的体积,我们既可以直接把三个数字相乘,也可以先把这三个数字赋值给三个变量然后相乘
a = 1
b = 2
c = 3
volumn = a*b*c
要强调的是,这里的等号并不是数学上的等于,而是赋值,即把等号右边得到的数值储存在左边的变量中。在第 4 行执行时,计算机会先计算等号右边表达式的结果 6,然后将 6 储存在变量 volumn
中。volumn
这个变量中并不会包含 a*b*c
这个信息,只储存 6 这个数值。所以改变 a, b, c
后 volumn
的值并不会自动改变。
如果要让长方形的某个边长增加 1,我们可以执行
a = a + 1
如果将等号理解为数学上的等于,这个式子显然是错的。但正确的理解是,先把 a
当前的值 1 加上 1 得到 2,然后把 2 赋值给 a
。由于我们没有给 volumn
重新赋值,它仍然是 6,要更新 volumn
,只需要重新执行
volumn = a*b*c
并用 print(volumn)
显示新的值。
等效地,我们也可以用自加运算 +=
,将 a = a + 1
记为
a += 1
注意 +=
是一个整体的算符,中间不能有空格。类似的运算还有 -=
,*=
,/=
等。
bool
(布尔型),int
(整型)(长度不限),float
(浮点型)(双精度浮点),complex
(复数,如 2+3j
),str
(字符串)。注意 python 本身没有定义单精度浮点数,但在 numpy
库中有 float32
类型。我们可以用 type()
函数查看某个变量的类型。例如执行
n = 123; x = 3.14; print(type(n)); print(type(x))
结果为
<class 'int'>
<class 'float'>;
判断变量是否为某个类型
type(i) == int # true
用 is
判断两个变量是否是同一个对象,例如 a = [1,2,3]; b = [1,2,3];
,那么 a == b
返回 True
而 a is b
返回 False
。此时改变 a
的元素,b
不会改变。但若令 b = a;
,那么 a, b
会同时改变,此时 a is b
和 a == b
都返回 True
。
与一些编译语言不同,Python 的整数类型(integer)没有长度限制(除超出了内存大小)。例如
print(12345678901234567890123456789 + 1)
的结果为 12345678901234567890123456790
。
默认情况下整数用十进制表示,如果需要输入 2 进制(binary),可以在前面加 0b
或 0B
,例如 0b1001
表示 10 进制的 9
。类似地,0o
或 0O
开头表示 8 进制(octal);0x
或 0X
开头的表示 16 进制(hexadecimal),16 进制中的 10 到 15 分别用大写或小写字母 a
到 f
表示。例如 0xff
表示十进制的 255
。不同进制的整数同样 int
,同样没有长度限制。
转换格式为 类型(变量)
。例如 int('123')
会把字符串 '123'
变为整数 123
。
"'我们在这里完整列举一下'"
a = "小时百科" # str 字符串
b = 23 # int 整型
c = 5.2 # float 浮点型
d = True # bool 布尔型
int(c) # 返回整型 5 (向零取整)
str(b) # 返回字符串 "23"
float(d) # 返回 1.0
bool(a) # 返回 True (只有空字符串返回 False)
bool(b) # 返回 True (只有 0 返回 False)
bool(c) # 返回 True (只有 0.0 返回 False)
raw string:r'foo\nbar'
其中 \n
会被当成两个字符。
和 C 语言类似的语言不同,Python 中的变量和对象(object)是分开考虑的。对象可以理解为内存上的一小段某类型的数据,而变量是指向对象的一个名称。例如两个变量可以指向同一个对象,要判断变量 a
和 b
是否指向同一个对象,用 a is b
,返回一个 bool
。
dir()
列出 in scope 变量,返回类型 list
globals()
列出全局变量,返回类型 dict
locals()
列出本地变量,返回类型 dict