Python 变量

变量 Variable 是用以引用/访问内存中的数据。

有时也称为标识符 Identifier,一般可以通过赋值符号改变其引用的内容

字面量

与标识符相对应的是 字面量 Literal,是指实际或本身的含义,而非引用指代

其直接表示其本身,因此无法给字面量赋值绑定其他数据。

创建变量

variable_name = value

  • 其中 =赋值运算符
  • 表达式的顺序非常重要,即变量名 =。赋值运算符 = 的作用是将右侧的值赋给左侧的变量名
注意
  • 在赋值时若右侧是表达式,那么左侧变量被赋予的是右侧表达式的,而不是表达式本身
  • 如果要使用变量名,首先必须为其赋值

多重赋值

可以在一行代码中同时为两个变量赋值

python
# Using multiple assignment
savings, salary = 514.86, 320.51 # 使用逗号分隔

第一个变量被赋值为 = 之后的第一个值,第二个变量则接收第二个值。

对于两个紧密相关的变量,如某物体的 x 轴和 y 轴坐标,可以使用多重赋值。

增量赋值

所有算术运算符都有对应的增量赋值运算符

python
# 等价于 x = x + 1
x += 1

# 等价于 toobig = toobig / 2
toobig /= 2

变量命名规范

  • Python 的保留字不可作变量名
    markdown
    False      await      else       import     pass
    None       break      except     in         raise
    True       class      finally    is         return
    and        continue   for        lambda     try
    as         def        from       nonlocal   while
    assert     del        global     not        with
    async      elif       if         or         yield
    
    说明

    完整的保留字见此表

  • 变量名中只能使用普通字母(小写)数字下划线(且以数字不可作为变量开头)
  • 命名变量的方式称为 snake case,例如 apple_pie
  • 不建议使用内置的标识符作为变量名,虽然不会立即导致错误,例如不建议为 int(以它作为变量)赋值

访问变量

访问变量仅需使用变量名

如果需要将变量的值显示在终端可使用内置函数 print()

如果没有 print,Python 中发生的事情只会停留在 Python 内部

注意

print 是 Python 的一个内置函数。

在 Python 2 中打印时不需要使用括号,但是在 Python 3 中需要,所以请勿忘记括号

Python 中的函数调用始终带有一对括号,如果有参数,那么参数放在括号内。所以 print 函数的语法需要一对括号,并将参数放在括号内。

更新变量

通过为同一个变量名重新赋值可以更新变量所存储/指向的数据,在重新赋值时可以使用含有该变量名(在赋值号右侧该变量指向原始数据)的计算公式来更新数值

python
>>> manila_pop = 1780148
>>> print(manila_pop)
1780148
>>> manila_pop = manila_pop + 1675 - 250
>>> print(manila_pop)
1781573

表达式赋值
表达式赋值

  • 位于等号左侧的变量 manila_pop,被赋值为整个右侧表达式 manila_pop + 1675 - 250 的计算所得的结果值
  • 赋值顺序是将右侧的赋给左侧的变量,所以在运行右侧的表达式时 manila_pop 值仍为 1780148
  • 赋值号右侧 manila_pop 的当前值仍然为 1780148

简化表达式(其他赋值运算符)

赋值符号左右两边都涉及相同的变量时,表达式可能可使用简化表达式

python
# increase the value of manila_pop by 1675
# equal to manila_pop = manila_pop + 1675
>>> manila_pop += 1675

# decrease the value of manila_pop by 250
# equal to manila_pop = manila_pop - 250
>>> manila_pop -= 250

# decimate manila_pop
# equal to manila_pop = manila_pop * 0.9
>>> manila_pop *= 0.9

# half the area of Manila
# equal to manila_pop = manila_pop / 2
>>> manila_area /=  2

变量作用域

变量作用域 scope 是指程序在哪个部分可引用或使用某个变量

函数使用时需要特别留意变量的作用域

  • 如果变量是在函数创建的,则该变量只能在函数内部使用(修改或引用)(无法从函数外部使用)
  • 如果是在函数之创建,依然可以在函数内部访问(但不能更改或重新赋值以修改在函数外部创建的变量)
提示

将变量定义在所需的最小作用域内。虽然函数可以引用在更大的作用域内定义的变量,但是通常不建议这么做,因为程序有很多变量,可能不记得之前定义了什么全局变量而引起冲突。

python
egg_count = 0

def buy_eggs():
    egg_count += 12 # purchase a dozen eggs

buy_eggs()

🔨 编译结果

shell
Traceback (most recent call last):
  File "C:/Users/10267/Desktop/test.py", line 6, in <module>
    buy_eggs()
  File "C:/Users/10267/Desktop/test.py", line 4, in buy_eggs
    egg_count += 12
UnboundLocalError: local variable 'egg_count' referenced before assignment

导致 UnboundLocalError 因为 Python 不允许函数修改不在函数作用域内的变量(但可以引用)

  • 此处先在函数外定义了变量 egg_count 的值
  • 在函数内部变量 egg_count 虽然与函数外的变量有相同的名称,但是可以理解为是不同的变量(可以理解为函数内的变量是形参),此处直接没有定义内部的变量就对变量进行加法操作,所以会引起 UnboundLocalError 错误
注意

上面的原则仅适用于整数和字符串

列表、字典、集合、类中可以在子程序(子函数)中通过修改局部变量达到修改全局变量的目的。


Copyright © 2025 Ben

Theme BlogiNote

Icons from Icônes