Python 全局变量

Example

def f():
    global g1
    g1 = 2
    print(f'g1:{g1}')
    
def g():
#     g1 += 1
#     g1 = 1
    print(g1)

Summarize

  • 在函数体内,可以直接定义一个global变量,而无需提前在外部定义好
  • global变量,可以在没有global声明的函数体内被调用,但无法被修改
    • 即上面未声明global g1的g()中,无法执行 g1 = g1+1,但可以访问到global g1的值
    • 而直接对g1进行赋值时,将会新建一个局域变量g1,不会影响到全局的g1

nonlocal

使用nonlocal 访问外层非全局作用域(又称enclosing 作用域)


def f():
    a = 1
    def g():
        print(a) # error

def f():
    a = 1
    def g():
        nonlocal a
        print(a) # ok
        a += 1 # ok
    g()
    print(a) # 2
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。