模块与包

模块的使用
导入模块等于是创建了一个命名空间,空间中存取了,模块中定义的啊名字。之后再执行模块文件。
模块中的变量名和本文件中变量名互不干扰,所有的执行操作都是以模块自身为准

如何查看当前已经导入的所有模块?

import sys
sys.modeles#可以查看当前导入的模块

如何导入模块中的所有变量名

from modeles import*

当你想限制*导入的内容的时候,可以在模块中添加以下语句

__all__=[]#中括号中写的字符串形式的变量就是指定*可以导入命名

关于模块搜素的顺序:

模块搜索的时候总是现在内存中寻找,所以重复导入的时候如果在内存中已经有的话,那就直接导入,如果内存中不存在就找内建模块,内建如果没有就找当前路径
sys.path可以查看详细寻找路径(返回一个列表形式的path)

假设你要添加一个自定义模块的路径搜索可以 sys.path.append('路径') 实现

关于__name__

当文件本身运行自己的时候__name__=__main__
单文件被当作模块调用的时候__name__=文件名
一般当你的代码是个测试代码,不想被别人调用的时候可以加上判断语句

if __name__=__main__:

#要执行的代码

编译python文件

当模块导入的时候会在模块文件内部产生一个pyc文件,这个文件是python的预编译文件,当下次读取的时候就会加速,这样就可以提高模块导入的时候的执行效率(只有导入模块的时候才会生成这个文件)

关于包的概念:

包其实就是一个拥有层次结构的模块,每次载入包的时候都会读取__init__.py文件内容,在这个文件内容中可以设置好一些调用的功能的路径,这样在导入总模块的时候,就可以直接调用某些功能

原文地址:https://www.cnblogs.com/crischou/p/6796608.html