zoukankan      html  css  js  c++  java
  • Python中的变量和作用域详解

    Python中的变量和作用域详解

    python中的作用域分4种情况: L:local,局部作用域,即函数中定义的变量;

    E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;

    G:globa,全局变量,就是模块级别定义的变量; B:built-in,系统固定模块里面的变量,比如int, bytearray等。 搜索变量的优先级顺序依次是:作用域局部>外层作用域>当前模块中的全局>python内置作用域,也就是LEGB。    
    x = int(2.9) # int built-in
    g_count = 0 # global
    def outer():
    o_count = 1 # enclosing
    def inner():
    i_count = 2 # local

    当然,local和enclosing是相对的,enclosing变量相对上层来说也是local。    
    #定义变量a
    >>> a = 0
    >>> print a
    0
    #定义函数p()
    >>> def p():
    ... print a
    ... 
    >>> p()
    0
    #定义函数p2()
    >>> def p2():
    ... print a
    ... a = 3
    ... print a
    ... 
    >>> p2() # 运行出错,外部变量a先被引用,不能重新赋值
    Traceback (most recent call last):
    File "", line 1, in
    File "", line 2, in p2
    UnboundLocalError: local variable 'a' referenced before assignment
    #定义函数p3()
    >>> def p3():
    ... a = 3 # 不引用直接赋值
    ... print a
    ... 
    >>> p3()
    3
    >>> print a
    0 # 外部变量a并未改变
    以上所述是小编给大家介绍的Python中的变量和作用域详解,

  • 相关阅读:
    【BZOJ4033】【HAOI2015】树上染色
    【BZOJ1040】【ZJOI2008】骑士
    【BZOJ3573】【HNOI2014】米特运输
    【BZOJ1060】【ZJOI2007】时态同步
    17-10-11模拟赛
    17-10-05模拟赛
    17-09-29模拟赛
    17-09-21模拟赛
    17-09-20模拟赛
    17-09-15模拟赛
  • 原文地址:https://www.cnblogs.com/amengduo/p/9586423.html
Copyright © 2011-2022 走看看