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 内置模块的名字空间
  • 相关阅读:
    Odoo电子数据交换(EDI)
    WMS8_仓库配置
    odoo写邮件添加收件人
    Odoo HR Payslip
    openERP邮件(发信、收信)
    Multi-company rules
    MRP Force Reservation的作用
    使用虚拟机VM运行Linux版OpenERP
    采购预付款
    消除递归的方法
  • 原文地址:https://www.cnblogs.com/devopsxin/p/9466439.html
Copyright © 2011-2022 走看看