zoukankan      html  css  js  c++  java
  • python3 之 变量作用域详解

    作用域

    •  指命名空间可直接访问的python程序的文本区域,这里的 ‘可直接访问’ 意味着:对名称的引用(非限定),会尝试在命名空间中查找名称;
      1. L:local,局部作用域,即函数中定义的变量;
      2. E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;
      3. G:globa,全局变量,就是模块级别定义的变量;
      4. B:built-in,内建作用域,系统固定模块里面的变量,比如:int,bytearray等
      • 搜索变量的优先级顺序LEGB,即:局部作用域 > 外层嵌套作用域 > 当前模块的全局作用域 > python内置作用域

    下面,以一个小实例演示:

     1 L = [1,2,3]
     2 
     3 def f1(lst):
     4     global L
     5     L = lst    #这是在做什么?可以么?
     6 
     7 def f2(lst):
     8     L += lst    #这是在做什么?可以么?
     9 
    10 def f3(lst):
    11     L.extend(lst)   #这是在做什么?可以么?
    12 
    13 try:
    14     f1([4,5,6])
    15     print(L)   #[4,5,6]
    16     print()
    17 except:
    18     print('f1执行有误')
    19 
    20 try:
    21     f2([4,5,6])
    22     print(L)   #f2执行有误,报错,L只在函数内部定义
    23     print()
    24 except UnboundLocalError:
    25     print('f2执行有误')
    26 
    27 try:
    28     f3([4,5,6])
    29     print(L)   #优先级,当函数内部找不到L时,向上寻找L
    30     print()
    31 except:
    32     print('f3执行有误')
  • 相关阅读:
    BigDecimal 使用方法详解
    vbs xml 解析
    hybris
    淘宝SKU组合查询算法实现
    GitHub入门教程 Hello World for GitHub
    利用Java进行MySql数据库的导入和导出
    计算机网络自顶向下第三章传输层二TCP
    django网站搭建常用的一些代码
    django中日志使用学习记录
    python遍历当前目录并删除某文件
  • 原文地址:https://www.cnblogs.com/gengyufei/p/11352195.html
Copyright © 2011-2022 走看看