命名空间

Python基础教程

写在前边

命名空间,在我们上面类引用的一课程中已经接触到了,这一节我们着重地看一下命名空间在python中的使用。
我们联想一下其它的语言
java中,我们使用包名来管理命名空间。
php在5.3之后,也引入了命名空间的概念,以反斜杠+空间名的形式来实现
在oc中,使用一个统一的前缀来实现命名空间
你看,每一种语言都有它不太相似的命名空间形式,但是目的都是一样的,都给自己添了个姓氏,就是为了减少在同一个教室里被点错名的事故发生。
我们看一下pyton中的命名空间:

命名空间的种类

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

global 和 nonlocal关键字

以下实例修改全局变量 num:

num = 1
def fun1():
    global num  # 需要使用 global 关键字声明
    print(num) 
    num = 123
    print(num)
fun1()
print(num)
#输出结果
1
123
123

如果要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字了,如下实例:

def outer():
    num = 10
    def inner():
        nonlocal num   # nonlocal关键字声明
        num = 100
        print(num)
    inner()
    print(num)
outer()
#输出结果
100
100

暂无评论

相关推荐

Python语言基础教程

一,基础  ·关键字  ·变量定义  ·字符串  ·(1)数据集合-列表&元组  (2)数据集合-字典  ·常量的定义和使用  · …

json数据操作

Python基础教程 python中操作json的api也非常的方便,我们来看一下。 我们需要用到一个库 import json 然后我们来看一 …

一些使用技巧

直接把数据库查询的查询结果中的某个字段转为集合 daily_cursor = DB_CONN.daily.find( {‘code’: ‘xxxx’, ‘date’: {‘$g …

线程

Python基础教程 在python中有两种线程的操作方式:函数或者用类来包装线程对象 用函数 import _thread import time def …

微信扫一扫,分享到朋友圈

命名空间