手记

python之模块和包

一 Python模块简介

Python模块:
可以将代码量较大的程序分割成多个有组织,彼此间独立但又能互相交互的代码片段,这些自我包含的有组织的代码段就是模块

模块在物理形式上表现为以.py 结尾的代码文件
一个文件被看做一个独立的模块,一个模块也可以被看做是一个文件
模块的文件名就是模块的名字加上扩展名.py
每个模块都有自己的 名称空间
Python 允许“导入”其他模块以实现代码重用,从而也实现了将独立的代码文件组织成更大的程序系统
Python 中,模块也是对象
在一个模块的顶层定义(全局变量)的所有变量都在被导入时成为了被导入模块的属性

二  Python 程序架构:

一个Python程序通常包括一个顶层文件和其他的模块文件(0个,1个或多个)
顶层文件:包含了程序的主要控制流程
模块文件:为顶层文件或其他模块提供各种功能性组件
模块首次导入(或重载)时,Python会立即执行模块文件的顶层程序代码(不在函数内的代码),而位于函数体内的代码直到函数被调用后才会执行
Python自带的模块称为Python的标准库模块
模块搜索:
Python解释器在import 模块是必须先找到对应的模块文件
程序的主目录
PYTHONPATH(如果设置了此变量)
标准链接库目录
任何.pth文件的内容(如果存在.pth文件)
这四个组件组合起来及sys.path所包含的路径,而Python 会选择在搜索路径中的第一个符号导入文件名的文件

模块的导入需要一个叫做“路径搜索”的过程,即在文件系统“预定义区域”中查找mymodule 文件,这些预定义区域只不过是你的python搜索路径的集合,路径搜索和搜索路径是两个不同的概念前者是指查找某个文件的操作,后者是去查询一组目录。
默认搜索路径是在编译或安装时指定的,它可以在一个或两个地方修改
一个是启动 Python 的 shell 或命令行的 PYTHONPATH 环境变量。 该变量的内容是一组用冒号分割的目录路径。 如果你想让解释器使用这个变量, 那么请确保在启动解释器或执行 Python 脚本前设置或修改了该变量。
解释器启动之后, 也可以访问这个搜索路径, 它会被保存在 sys 模块的 sys.path 变量里。不过它已经不是冒号分割的字符串, 而是包含每个独立路径的列表。下面是一个 Unix 机器搜索路径的样例。切记, 搜索路径在不同系统下一般是不同的。

这是一个列表,因此我们可以进行修改,如果你需要导入的模块的目录不在sys.path中,则可以使用append()进行对此列表操作,以导入此模块
         
将上述目录加入到sys.path中

查看

模块导入

只要这个列表中包含这个文件,它就会被正确的导入,当然,这个方法是将其导入到文件的尾部,也可以使用insert()将其导入指定位置

三 pycharm中模块的导入

1  同一个文件夹中的配置

A 定义一个被导入的模块

B 导入模块到目标模块

C使用name获取模块的名称,当为模块内部时其值为mian,若为导入的,则其名为模块名
一个模块文件可以同时支持顶层执行(作为顶层文件)或被导入(作为模块文件)
每个模块都有个名为name的内置属性,python会自动设置该属性
如果文件是以顶层程序文件执行,在启动时,name的值为“main
如果是被导入,则name的值为模块名
可以在模块文件中检测自己的name顺序ing,以之实现在执行时运行指定的代码,常用于模块的自我测试

D将其导入执行模块进行查看:

E使用if语句进行判断,已达到不将被导入模块的执行结果在导入模块中执行:

F将其导入并验证

G将该配置导入到指定模板:(ctrl+alt+s)进行打开其配置:

2  将被导入模块和导入模块放置在不同的文件夹中

包:包用于将一组模块归并到一个目录中,此目录及为包,目录名及为包名
包是一个有层次的文件目录结构,定义了一个由模块和子包组成的Python应用程序执行环境
基于包,Python在执行模块导入时可以指定模块的导入路径
Import   dir1.dir2.mod1
要使用如下的package1,则py_pkg_mod容器必须要在模块中搜索路径中
Import   package1.mod1
包导入语句的路径内的每个目录内都必须有init.py 文件
init.py可包含python代码,但通常为空,仅用于扮演包初始化的挂钩、替目录产生模块命名空间以及使用目录导入时实现from* 行为的角色
pycharm中包的创建:
使用alt+ins快捷键可以指定创建的是文件还是包,Python  package为带有init.py的Python包。
       

A修改其配置使得不同文件夹的文件可以直接导入(选择Sources  Root)

B再次执行则可以进行导入并运行:

C取消则不能运行:

D在被导入模块所在的文件夹创建init.py的文件并将其本地模块导入到此init.py文件中

E在目标文件中导入该模块并运行,则可以正常运行

3 from ...  import ...的应用

1  For-import 语句

常用于导入指定模块放入部分属性至当前名称空间(不需要加上该模块的名称)
From   module  import name1[,name2[nameN]]
Import 和 from都是隐形赋值语句
Import 将整个模块对象赋值给一个变量名(模块名)
From 将一个或多个变量名赋值给导入此模块的模块中的同名对象,如果当前环境中有与导入模块相同的名称,其将会被新导入的名称所覆盖
模块就是名称空间

2 import的工作机制

1 找到模块文件
在指定的路径下搜索模块文件
2 编译成字节码
文件导入时就会编译,因此,顶层文件的.pyc 字节码文件在内部使用后会被丢弃,只有被导入的文件才会留下.pyc文件
3 执行模块的代码来创建其所定义的对象
模块文件中的所有语句会依次执行,从头至尾,而此步骤中任何对变量名的复制运算,都会产生所得到的模块文件的属性
注意:模块只在第一次导入时才会执行如上步骤,
后续的导入操作只不过是提取内存中已加载的模块对象
reload()可用于重新加载模块
A 相同文件夹的模块导入:

B 全局变量的定义

C 导入全局变量并运行,则可以运行。

D 导入函数并运行,则可以运行。

E 修改导入模块的模块名或函数、装饰器名使用as 即可修改:

四 、第三方模块的安装

微信基本信息的获取相关的软件:(itchat)

1 下载并安装Python-pip

如此则表示安装成功:

2 安装itchat(微信插件)

在联网的状况下进行安装
使用pip安装

2 使用pycharm安装

使用ctrl+alt+s进入此界面并按右上角的加号(+)

进入之进行查找itchat,并按左下角的intall  Package 即可安装

0人推荐
随时随地看视频
慕课网APP