python之模块和包
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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在目标文件中导入该模块并运行,则可以正常运行
三 from ... import ...的应用
For-import 语句
常用于导入指定模块放入部分属性至当前名称空间(不需要加上该模块的名称)
From module import name1[,name2[nameN]]
Import 和 from都是隐形赋值语句
Import 将整个模块对象赋值给一个变量名(模块名)
From 将一个或多个变量名赋值给导入此模块的模块中的同名对象,如果当前环境中有与导入模块相同的名称,其将会被新导入的名称所覆盖
模块就是名称空间
import的工作机制
1 找到模块文件
在指定的路径下搜索模块文件
2 编译成字节码
文件导入时就会编译,因此,顶层文件的.pyc 字节码文件在内部使用后会被丢弃,只有被导入的文件才会留下.pyc文件
3 执行模块的代码来创建其所定义的对象
模块文件中的所有语句会依次执行,从头至尾,而此步骤中任何对变量名的复制运算,都会产生所得到的模块文件的属性
注意:模块只在第一次导入时才会执行如上步骤,
后续的导入操作只不过是提取内存中已加载的模块对象
reload()可用于重新加载模块
A 相同文件夹的模块导入:
B 全局变量的定义
C 导入全局变量并运行,则可以运行。
D 导入函数并运行,则可以运行。
E 修改导入模块的模块名或函数、装饰器名使用as 即可修改:
四 、第三方模块的安装
微信基本信息的获取相关的软件:(itchat)
1 下载并安装Python-pip
如此则表示安装成功:
2 安装itchat(微信插件)
在联网的状况下进行安装
使用pip安装
使用pycharm安装
使用ctrl+alt+s进入此界面并按右上角的加号(+)
进入之进行查找itchat,并按左下角的intall Package 即可安装
以上是关于python之模块和包的主要内容,如果未能解决你的问题,请参考以下文章