模块
一、模块简述
在 Python 中,一个.py文件就称之为一个模块(Module)。其优势在于:
大大提高了代码的可维护性;
当一个模块编写完毕,就可以被其他地方引用;
二、模块搜索路径
1.默认情况下,Python 解释器会搜索当前目录、所有已安装的内置模块和第三方模块,搜索路径存放在 sys 模块的 path 变量中:
In [1]: import sys
In [2]: print(sys.path)
[”, ‘/usr/bin’, ‘/usr/lib64/python27.zip’, ‘/usr/lib64/python2.7’, ‘/usr/lib64/python2.7/plat-linux2’, ‘/usr/lib64/python2.7/lib-tk’, ‘/usr/lib64/python2.7/lib-old’, ‘/usr/lib64/python2.7/lib-dynload’, ‘/usr/lib64/python2.7/site-packages’, ‘/usr/lib64/python2.7/site-packages/gtk-2.0’, ‘/usr/lib/python2.7/site-packages’, ‘/usr/lib/python2.7/site-packages/IPython/extensions’, ‘/root/.ipython’]
1
2
3
2.追加模块的默认搜索路径;
In [3]: sys.path.append(‘/mnt’)
In [4]: sys.path
Out[4]:
[”,
‘/usr/bin’,
‘/usr/lib64/python27.zip’,
‘/usr/lib64/python2.7’,
‘/usr/lib64/python2.7/plat-linux2’,
‘/usr/lib64/python2.7/lib-tk’,
‘/usr/lib64/python2.7/lib-old’,
‘/usr/lib64/python2.7/lib-dynload’,
‘/usr/lib64/python2.7/site-packages’,
‘/usr/lib64/python2.7/site-packages/gtk-2.0’,
‘/usr/lib/python2.7/site-packages’,
‘/usr/lib/python2.7/site-packages/IPython/extensions’,
‘/root/.ipython’,
‘/mnt’]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
3.将新的搜索路径加到最前面
In [5]: sys.path.insert(0,’tmp’)
In [6]: sys.path
Out[6]:
[‘tmp’,
”,
‘/usr/bin’,
‘/usr/lib64/python27.zip’,
‘/usr/lib64/python2.7’,
‘/usr/lib64/python2.7/plat-linux2’,
‘/usr/lib64/python2.7/lib-tk’,
‘/usr/lib64/python2.7/lib-old’,
‘/usr/lib64/python2.7/lib-dynload’,
‘/usr/lib64/python2.7/site-packages’,
‘/usr/lib64/python2.7/site-packages/gtk-2.0’,
‘/usr/lib/python2.7/site-packages’,
‘/usr/lib/python2.7/site-packages/IPython/extensions’,
‘/root/.ipython’,
‘/mnt’]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
三、源模块
1.内置模块
如:time(时间模块)、functools(函数工具模块)、random(随机数)
2.自定义模块
含有自定义python脚本的目录、包均可
3.第三方模块
需要联网安装,例如itchat模块;
通过 setuptools 这个工具完成;
pip install 包名 或 pycharm中安装;
四、调用模块 import 关键字
1.itchat(第三方模块)
if name == “main“: # 判断的是这个脚本内容是否为被导入的模块内容
itchat(微信)模块
itchat.auto_login(hotReload=True) ##自动登陆,hotReload(热加载)默认为False,加载上次缓存
itchat.send(‘hello itchat!’, toUserName=’filehelper’) ##微信助手发消息
name = itchat.search_friends(‘周楠’)[0][‘UserName’] ##查找好友的编码
itchat.send(‘Ready Go!!’, toUserName=name) ##给指定好友发消息
itchat.get_friends ##查看好友信息,包括自己的;第一个索引就是用户自己的信息
itchat.get_chatrooms ##新建群聊
1
2
3
4
5
6
7
8
2.微信简易自动回复
import itchat
@itchat.msg_register(itchat.content.TEXT) ##装饰器,自动回复消息
def test(msg): ##msg是字典类型,封装的是好友发送的信息
test = msg[‘Text’] ##key:Text对应的value值为信息内容
FromUser = msg[‘FromUserName’] ##FromUserName:发送信息的好友
if ‘age’ in test:
res = ‘20’
# return ‘20’
elif ‘hello’ in test:
res = ‘hello’
# return ‘hello’
else:
res = ‘Get away…’
# return ‘Get away…’
itchat.send(res, toUserName=FromUser)
itchat.auto_login(hotReload=True) ##自动登陆
itchat.run() ##运行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
3.聊天内容出现的图片、视频保存
import itchat
@itchat.msg_register(itchat.content.PICTURE, itchat.content.VIDEO)
def download(msg): ##装饰器,接收图片、视频
msg.download(msg[‘filename’]) ##采用download内置方法下载
with open(msg['filename'],'wb') as f : ##open函数,写入图片或视频
f.write(msg['filename'])
itchat.auto_login(hotReload=True)
itchat.run()
1
2
3
4
5
6
7
8
9
10
11
包 Package
一、包的目的
为了避免模块名冲突,Python 又引入了按目录来组织模块的方法,称为包(Package)
二、包的管理
1.创建包
创建一目录为包名;
在该文件夹下创建_init_.py文件存放包的信息,该文件可以为空;
根据需要存放脚本文件,已编译的扩展及子包;
可以用import,import as,from import等语句导入模块和包;
2.作用域
在 Python 中,是通过 _ 前缀来限制变量的使用范围,即作用域:
比如author , name就是特殊变量的,func,__fun为私有函数,不能直接引用
3.包的调用
包里的自定义脚本test:
x = 10
y = 20
def add(a, b):
return a + b
def power(i, j=3):
return i ** j
if name == ‘main‘: ##测试
print(add(2, 4))
print(power(2, 4))
1
2
3
4
5
6
7
8
9
10
11
12
第1种调用方式:
import pick01.test ##调用时需要‘绝对路径’
import pick01.test
pick01.test.add(2,5)
7
1
2
3
4
第2种调用方式:
from pick01 import test ##调用时,‘路径’短一些
from pick01 import test
test.power(4)
64
1
2
3
4
第3种调用方式:
from pick01.test import add ##调用时,‘路径’最短
from pick01.test import add
add(1,5)
6
1
2
3
4
重要:包的调用,最常用的
对_init_.py进行编辑:
from .test import * ##导入当前路径下test模块的所有信息
1
再次调用pick01包:
import pick01
print(pick01.x) ##可直接使用test的所有内置信息
print(pick01.add())
print(pick01.power())