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 内置模块的名字空间
  • 相关阅读:
    JAVA视频网盘分享
    IntelliJ IDEA 2016 完美破解+汉化补丁
    献给java求职路上的你们
    java集合类
    MyEclipse编码设置
    国内外有名的java论坛
    百度编辑器ueditor的简单使用
    工厂模式
    Java静态工厂的理解
    git clone index-pack failed
  • 原文地址:https://www.cnblogs.com/devopsxin/p/9466439.html
Copyright © 2011-2022 走看看