zoukankan      html  css  js  c++  java
  • global 全局变量的用法

    说明:i 和foo()都为全局变量,i 是在模块文件顶层注册的,所以为全局变量,他能够在函数内部进行引用而不需要再特意声明是全局变量,且foo()函数也是全局变量

    1.当没有局部变量时,print(i,'in foo()'),根据LEGB规则,打印的是全局变量;print(i,'global')也是全局变量

    如下

    i = 1
    def foo():
        print(i,'in foo()')   #局部变量
    print(i,'global')   #全局变量
    foo()
    print(i,'未定义')
    
    #输出
    1 global
    1 in foo()
    1

    2.当设置局部变量时,print(i,'in foo()') 打印局部变量,print(i,'global'),打印全局变量,print(i,'未定义'),打印全局变量 1

    i = 1
    def foo():
        i=5
        print(i,'in foo()')   #局部变量
    print(i,'global')   #全局变量
    foo()
    print(i,'未定义')
    
    #输出
    1 global
    5 in foo()
    1 未定义

    3.当把局部变量设置成global 全局变量时,print(i,'in foo()'),打印的还是局部变量,print(i,'global'),没有变量,始终是def 之前定义的变量i=1;

     print(i,'未定义'),根据LEGB 规则,寻找全局变量,因全局变量设置为i =5,打印出来也是5

    i = 1
    def foo():
        global i
        i=5
        print(i,'in foo()')   #局部变量
    print(i,'global')   #全局变量
    foo()
    print(i,'未定义')
    
    
    #输出
    1 global
    5 in foo()
    5 未定义
  • 相关阅读:
    BZOJ2142: 礼物
    GYM100633J. Ceizenpok’s formula 扩展lucas模板
    Codeforces451E Devu and Flowers
    BZOJ2982: combination Lucas模板
    UVAL3700
    BZOJ2821: 作诗(Poetize)
    BZOJ2724: [Violet 6]蒲公英
    Luogu P1858 多人背包
    Luogu P2831 愤怒的小鸟(状压+记忆化搜索)
    Luogu P4205 [NOI2005]智慧珠游戏
  • 原文地址:https://www.cnblogs.com/sxwen/p/8029244.html
Copyright © 2011-2022 走看看