可以将代码量较大的程序分割成多个有组织的、彼此独立但又能互相交互的代码片段,这些自我包含的有组织的代码段就是模块
模块表现形式为以.py结尾的代码文件
一个文件被看作一个独立的模块,一个模块也可以被看作是一个文件。
模块的文件名就是模块的名字加上扩展名.py
每个模块都有自己的名称空间
Python程序架构
一个python程序通常包括一个顶层程序文件和其他的模块文件(0个,1个或多个)
顶层文件:包含了程序的主要控制流程
模块文件:为顶层文件或其他模块提供各种功能性组件
模块首次导入(或重载)时,Python会立即执行模块文件的顶层程序代码,声明函数对象,而位于函数体内的代码直到函数被调用后才会执行。
模块的执行环境
模块是被导入的,但模块也可以导入和使用其他模块,这些模块可以用Python或其他编程语言写成
模块可内含变量、函数以及类来进行其工作,而函数和类可以包含变量和其他元素
如果打算以多个程序文件来组织你的Python程序,只有一个文件可以作为顶层执行文件,可以在顶层包含很多程序控制流,其他被导入的文件,都应该只包含类、变量、函数。
导入模块
在导入模块时只能使用模块名,而不是带.py后缀的模块文件名。
导入指定模块,会生成一个以模块名命名的名称空间。
impor语句导入模块:
import module
导入时可以给名称空间指定一个别名,如果使用别名,就只能使用别名调用了。
import module as module_alias
from-import 语句:
常用于只导入指定模块的部分属性至当前名称空间
from module import name1[,name2,...]
import 和 from 都是隐性赋值语句
import将整个模块对象赋值给一个变量名
from将一个或多个变量名赋值给导入此模块的模块中的同名对象,如果导入的变量和本地变量重名,则会覆盖本地的。
import的工作机制
1、寻找模块文件,2、编译成字节码,3、执行模块的代码来创建其所定义的对象。注意:模块只有在第一次导入时才会执行如上步骤;
后续的导入操作只不过是提取内存中已加载的模块对象,reload()可用于重新加载模块;
模块搜索
Python解释器在import模块时必须先找到对应的模块文件
程序的主目录
Python path目录
标准链接库目录
任何.pth文件的内容
这四个组件组合起来即为sys.path所包含的路径,而Python会选择在搜索路径中的第一个符合导入文件名的文件。
import sys
sys.path
sys.path.append(‘/tmp/python3/lib‘) 修改sys.path,添加python库的搜索路径。
添加模块文件的测试代码
本文出自 “突破舒适区” 博客,转载请与作者联系!
原文地址:http://tchuairen.blog.51cto.com/3848118/1681757