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 未定义
  • 相关阅读:
    MVC学习
    Net开源网络爬虫
    js调用wcf 的SOA
    Redis 上实现的分布式锁
    dojo/request
    Python,PyCharm
    如何解决卸载McAfee时出现“处于托管模式时无法删除”问题(转)
    糗事⊙︿⊙
    Oracle exp,imp
    java 生产者消费者问题 并发问题的解决(转)
  • 原文地址:https://www.cnblogs.com/sxwen/p/8029244.html
Copyright © 2011-2022 走看看