学习-Python函数之变量的作用域
时间: 2024-10-15 17:19:41 浏览: 34
测量程序编制 - python 91函数-作用域(局部变量).pptx
在Python中,函数内的变量作用域有三种:局部作用域、全局作用域和非local作用域。
1. **局部作用域**:在函数内部定义的变量只在该函数内部可见。当你在函数内部声明一个变量时,它默认具有这种作用域。一旦函数执行完毕,这些变量就会被自动销毁。
```python
def local_scope():
x = 5
print(x) # 只能在 local_scope 函数内访问
local_scope()
# 如果尝试在外面访问 x,会报错,因为 x 是局部变量
```
2. **全局作用域**:在函数外部定义的变量,被称为全局变量,可以在整个程序的任何地方访问。但是如果你想在函数内部使用全局变量,需要通过`global`关键字显式声明。
```python
x = 10
def global_scope():
global x
x = 15
print(x)
global_scope() # 输出 15,修改了全局变量值
print(x) # 输出 15
```
3. **非local作用域**:这是Python 3.7及以上版本引入的新特性,仅适用于类的`__init_subclass__`方法中。在这种上下文中,`nonlocal`关键字用于引用类的超类(即父类)的变量。
```python
class Parent:
parent_var = 0
class Child(Parent):
def __init_subclass__(cls):
nonlocal parent_var
parent_var += 1
print(f"parent_var in {cls.__name__}: {parent_var}")
Child() # 输出 "parent_var in Child: 1"
```
阅读全文