Python的模块,模块的使用、安装,别名,模块作用域

模块和包

  所谓的模块就是将不同功能的函数分别放到不同的文件中,这样不仅有利于函数的维护,也方便了函数的调用。在Python中,一个.py文件就是一个模块(Module)。

  在模块的上层有一个叫做包(Package)的目录。此目录的目的是避免模块的重名。

别名

导入模块时,还可以使用别名,这样,可以在运行时根据当前环境选择最合适的模块。比如Python标准库一般会提供StringIOcStringIO两个库,这两个库的接口和功能是一样的,但是cStringIO是C写的,速度更快,所以,你会经常看到这样的写法:

try:
    import cStringIO as StringIO
except ImportError: # 导入失败会捕获到ImportError
    import StringIO

这样就可以优先导入cStringIO。如果有些平台不提供cStringIO,还可以降级使用StringIO。导入cStringIO时,用import ... as ...指定了别名StringIO,因此,后续代码引用StringIO即可正常工作

 

模块加载和作用域

  模块语句会在首次导入时执行
  顶层的赋值语句会创建模块属性:在导入模块时,文件顶层(不在def和class之内)赋值变量的语句,会建立模块对象的属性,赋值的变量名会存储在模块的命名空间内
  模块的命名空间能通过属性__dict__或dir(M)获取:由导入而建立的模块的命名空间是字典
  模块是一个独立的作用域(本地变量就是全局变量):在模块中,模块范围会在模块加载后变成模块对象的属性辞典,导入后,模块文件的作用域就变成了模块对象的属性的命名空间

导包过程都发生了什么

  执行了这个包的__init__文件

  创建了一个模块属性(import后面的)

  变量名会存储在模块属性的名称空间中
  将模块属性加载到执行文件的全局作用域中 
 
 
 
 
posted @ 2018-12-14 10:09  神秘嘉宾7m  阅读(664)  评论(0编辑  收藏  举报