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执行有误')
  • 相关阅读:
    JDK JRE Java虚拟机的关系
    apache和tomcat区别
    JBoss Web和 Tomcat的区别
    SOAP 与 restful service区别
    IntelliJ Idea 常用快捷键列表
    Win7用户文件夹转移
    相同IP和Mac地址的问题
    WebDriver 浅析
    Web UI 自动化测试
    python中xlrd模块的使用
  • 原文地址:https://www.cnblogs.com/gengyufei/p/11352195.html
Copyright © 2011-2022 走看看