Python 变量
最后修改日期:2025 年 2 月 26 日
Python 中的变量用于存储可以在程序中引用和操作的数据。Python 支持各种类型的变量,包括绑定/未绑定、静态、类和实例变量。本教程涵盖了变量使用的不同上下文以及实际示例。
变量是引用存储在内存中的值的名称。它们允许我们在程序中存储和操作数据。Python 变量不需要显式声明,并且可以动态更改类型。变量可以根据其作用域和上下文进行分类,例如局部、全局、类和实例变量。
模块变量
在 Python 中,模块变量是在模块(`.py` 文件)顶层定义的变量。这些变量可以从模块的任何部分访问,也可以导入到其他模块。
关键特征
- 模块内全局:模块变量在其定义的模块内是全局的。模块内的任何函数或类都可以访问它们。
- 模块作用域:它们具有模块作用域,这意味着它们不限于任何特定的函数或类,而是可以在整个模块中访问。
- 可导入:可以使用 `import` 语句将模块变量导入到其他模块。
让我们考虑一个名为 `example_module.py` 的模块
# Module variables
PI = 3.14159
E = 2.71828
# Function that uses module variables
def calculate_circle_area(radius):
return PI * radius * radius
# Class that uses module variables
class MathConstants:
def get_constants(self):
return PI, E
在此示例中,`PI` 和 `E` 是模块变量。`calculate_circle_area` 函数和 `get_constants` 方法使用这些模块变量。
我们可以将这些模块变量导入到另一个模块或脚本中
from example_module import PI, E
print(f'The value of PI is: {PI}')
print(f'The value of E is:{E}')
在这种情况下,`PI` 和 `E` 从 `example_module` 导入,并可以在 `another_module` 中使用。
绑定和未绑定变量
此示例演示了 Python 中的绑定和未绑定变量。
x = 10 # Bound variable (assigned a value)
def my_function():
print(y) # Unbound variable (not assigned a value)
# my_function() # Uncommenting this line will raise a NameError
绑定变量是已分配值的变量,例如 `x`。未绑定变量是未分配值的变量,例如 `my_function` 中的 `y`。访问未绑定变量会引发 `NameError`。
函数作用域变量
此示例演示了 Python 中的函数作用域变量。
def my_function():
if not hasattr(my_function, "counter"):
my_function.counter = 0 # Static variable
my_function.counter += 1
return my_function.counter
print(my_function()) # Output: 1
print(my_function()) # Output: 2
print(my_function()) # Output: 3
函数作用域变量在函数调用之间保留其状态。
类变量
此示例演示了 Python 中的类变量。
class MyClass:
class_var = 10 # Class variable
print(MyClass.class_var) # Output: 10
obj1 = MyClass()
obj2 = MyClass()
print(obj1.class_var) # Output: 10
print(obj2.class_var) # Output: 10
MyClass.class_var = 20 # Modify class variable
print(obj1.class_var) # Output: 20
print(obj2.class_var) # Output: 20
类变量是类所有实例共享的变量。它在类内定义,但在任何方法之外。类变量使用类名或类的实例进行访问。
实例变量
此示例演示了 Python 中的实例变量。
class MyClass:
def __init__(self, value):
self.instance_var = value # Instance variable
obj1 = MyClass(10)
obj2 = MyClass(20)
print(obj1.instance_var) # Output: 10
print(obj2.instance_var) # Output: 20
obj1.instance_var = 30
print(obj1.instance_var) # Output: 30
print(obj2.instance_var) # Output: 20
实例变量是类每个实例唯一的变量。它在 `__init__` 方法或其他实例方法内定义。实例变量使用实例名称进行访问。
全局变量
此示例演示了 Python 中的全局变量。
x = 10 # Global variable
def my_function():
global x # Declare x as global
x = 20
print(f"Inside function: {x}")
my_function()
print(f"Outside function: {x}")
# Output:
# Inside function: 20
# Outside function: 20
全局变量是在任何函数或类外部定义的变量,可以在整个程序中访问。要在函数内修改全局变量,请使用 `global` 关键字。
局部变量
此示例演示了 Python 中的局部变量。
def my_function():
x = 10 # Local variable
print(f"Inside function: {x}")
my_function()
# print(x) # Uncommenting this line will raise a NameError
# Output:
# Inside function: 10
局部变量是在函数或块内定义的变量,并且只能在其作用域内访问。尝试在作用域外访问局部变量会引发 `NameError`。
使用变量的最佳实践
- 使用描述性名称:选择有意义的变量名以提高代码的可读性。
- 限制作用域:在最小的作用域内声明变量,以避免意外的副作用。
- 避免全局变量:尽量减少全局变量的使用,以降低复杂性和潜在的错误。
- 使用常量表示固定值:对常量使用大写名称,以表明其值不应更改。
来源
在本文中,我们探讨了 Python 变量,并通过实际示例演示了它们在不同上下文中的用法。
作者
列出所有 Python 教程。