Python之函数-局部变量和global
global语句
- 使用global关键字的变量,将foo内的x声明为使用外部的全局作用域中定义的x
- 全局作用域中必须有x的定义
global使用原则
- 外部作用域变量会在内部作用域可见,但也不要在这个内部的局部作用域中直接使用,因为函数的 目的就是为了封装,尽量与外界隔离
- 如果函数需要使用外部全局变量,请尽量使用函数的形参定义,并在调用传实参解决
- 一句话:不用global。学习它就是为了深入理解变量作用域
作用域:标识符的可见范围
- 函数开辟了一个作用域,x被限制在当前函数作用域中,对外不可见
- 全局的,函数外的变量,对内穿透
- 本地使用标识符,优先使用当前作用域
- 优先使用本地定义的局部变量,优先原则
- 全局变量,如果所有函数都是用全局变量,局部作用域就没有用了。全局变量污染
- 全局变量一般来说都是公用的,一般情况不要修改
- 全局变量也是有作用域的,只不过是全局的,所以全局可见
- 不要用global
- 函数形参,调用时送入实参
z = 100
def fn1():
print(z)
fn1()
del(z)
z
z = 100
def fn2():
print(z)
t = z + 1
print(t)
fn2()
del(z)
z = 100
def fn3():
print(z)
m = z + 1
print(m)
z = z + 1
print(z)
fn3()
del(z)
z = 123
def fn4():
print(z)
z += 1
print(z)
fn4()
z = 111
def fn6():
z = 3000
print(z)
y = z + 1
print(y)
fn6()
z = 3333
def fn7():
global z
print(z)
z += 1
print(z)
z
fn7()
z = 3333
def fn7():
global z
print(z)
z += 1
print(z)
def fn8():
global z
z += 100
print(z)
fn7()
fn8()
z = 4444
def fn10(x):
x += 1
print(x)
fn10(z)
z