## 跨文件导入模块```python如果a文件夹所在目录在环境变量中,a文件夹中的ma模块可以被一下方式导入:import a.ma |form a import ma如果a文件夹所在目录在环境变量,a文件中的b文件夹的mb模块可以被以下方式导入: import a.b.mb |form a.b import mb如果a文件夹所在目录在环境变量,a文件夹中的b文件夹mb模块中的bbb名字要被直接导入: import a.b.mb.bbb#错误!导入模块中所有.左侧都必须是文件夹 from a.b import mb.bbb#错误同上!!! from a.b.mb import bbb #正确!```## 模块的两种被执行方式:```pyrthon1,一个py文件作为自执行文件,__name__变量值为"__main__"字符串2,一个py文件作为模块被导入执行,__name__变量值为"模块名"在这样的文件中可以通过这样的语句进行区别两种执行方式: if __name__=="__main__": 自执行的逻辑代码(被作为模块导入执行时if为假,无法执行次语句)```包:```python一系列模块的集合,用文件夹来管理一系列有联系功能的模块,该文件夹称之为包!,文件名就是包名。包与普通文件夹存在区别:包的文件夹中一定存在一个__init__.py文件 py2中:必须创建,py3中建议创建,不创建系统会自动创建,系统自动创 建的不具备具体的模块的管理功能。只是最基本文件管理功能。__init__.py文件: 1,产生一个全局名称空间,代表的就是包的名称空间。 2,管理 包可以直接点.出来使用的名字(模块名或模块中具体对象名)导包完成的三件事: 1,编译__init__.py文件形成pyc文件 2,执行__init__.py文件,形成一个全局名称空间,将__init__.py文件中所有的名字存放其中,该名称空间就代表包的名称空间。 3,在导包的文件中,产生一个与包名字相同的名字,指向包的名称空间(即__init__.py文件的全局名称空间)```## 直接使用包中模块```python如果只想作为普通文件夹,py3中可以省略__init__文件,本质上文件夹也是包。因为系统会自动产生。py2中不会自动产生,需要自建。作为普通文件夹,导入包中模块方法:就是上述通过绝对路径导入 import a.b.c#a、b,是文件夹名,c是模块名。 from a.b.c import ccc#...同上...ccc是模块中的具体变量名```## 包的管理:```python#在包中采用相对路径导入管理的模块或模块中的名字在包的__init__.py文件或包中任意一个模块中 .代表当前文件所在目录 ..代表当前文件所在目录的上一层目录#注:语法不能出包,以为包外的文件都能自执行,但拥有.开头导入的文件不能自执行```