Python核心编程学习日记之模块
模块
模块用来组织代码,包是用来组织模块的。自我包含并且有组织的代码片段就是模块
- 默认搜索路径修改:一个是启动Python的shell或命令行的PYTHONPATH环境变量。在解释器里的sys模块的sys.path变量保存这些目录路径。
- 名称空间是名称(标识符)到对象的映射。执行期间有两个或三个活动的名称空间:局部名称空间,全局名称空间,内建名称空间。Python解释器会首先加载内建名称空间,随后加载执行模块的全局名称空间。执行期间调用函数,创建出局部名称空间
- __builtins__模块和__builtin__模块:__builtins__模块包含内建名称空间中内建名字的集合。大多数来自__builtin__模块。__builtins__包含__builtin__的所有名字。
- 无限制的名称空间:可以在任何需要放置数据的地方获得一个名称空间。 〈li> 建议所有的模块在Python模块的开头部分导入。顺序为:Python标准库模块,python第三方模块,应用程序自定义模块。
导入指定名称:from module import name[, name2[,... nameN]]
不建议使用from Module import *语句。可以使用import Name as MyName来使用自己喜欢的名字替换原本的名字
无论导入多少次,模块只被加载一次。加载模块将导致模块被执行。
- from __future__import new_feature : 导入将来会逐渐确定的新特性。只imort __futrue__被禁止,引脚为它不会启用所有特性,不许显示的导入指定特性。
- Python 支持从ZIP归档文件中导入模块的功能。导入时会把ZIP文件当做目录处理,因此,可以把ZIP文件写入到文件路径中。
-
模块内建函数
- __import__():import语句调用__import__()函数来完成工作。语法为:
__import__(module_name[, globals[, locals[, formalist]]])
globals,locals,formlist默认为globals(),locals(),[]。 - globals()返回调用者全局名称空间的字典。locals()返回调用者局部名称空间的字典。
- reload()重新导入一个已经导入的模块。 :reload(module)
- __import__():import语句调用__import__()函数来完成工作。语法为:
-
包是一个有层次的文件目录结构。定义了一个由模块和子包组成的Python应用程序执行环境。包也使用据点属性标识来访问他们的元素。
- 对于目录结构,同样可以使用import Upper.sub 和from-import语句。from package.module import *语句使得导入的文件取决于操作系统的文件系统。在__init__.py中加入__all__变量。它是一个由执行该语句时会导入的模块名字组成的列表。
- 绝对导入:导入的模块名字必须通过Python路径(sys.path或是PYTHONPATH)来访问。绝对导入已成为默认功能。
- 相对导入:import语句总是绝对导入的,相对导入只应用于from-import语句。
- 当Python解释器在标准模块下启动时,一些模块会被解释器自动导入。sys.modules变量包含一个由当前载入(完整且成功导入)到解释器的模块组成的字典。模块名为键,位置为值。
- 阻止属性导入:如果不想让某个模块属性被“from module import *”导入,给你不想导入的属性名称加上一个下划线(_)