Python 引用变量的顺序

  • python引用变量的顺序:当前作用域局部变量———>外层作用域变量————>当前模块中的全局变量————>python 的内置变量。
  • global 和nonlocal 的区别
  • global 在函数其他作用域中修改全局变量需求声明,不修改不用声明
    不修改全局变量:
    gcount =0
    print("外部的内存地址%d" %id(gcount))
    def global_test():
        print("内部的内存地址%d" %id(gcount))
        print(gcount)
    global_test()# 结果是0
    print(gcount) # 结果是0
    
    修改全局变量
    gcount = 0
    print("外部的内存地址%d" %id(gcount))
    def global_test():
        global gcount
        print("内部的内存地址%d" %id(gcount))
        gcount+=1
        print(gcount)
    global_test()
    print(gcount)
    #运行结果:
    外部的内存地址140721024578352
    内部的内存地址140721024578352
    1
    1
    # 在函数内部定义全局变量,外部是可以使用的,在函数内部使用需要声明。
    def global_test():
         global gcount # 定义一个全局变量
         gcount=0
         gcount+=1
         print(gcount)
    global_test()
    gcount+=2
    print(gcount)
    
    运行结果:1
             3
  • nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量

    def counter():
        number = 10
        def incounter():
            nonlocal number  # 必须nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量
            number +=1
            return number
        return incounter
    num=counter()()
    print(num)

猜你喜欢

转载自blog.csdn.net/weixin_44224529/article/details/88788736
今日推荐