Skip to content

Python 的基石:变量与赋值

在Python编程中,变量就像一个标签,你可以用它来指向内存中的某个位置,这个位置存储着数据。 理解变量和如何给变量赋值是学习Python的基础。

变量的命名规则

Python对变量的命名有一定的规则,你需要遵循这些规则来创建有效的变量名:

  • 起始字符: 变量名必须以字母(小写 a-z 或大写 A-Z)或下划线 _ 开头。 避免使用数字开头,这会导致语法错误。
  • 后续字符: 变量名可以包含字母、数字(0-9)和下划线。
  • 关键字避让: 不能使用Python的关键字作为变量名。 关键字是Python语言预留的,有特殊含义的单词,例如 ifelseforwhiledefclass 等。
  • 特殊符号禁用: 变量名中不允许使用特殊符号,例如 !, @, #, $, % 等。

一些有效的变量名示例:

  • my_variable
  • _count
  • name
  • age
  • total_sum

一些无效的变量名示例:

  • 1st_name (以数字开头)
  • my-variable (包含 - 符号)
  • if (Python关键字)
  • my variable (包含空格)
  • a!b (包含特殊符号)

赋值:将数据放入变量

赋值语句用于将一个值(或者更准确地说,一个对象的引用)绑定到一个变量名。使用等号 (=) 作为赋值运算符。

python
count = 100       #  将整数 100 赋值给变量 count
pi = 3.141        #  将浮点数 3.141 赋值给变量 pi
name = "Python"   #  将字符串 "Python" 赋值给变量 name
is_valid = True   #  将布尔值 True 赋值给变量 is_valid

在上面的代码中:

  • countpinameis_valid 是变量名。
  • 1003.141"Python"True 是值(更准确地说,是对象)。
  • = 是赋值运算符,它将右边的值(对象)的引用绑定到左边的变量名。

可以将赋值语句理解为: "将等号右边的值赋给等号左边的变量"。

L值和R值:

  • L值(左值): 赋值运算符左侧的表达式。 它必须是一个可以存储值的变量,例如 count
  • R值(右值): 赋值运算符右侧的表达式。 它必须是一个可以求值的表达式,例如 1003.141"Python"

变量的重新赋值

在Python中,变量只是对内存中对象的引用。 你可以将变量重新绑定到相同类型或不同类型的另一个对象。

python
a = 10         # a 现在引用整数 10
a = 3.14       # a 现在引用浮点数 3.14
a = "Hello"    # a 现在引用字符串 "Hello"

这意味着Python是动态类型的。 你不需要在使用变量之前声明它的类型,并且变量的类型可以在程序运行过程中改变。 与其他静态类型语言(例如Java或C++)不同,在静态类型语言中,变量一旦声明了类型,就不能再改变。

删除变量

del 语句用于删除变量,也就是解除变量与对象之间的引用关系。

python
>>> a = 10
>>> del a
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

删除变量后,尝试访问它会导致 NameError,因为该变量不再存在于当前的作用域中。

垃圾回收:

当一个对象不再被任何变量引用时,Python的垃圾回收机制会自动回收该对象所占用的内存空间。 这意味着你通常不需要手动管理内存。

多个变量赋值

Python 允许你在一行代码中给多个变量赋相同的值,这被称为多重赋值。

python
>>> x = y = z = 'foo'
>>> x
'foo'
>>> y
'foo'
>>> z
'foo'

在这个例子中,变量 xyz 都被赋值为字符串 "foo"。 它们都指向内存中同一个字符串对象。

交换变量的值

Python 提供了一种优雅的方式来交换两个变量的值,而无需使用临时变量。 这被称为元组解包。

python
>>> a = 'Hello'
>>> b = 'World'
>>> b, a = a, b
>>> a
'World'
>>> b
'Hello'

这行代码 b, a = a, b 实际上创建了一个元组 (a, b),然后将元组中的值分别赋给变量 ba。 这是一种简洁而高效的交换变量值的方式。