zoukankan      html  css  js  c++  java
  • python3--到底什么是Namespace(命名空间)

    先看官方文档的一段话:A anmespace is a mapping from names to objects. Most namespaces are currently implemented as Python dictionaries.

    命名空间(Namespace)是从名称到对象的映射。各个命名空间是独立的,没有任何关系,所以一个命名空间不能有重名,但不同的命名空间是可以重名而没有任何影响。

    我们举一个计算机系统中搞得例子,一个文件夹(目录)中可以包含多个文件夹,每个文件夹不能有相同的文件名,但不同文件夹中的文件可以重名。

     一般有三种命名空间:

    • 内置名称(built-in names),python语言内置的名称,比如函数名abs, char和异常名称BaseException, Exception等等。
    • 全局名称(global names),模块中定义的名称,记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量。
    • 局部名称(local names),函数中定义的名称,记录了函数的变量,包括函数的参数和局部定义的变量。(类中定义的也是)

     命名空间查找顺序:

    假设我们要使用变量runoob,则Python的查找顺序为:局部的命名空间->全局命名空间->内置命名空间

    如果找不到变量runoob,它将放弃查找并引发一个NameError异常:

    NameError: name 'runoob' is not defined.

    命名空间的生命周期:

    命名空间的生命周期取决于对象的作用域,如果对象执行完成,则该命名空间的生命周期就结束。

    因此,我们无法从外部命名空间方位内部命名空间的对象。

    原文连接:https://www.runoob.com/python3/python3-namespace-scope.html

  • 相关阅读:
    Java 第二题
    第6次作业--static关键字、对象
    20194643 自动生成四则运算第一版报告
    软件工程 第一次作业
    MySQL主从复制与读写分离原理
    垂直拆分、读写分离、水平拆分(分库分表)详解
    MySQL InnoDB 索引原理
    MySQL架构体系&SQL查询执行全过程解析
    最全MySQL锁详解:表/行/页锁、共享/排它锁、悲观/乐观锁等
    MySQL事务ACID与隔离级别详解
  • 原文地址:https://www.cnblogs.com/elitphil/p/15029593.html
Copyright © 2011-2022 走看看