变量的概念和在数学中的变量的概念一样的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。
在 python 中变量的声明与其他语言有显著的差别。
在 python 中,使用变量一定要先给变量赋值,不需要专门去声明。如果是第一次赋值则会在内存中创建一个对象,如果不是第一次则会使用已经创建过的。
a = 10 # 第一次使用 a,所以会自动创建变量a,并把它的赋值为10
print(a) # 10
a = 20 # 第二次使用 a, 所以不会再创建变量 a,而是使用前面创建的变量 a,然后赋值为20
print(a) # 20
如果是其他语言比如 java 中,则需要先声明变量,然后赋值。
int a = 10; //Java 中的声明变量和赋值
所以,python 中各种代码相比其他语言就是精简和优雅 爽
python 的同一个变量,可以先存储数字,然后也可以再更改为其他类型。这是弱类型语言的典型特征。
a = 10 # 赋值为数字
print(a)
a = 'abc你好' #赋值为字符串
print(a)
变量的命名
- 变量名必须是数字、字母(ascii 和 uncode 字符都可以,但是尽量避免使用中文)、下划线_组成
- 不能数字开头
- 如果有多个单词组成,建议每个字母都用小写字母,且不同的单词用下划线连接
合法:abc
、a1
、_hello
、my_girl
不合法:1a
、$a
变量的内存模型
虽然 python
的变量使用起来非常简单,但是理解变量的内存模型也是非常重要的。
看下面的代码:
a = "abc"
print(a)
b = a
b = "xyz"
print(a) # abc
print(b) # xyz
第1行代码做了3件事情:
- 在内存中创建了一个字符串
"abc"
- 在内容创建了一个变量,变量名为
a
字符串
"abc"
在内存中的地址赋值给变量a
。即可以理解为变量a
指向了字符串"abc"
- 在内存中创建了一个字符串
第3行代码做了2件事情:
- 创建一个变量,变量名是
b
把 变量
a
的值赋给变量b
。因为a
中是存储的字符串"abc"
的内存地址,则变量b
存储的也是字符串"abc"
的内存地址。即变量b
也指向了字符串"abc"
- 创建一个变量,变量名是
第5行代码做了2件事情:
- 在内存中创建了一个字符串
"xyz"
- 字符串
"xyz"
在内存中的地址赋值给变量b
。则b
中的值被更换为字符串"xyz"
的内存地址,b
与 字符串"abc"
则再无关系。
- 在内存中创建了一个字符串