【基础】变量与常量
变量:在程序运行过程中,值会发生变化的量
常量:在程序运行过程中,值不会发生变化的量
无论是变量还是常量,在创建时都会在内存中开辟一块空间,用于保存它的值。
1. 创建变量不需要事先声明类型
在Python中,变量和常量不需要事先声明类型。
例如下面的 age 和 name 两个变量,在使用前没有进行任何的诸如 int age 和 string name 的类型声明,而这在一些静态语言如 Java 和 C++ 中是不能缺少的。
>>> age = 24
>>> name = "Will Wang"
2. 变量的赋值、比较
在 Python 中,用 = 号来给变量赋值,比如下面这个表达式,age 这个变量的值就是 24
>>> age = 24
与之相似的两个等号 == ,它表示的是比较两个值是否相等,如果相等返回 True,如果不相等则返回 False
>>> age = 24
>>> age == 24
True
>>> age == 25
False
3. 先创建变量再使用变量
每个变量在使用前都必须赋值,变量赋值以后才会被创建。
新的变量通过赋值的动作,创建并开辟内存空间,保存值。
如果没有赋值而直接使用,会抛出变量未定义的异常。例如:
>>> age
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'age' is not defined
>>>
>>> age = 24
>>> age
24
4. 变量赋值的四种方式
赋值的4种方式
第1种:单个直接赋值
>>> age = 24
>>> age
24
第2种:多个批量赋值
>>> a = b = c = 1
>>> a
1
>>> b
1
>>> c
1
第3种:先计算再赋值
# 先计算 23 + 1,再把结果赋值给age
>>> age = 23 + 1
>>> age
24
第4种:分别赋值(注意逗号,与第2种赋值方式区分开来)
>>> a, b, c = 1, 2, 3
>>> a
1
>>> b
2
>>> c
3
5. 理解变量赋值的背后
理解变量在计算机内存中的表示:
当我们写:a = "TYUT" 时,Python解释器干了两件事情:
在内存中创建了一个
'TYUT'的字符串对象;在内存中创建了一个名为 a 的变量,并把它指向
'TYUT'。
而当你把一个变量 a 赋值给另一个变量 b,这个操作实际上是将变量 b 指向变量 a 所指向的数据,例如:
>>> a = "TYUT"
>>> a
'TYUT'
>>> b = a
>>> b
'TYUT'
>>> id(a)
2527101022576
>>> id(b)
2527101022576
通过 id() 可以查看变量值的内存地址,打印出来的 a 和 b的内存地址是一样的,因此二者其实是一个数据。
但如果继续对 a 进行赋值其他值, 会发现 a 的内存地址变了,而 b 的并没有变
>>> a = "THU"
>>> a
'THU'
>>> id(a)
2527101024368
>>> id(b)
2527101022576
注意:Python中的一切都是对象,变量是对象的引用!
执行
a = "TYUT",解释器创建TYUT字符串对象和变量 a,并把 a 指向TYUT字符串对象;执行
b = a,解释器创建变量b,并且将其指向变量a指向的TYUT字符串对象;执行
a = "THU",解释器创建THU字符串对象,并把 a 改为指向THU字符串对象,与b无关。
6. 什么是常量?
常量就是不变的变量,比如常用的数学常数圆周率就是一个常量。
在Python中,通常用全部大写的变量名表示常量:
>>> PI = 3.14159265359
>>> PI
3.14159265359
事实上,从Python语法角度看,PI仍然是一个变量,因为Python根本没有任何机制保证PI不会被改变。
你完全可以给PI赋值为1或者2等等,也不会弹出任何错误。
所以,用全部大写的变量名表示常量,只是一个习惯上的用法,用以区分与变量的不同。
常量通常放置在代码的最上部,并作为全局使用。