函数作用域

#作用域
if True:
x = 3 #if没有作用域
print(x)

def f():
a = 3 #a这个变量属于函数 出了这个函数就没用了
f()
print(a)

 

#嵌套作用域 1
x =1
def s():
global x #global 关键字可以修改全局变量
x = x + 3 #局部要修改全局变量需要添加global
def sf():
# nonlocal x #nonlocal 关键字可以修改嵌套作用域
x = 5
def sd():
nonlocal x #nonlocal 关键字可以修改嵌套作用域
x = x + 7
print("3:",x)
sd()
print("2:",x)
sf()
print("1:",x)
s()

打印

3: 12
2: 12 
1: 4

#嵌套作用域 2
def s():
x = 3
def sf():
nonlocal x #nonlocal 关键字可以修改嵌套作用域
x = 5
def sd():
nonlocal x #nonlocal 关键字可以修改嵌套作用域
x = x + 7
print("3:",x)
sd()
print("2:",x)
sf()
print("1:",x)
s()


打印

3: 12
2: 12
1: 12

#嵌套作用域 3
def s():
x = 3
def sf():
# nonlocal x #nonlocal 关键字可以修改嵌套作用域
x = 5
def sd():
nonlocal x #nonlocal 关键字可以修改嵌套作用域
x = x + 7
print("3:",x)
sd()
print("2:",x)
sf()
print("1:",x)
s()


打印

3: 12
2: 12
1: 3


原文地址:https://www.cnblogs.com/TKOPython/p/11666640.html