首页 > 其他 > 详细

模块 包

时间:2019-04-04 19:24:43      阅读:141      评论:0      收藏:0      [点我收藏+]
模块
一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀

模块可以包含可执行的语句和函数的定义,这些语句的目的是初始化模块,它们只在模块名第一次遇到导入import语句时才执行
我们可以从sys.modules中找到当前已经加载的模块,sys.modules是一个字典,内部包含模块名与模块对象的映射,该字典决定了导入模块时是否需要重新导入。

冲突问题
每个模块都是一个独立的名称空间,定义在这个模块中的函数,把这个模块的名称空间当做全局名称空间,
这样我们在编写自己的模块时,就不用担心我们定义在自己模块中全局变量会在被导入时,与使用者的全局变量冲突

首次导入模块my_module时会做三件事
1为源文件创建名称空间
2在新创建的命名空间中执行模块中包含的代码
3创建变量指向该空间

为模块起别名
技术分享图片
if file_format == xml:
     import xmlreader as reader
elif file_format == csv:
     import csvreader as reader
data=reader.read_date(filename)
示范

一行可以导入多个模块,但不建议这么做

from  ... import  ...

from 语句相当于import,也会创建新的名称空间,但是将my_module中的名字直接导入到当前的名称空间中,

在当前名称空间中,直接使用名字就可以了

python中的变量赋值不是一种存储操作,而只是一种绑定关系

 

注意   *  与  __all__[‘字符串类型的变量名‘]

模块的循环引用问题  可以循环 但不建议,会出问题

 

我们可以通过模块的全局变量__name__来查看模块名:
当做脚本运行:
__name__ 等于__main__
当做模块导入:
__name__= 模块名
作用:用来控制.py文件在不同的应用场景下执行不同的逻辑
if __name__ == __main__:

模块的查找顺序是:内存中已经加载的模块->内置模块->sys.path路径中包含的模块

 

 

 

模块 包

原文:https://www.cnblogs.com/XLHIT/p/10656414.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!