python中的变量赋值机制

python是一种动态类型的编程语言,这意味着变量不需要提前声明变量的类型,类型会在程序运行时根据赋值自动确定。变量赋值机制是python编程中的基础概念之一。

变量和对象

在python中,变量实际上是对内存中对象的引用。当创建一个变量并给它赋值时,实际上是在创建一个指向内存中对象的引用。例如:

x = 5
a = b 
print(x,a)

赋值操作

python中的变量赋值操作,实际上是一个对象引用的操作。用等号表示。它将右侧表达式的值(也是一个对象的引用)赋给左侧的变量。例如:

x = y = 1

这里的x和y都指向同一个整数对象。

可变与不可以变对象

python中的对象为可变对象和不可变对象。不可变对象,如整数、浮点数、字符串、元组,一旦创建就不能改变。可变对象,如列表、字典、集合,可以在创建后修改其内容。

不可变对象

当对一个不可变对象进行操作时,实际上是创建了一个新的对象,并让变量指向这个新对象。

a = 5
# print(id(a))
b = a + 1
a = a + 1
# print(id(a))

可变对象

当修改一个可变对象时,是在修改对象本身,而不是创建一个新的对象。

a = [1,2,3,4,5]
# print(id(a))
a.append(0)
# print(id(a))

在列表中a的末尾添加了一个元素,而a本身被修改了。

print(id(a))

一定要记住a=a+1中的a,虽然同名,但是每次执行的a都是不一样的。

变量作用域

python中的变量根据其定义的位置,有不同的作用域。

局部变量

在函数内部定义的变量,只能在函数内部访问。

全局变量

在模块级别定义的变量,在整个模块中访问。

内置变量

python解释器提供的内置变量和函数,如len()、range()等。

变量的查找顺序

当访问一个变量时,python会按照以下顺序查找: 1. 局部作用域:检查是否是局部变量。 2. 嵌套作用域:如果有嵌套函数,检查外层函数的局部变量。 3. 全局作用域:检查全局变量。 4. 内置作用域:检查内置变量。 如果在这些作用域中都没有找到变量,python会抛出NameError异常。

垃圾回收

python使用引导计数和垃圾回收机制来管理内存。当一个对象的引用计数降到0时,意味着没有任何变量引用该对象,python的垃圾回收器会回收这块内存。

变量赋值的高阶特性

python支持一些高级特性。

解包赋值

可以从元组中或列表中解包值到多个变量。

a,b = [1,2]
print(a,b)

链式赋值

将多个变量连接起来,指向同一个对象

x = y = z = 1
print(x,y,z)

多重赋值

使多个变量分别指向不同对象。著名的面试题目:令a=b,b=a就可以用这个最简单的命令完成。

x, y, z = 1, 2, 3
a, b = b, a
print(z)
print(a, b)

这些特性使得python的变量赋值及灵活又强大。理解这些基础概念对于编写高效、可读的python代码至关重要。

视频讲解

BiliBili: 视睿网络-哔哩哔哩视频 (bilibili.com)