Day_09_AM_Function_Scope
#
if True:
x = 10
print(x) # 10
# For
for i in range(1):
y = 20
print(y)
# IF, FOR, While都不包含作用域
# 作用域: 变量七作用的范围(区域)
# 局部作用域
# 全局作用域
# 局部变量: 函数内部的变量
# 特点:1.内存会被自动释放(调用后会自动回收内存,退出函数就不可以使用了)
# 2.不会被污染
# 全局变量: 整个文件都可以使用的变量
# 特点: 1.内存不会释放(消耗内存,但是可以一直使用), 2.容易被污染(可能被其他地方修改)
b = 10 # 全局变量
# 函数: 有作用域
def fn():
a = 10 # 局部变量
print('a=', a)
print('b=', b) # 可以
fn()
# 在函数内部定义的变量, 在函数外不可以使用
# print('a=', a) # 报错
# 内建作用域: B(Built-in)
# Python中提供的内置函数,内置变量,内置类等
c = 1 # 全局作用域: G(Global)
def f1():
d = 2 # 函数作用域: E(Enclosing)
def f2():
e = 3 # 局部作用域:L(Local)
# global关键字
k = 10
def f3():
# 声明使用的是全局变量k, 一般用于修改全局变量
global k
k = k + 20
print('k=', k)
f3()
print(k)
# nonlocal关键字
p = 1
def f4():
p = 2
def f5():
# global p # 使用全局变量p=1
nonlocal p # 使用局部变量p=2
p += 3
print('p=', p) # nonlocal p = 5, global p = 4
f5()
f4()
print(p)