zoukankan      html  css  js  c++  java
  • 2.3.10 Python 函数进阶-名称空间&作用域

    名称空间

    又名 name space。

    说明:若变量 x=1, 1存放于内存中,那名字x存放在哪里? 

              名称空间正是存放名字x与1绑定关系的地方

    名称空间共三种:

    • locals: 是函数内的名称空间,包括局部变量和形参
    • globals: 全局变量,函数定义所在的模块的名字空间
    • builtins: 内置模块的名字空间

    不同变量的作用域不同,就是由于这个变量所在的命名空间决定的

    作用域的范围

    • 全局范围:全局存活,全局有效
    • 局部范围:临时存活,局部有效

    查看作用域的方法 globals(),locals(),dir(__builtins__)


    作用域的查找顺序

     1 level = 'L0'
     2 n = 22
     3 
     4 
     5 def func():
     6     level = 'L1'
     7     n = 33
     8     print(locals())
     9 
    10     def outer():
    11         n = 44
    12         level = 'L2'
    13         print(locals(),n)
    14 
    15         def inner():
    16             level = 'L3'
    17             print(locals(),n) #此外打印的n是多少?
    18         inner()
    19     outer()
    20 
    21 
    22 func()

    问题:在inner()里的打印的n的值是多少?

    LEGB 代表名字查找顺序: locals -> enclosing function -> globals -> __builtins__

    • locals 是函数内的名字空间,包括局部变量和形参
    • enclosing 外部嵌套函数的名字空间
    • globals 全局变量,函数定义所在模块的名字空间
    • builtins 内置模块的名字空间
  • 相关阅读:
    JavaScript 弹窗
    创建对象构造器
    DOM事件
    document对象“还在更新”
    JavaScript 闭包
    使用 "use strict" 指令
    constructor 属性
    2019暑期集训第一周小结
    无向图求割边
    矩阵快速幂
  • 原文地址:https://www.cnblogs.com/devopsxin/p/9466439.html
Copyright © 2011-2022 走看看