zoukankan      html  css  js  c++  java
  • 命名空间和作用域

    Namespace and Scope(命名空间和作用域)
    namespace
    Namespace(只)是 从名字到对象的一个映射(a mapping from name to objects) 。大部分namespace都是按Python中的字典来实现的。有一些常见的namespace:built-in中的集合( abs() 函数等)、一个模块中的全局变量等。

    从某种意义上来说,一个对象(object)的所有属性(attribute)也构成了一个namespace。在程序执行期间,可能(其实是肯定)会有多个名空间同时存在。不同namespace的创建/销毁时间也不同。

    此外,两个不同namespace中的两个相同名字的变量之间没有任何联系。

    scope
    有了namespace基础之后,让我们再来看看scope。Scope是Python程序的一块文本区域(textual region)。

    在该文本区域中,对namespace是可以直接访问,而不需要通过属性来访问。

    Scope是定义程序该如何搜索确切地“名字-对象”的名空间的层级关系。
    (The “scope” in Python defines the “hirerchy level” in which we search namespaces for
    certain “name-to-object” mappings.)

    Tip

    直接访问:对一个变量名的引用会在所有namespace中查找该变量,而不是通过属性访问。

    属性访问:所有名字后加 . 的都认为是属性访问。

    如 module_name.func_name ,需要指定 func_name 的名空间,属于属性访问。
    而 abs(-1) , abs 属于直接访问。

    两者之间有什么联系呢?
    Important

    在Python中,scope是由namespace按特定的层级结构组合起来的。

    scope一定是namespace,但namespace不一定是scope.

  • 相关阅读:
    python下RSA 加密/解密,签名/验证
    python字符串str和字节数组相互转化
    代码存档
    windows 7 安装 scrapy
    scrapy 爬取自己的博客
    win32api 找不到指定的模块
    SQLite3日期与时间,常见函数
    sqlite3日期数据类型
    myeclipse集成maven
    UIKit class hierarchy
  • 原文地址:https://www.cnblogs.com/wdmx/p/9974728.html
Copyright © 2011-2022 走看看