一文理解Python中的变量 python中什么是变量

我们在之前的文章《RealPython 基础教程:Python基本数据类型介绍 》中了解了如何创建各种基本类型的数据,但是我们的例子中使用的都是“字面量”或者“常量” 。
>>> print(5.3)5.3
这显然不适于复杂的实用程序中,我们需要定义能够在程序执行过程中可以变化的数据 。


通过本文,你将了解到:
1,Python 中的所有数据元素都可通过抽象的对象(object)来描述
2,你将学会如何通过符号名称(变量)来操作这些对象 。


【变量的赋值】
我们可将变量视作附着在一个特定对象上的名称 。
在 Python 中,变量不必提前声明或定义 。这和其他一些编程语言不同,在那些编程语言里,变量必须先声明才可以使用 。


创建变量很简单,只需要为这个名称赋一个值就行了,然后你就可以使用它了 。
Python 使用等号(=)为变量赋值:
>>> n=300
这个赋值语句的意思是:n 被赋值为 300.
赋值完成后,n 就可以被用作语句或者表达式中了 。其值也会被更新 。
>>> print(n)300
我们也可以不使用 print() 函数,直接在 Python 解释器命令提示符窗口中输入 n 来打印其值 。
>>> n300
可以给 n 重新赋值 。
>>> n=1000>>> n1000


Python 允许链式赋值,这让我们可以同时为多个变量赋相同的值 。
>>> a = b = c = 300>>> a300>>> b300>>> c300


【Python 变量的类型】
数据类型是对数据上可执行操作的约定 。
在很多编程语言中,变量是静态类型 。其含义是,变量在初始化时需要声明为一个特定的类型,在后续的使用中也只能将相同类型的值赋给这个变量 。静态类型的变量,意味着在其上只能执行类型专有的操作 。


而 Python 中的变量不受此限制 。变量可以被赋予一个类型的值,之后再被赋予另一个类型的值 。
>>> var = 23.5>>> var23.5>>> type(var)>>>>>> var = "now i'm a string">>> var"now i'm a string">>> type(var)
在实际应用中,动态改变变量的类型可能并非一个好的行为,这会引起理解和运行上的混乱 。


【对象引用】
当我们创建一个变量时,Python 解释器到底执行了什么操作?
了解这个问题的答案很重要,因为这和你在其他语言中理解的原来稍微有点不一样 。


Python 是一个高度面向对象的语言 。Python 程序中的每个数据元素都是一个特定类(class)的实例对象(object) 。


考虑下边这段简单的代码:
>>> print(300)300
当执行 print(300) 这条语句时,Python 解释器会做以下 3 个工作:

  • 创建一个整数对象
  • 为这个整数对象赋值 300
  • 将这个整数对象输出到控制台
使用 type() 函数就能看出为这个常量 300 创建了一个整数对象:
>>> type(300)


Python 变量其实只是一个名称而已,它是指向某个对象的引用或者指针,是“贴在这个对象上的一个标签” 。
一旦变量被赋值,你就可以通过变量名来引用它指向的对象,变量拥有的数据实际上是被保存在这个对象中 。


仍以这个简单代码为例:
>>> n=300
这个赋值语句创建了一个值为 300 的整数对象,并将变量 n 指向这个对象 。
一文理解Python中的变量 python中什么是变量

文章插图
你可以这样理解:喏,整数为 300 的对象,给你贴个标签,你现在叫 n 了 。
以下代码就可看出 n 指向了一个值为 300 的 int 类型的对象:
>>> print(n)300>>> type(n)


再看下边这条语句:
>>> m = n
那么,执行这条语句时又发生了什么?
Python 并没有为 m 创建一个新的对象,而只是建立了一个新的名字 m,并将这个名字指向了 n 指向的对象 。
现在,值为 300 的整数对象身上贴了两个标签:n 和 m 。


我们接着执行以下操作:
>>> m=400
这时,Python 才又创建了一个新的值为 400 的整数对象,并将名字 m 指向这个对象 。
一文理解Python中的变量 python中什么是变量