变量
程序就是用来处理数据的,而变量就是用来存储数据的
变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中,变量不仅可以是数字,还可以是任何数据类型。
Python中,变量要先定义后使用,变量的定义通过赋值语句完成,格式如下:
变量名 = 初始值
赋值以后该变量才会在内存中创建。
变量命名规则
- 变量名使用合法的标识符,严格区分大小写,
Andy
andy
-
unix命名法: 每个单词都使用小写字母,单词之间使用下划线
_
连接,例如:file_name
、qq_number
- 驼峰命名法: 首字母小写,后续每个单词的首字母大写,例如:fileName、qqNumber
- 命名规则是一种惯例,为了增加代码的可读性,不具强制性
a = 1 # 变量 a 初始化为 1,是一个整数。
t_007 = 'T007' # 变量 t_007 赋值为 'T007', 是一个字符串。
Answer = True # 变量 Answer 赋值为 True,是一个bool值。
Python中,同一个变量可以反复赋值,并且可以是不同的数据类型
a = 123 # a是整数
a = 'ABC' # a变为字符串
这种变量类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定数据类型,如果赋值时的数据类型不匹配就会报错,Java就是一种静态语言。
不要把赋值语句的等号,等同于数学的等号。从数学上理解
x = x + 2
无论如何都不成立。
而在计算机程序中,赋值语句会先计算右侧的表达式x + 2
,得到结果12
,再赋给变量x
。由于x
之前的值是10
,重新赋值后,x
的值变成12
。
变量在内存中的表示
当我们执行 a = 'ABC'
时,Python解释器干了两件事情:
- 在内存中创建了一个
'ABC'
的字符串。 - 在内存中创建了一个名为
a
的变量,并把它指向'ABC'
。
思考如下代码,变量b
的内容是'ABC'
,还是'XYZ'
?
a = 'ABC'
b = a
a = 'XYZ'
print(b)
如果从数学意义上理解,就会错误地得出b
和a
相同,也应该是'XYZ'
,但实际上b
的值是'ABC'
,让我们一行一行地执行代码,就可以看到到底发生了什么事:
- 执行
a = 'ABC'
,解释器创建了字符串'ABC'
和变量a
,并把a
指向'ABC'
:
- 执行
b = a
,解释器创建了变量b
,并把b
指向a
指向的字符串'ABC'
:
- 执行
a = 'XYZ'
,解释器创建了字符串'XYZ',并把a
的指向改为'XYZ'
,但b
并没有更改:
所以,最后打印变量b
的结果自然是'ABC'
了。
常量
所谓常量就是不能变的变量,比如常用的数学常数 就是一个常量。在Python中,通常用全部大写的变量名表示常量:
PI = 3.14159265359
注意:
事实上PI
仍然是一个变量,Python根本没有任何机制保证PI
不会被改变,所以,用全部大写的变量名表示常量只是一个习惯上的用法,如果你一定要改变变量PI
的值,也没人能拦住你。
- end -