Python课程第九天_上午_课程笔记(函数的作用域)

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)

猜你喜欢

转载自blog.csdn.net/weixin_44298535/article/details/107700748