python模块介绍
-
什么时模块?
//模块和包就像是文件和文件夹的关系。 //模块就是程序,模块的名称就是不含.py后缀的文件名 //模块力一般是放的可重用的一些方法等。
-
如果没有模块将会怎么样?
//可维护性更强 //方便代码重用
模块导入、引用及定位
-
导入:import
//新建hello.py hello模块 def func(): print('hello') //在其他程序文件引用模块,新建test.py import hello hello.func() //结果输出hello
-
定位:当前包>内置函数>sys.path(环境变量,这个环境变量是python的一个专属环境变量,它在内置模块sys中,用 import sys->>sys.path 就能看到)
//首先在当钱包中找,然后再内置函数中找,最后去环境变量找 ![image.png](https://upload-images.jianshu.io/upload_images/10345717-bd3a776034a787f6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) //不过不在hello.py模块同目录下引用hello,会出现没有hello模块的报错 ![image.png](https://upload-images.jianshu.io/upload_images/10345717-4bf0efd3ede4c560.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) //通过把包含hello.py的目录加入到python专属环境变量sys.path中,就可以实现引入hello模块. 加入方法:import sys>>sys.path.append("目录路径")>>sys.path //注意如何保存的问题.还要注意append时目录路径要用双斜杠,这是windows环境变量的规定写法
模块的属性
-
dir----列出对象的所有属性及方法
import hello dir(hello) //返回模块所有的属性和方法,其中除了func是我们自己写入的,其他都是python自动初始化生成,['__builtins__','__cached__','__doc__','__file__','__loader__','__name__','__package__','__spec__','__func__',] (都是双下划线) //hello里面的方法也是可以通过dir查看的 dir(hello.func) //会列出很多初始化生成的内容,__new__和__init__就包含在内.
-
help---查看类,方法的帮助信息
help.__name__ //返回模块名'hello',模块名默认就是文件名去掉.PY help(hello) //可以看到文档注释,方法注释,名字,目录等 help(hello.func) //可能方法用法注释 help.__doc__ //返回文档注释
name-------模块的名称
-
file------模块文件的全路径 'C:\USERS\..\..\hello.py'
//在控制台操作时,修改了py代码要用quit()退出文件再重新加载才可以生效. //自定义模块要先把方法框架和注释做好,最后填充代码
包的简介
可以用来组织模块(可以包含其他模块的模块),类似文件夹,文件夹也是另一个文件夹的模块
目录必须包含文件init.py(下划线)
-
模块重名问题解决
模块名相同,只要不再同一个包就可以,所以包可以解决模块重名问题 ![image.png](https://upload-images.jianshu.io/upload_images/10345717-2a05f8a78b37d056.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
包的引用
引入整个包:import module //和引入模块一样,包也被看做是一个模块
-
只是引入所需要的属性和方法 //from module.xx.xx inport xx (从哪个地方引入)
from pay.alipay.tools import pay
指定别名:from module.xx.xx import xx as renename //用于从不同包引入同名模块
-
引入所有:from module.xx import * 避免引入重名包,尽量避免这种写法.
//注意:引用整个包的方法和注意事项 //如果想引入如图中的整个pay,然后使用alipay/tools.PY里面包含的方法 //应当首先再pay下的_init_.py中加入 from . import alipay
//注意当我们进入控制台时如果是再pay包上层目录时,需要使用from . import alipay "."的意思时运行from时在pay的当前目录下找,而不是去进入控制台时的chapter01目录中找.
//如果不存在上面情况,可以直接用 import alipay
//然后再alipay下的_init_.py中加入 from . import tools //调用tools.py中的pay方法 import pay //这个pay是最上层的包 pay.alipay.tools.pay()