变量从作用域分类
作用范围从小到大为,小作用域的可以调用大作用域的内容。
- 局部 Local
- 闭包 Enclosing
- 全局 Global
- 内建 Build-in
局部变量
局部变量是定义在函数中的,因此其作用域是在函数内部。
def example():
v=1 #局部变量
print(v)
由于局部变量作用域只在函数内部有效,因此程序会报错
Traceback (most recent call last):
File "test.py", line 3, in <module>
print(v)
NameError: name 'v' is not defined
全局变量
和局部变量相对,全局变量是定义在函数外的变量,因此具有更大的作用域。
v=1
def example():
print(v)
example()
运行结果
1
注意事项
python与C有许多不同的地方
(1)例子1
v=1
def example():
v=2
print(v)
example()
print(v)
运行结果
2
1
当想要在函数中对全局变量进行赋值时,如上操作,python会生成新的局部变量,而不是修改全局变量的值,可以通过global标记在局部作用域中声明全局变量。
v=1
def example():
global v
v=2
print(v)
example()
print(v)
运行结果
2
2
(1)例子2
def example():
print(v)
v=1
example()
运行结果