python十五:函数作用域-函数即变量

# 函数作用域
def liubei():
    name = "刘备"
    print(name)

    def guanyu():
        name = "关羽"

        def zhangfei():
            nonlocal name  # nonlocal 指定上一级变量
            name = "张飞"
            print(name)
            return "zf"

        zhangfei()
        print(name)
        return zhangfei

    guanyu()
    print(name)
    return guanyu # 返回一个函数名字,即将函数名也是一个变量

# 直接调用zhangfei(),会报错,找不到这个函数的定义(NameError: name 'zhangfei' is not defined)
# 函数名也是一个变量,一个变量就有作用域,只有同级的作用域,才可以通过名字直接调用函数
# zhangfei()

# liubei是一个同级的函数,可以直接调用
gy = liubei()
zf = gy()
v = zf()  # 通过将zhangfei函数名返回出来,然后加上(),就可以调用zhangfei函数
print(v)


猜你喜欢

转载自blog.csdn.net/m0_37564426/article/details/81052081