整体总结
模块导入的定义,作用及使用
## 1. 定义
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
模块让你能够有逻辑地组织你的 Python 代码段。
把相关的代码分配到一个模块里能让你的代码更好用,更易懂。
模块能定义函数,类和变量,模块里也能包含可执行的代码。
包括:内置模块,自定义模块,第三方模块;
## 2. 作用
- 最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。
当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,
包括Python内置的模块和来自第三方的模块。
- 使用模块还可以避免函数名和变量名冲突。
相同名字的函数和变量完全可以分别存在不同的模块中,
因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。
但是也要注意,尽量不要与内置函数名字冲突。
## 3. 模块导入
### import
import导入模块执行的操作:
- 产生一个新的名称空间;
- 在新建的名称空间俩面执行模块(.py)的内容
- 拿到了一个模块名, 执行模块文件产生的名称空间.
### import .... as ...
对于导入的模块重命名
### from .... import ....
from .... import ..... as ....
从模块里面导入函数, 变量, 装饰器等.....
##4. 解决问题
问题: 导入模块时, 模块里面执行代码结果也会显示
解决方法:
__name__, 所在文件没有当作模块导入是, 结果为__main__;
__name__, 所在文件被当作模块导入是, 结果为模块的名称;
```cython
# 判断模块是否被导入, 如果没有被导入, 则执行下面的代码.
if __name__ == "__main__":
print("这是写好的模块里面的显示.......")
print(timeit(hello))
print(__name__)
```
##5. __all__决定用来控制 from xxx import * 导入的内容
##6. 模块的分类
- 内置模块(random, string.....)
- 自定义模块(自己写的模块)
- 第三方模块(别人写好的模块)
## 7. 如何安装第三方模块
- pip3 install 模块名
- 通过pycharm安装模块
1.模块使用
impot time 导入时间模块
a=time.time( ) a就是此刻的时间
time.sleep( 2 ) 间隔两秒钟 在执行程序后加入
import random
import string
random.choice(' hello ') 从序列 ‘hello' 中随机拿出一个字母
random.sample (string.ascii_letters + string.digits, x) 从序列中拿出x个值来
random.shuffle( list ( range (1,10 ) ) ) 打乱1到10的排列顺序
import functools
functools.reduce ( lambda x,y: x + y, range(10) ) 求序列1到10的和
2.第三方模块
import itchat 导入itchat模块
import time
import random
itchat.auto_login ( hotReload=True ) 登陆一次后,每次执行命令均自动登陆
1.给手机助手发消息
while True:
itchat.send ('hello', toUserName=' filehelper' ) 发送' hello ' 给手机助手
time.sleep (random,randint (1,3) ) 随机间隔1到3秒发送 是死循环
2.统计你的好友男女比例
##我们知道,在微信中第一个好友是自己,其余是好友
执行此程序后会跳出一个二维码,扫码登陆后会显示你的昵称和好友中的男女比列 (此处的 ‘other‘ 是指好友中没填写性别的人)
如果想要查看好友的其他信息,则打印出firiends即可,即在末尾加入 print(friends)
这是我的..........................
3.微信聊天机器人 (非常interesting。。。。)
首先进入图灵官网,注册一个账号,添加机器人的回复领域.
import itchat
import requests
def get_tuling_response(_info):
print(_info)
图灵机器人的网址
api_url = "http://www.tuling123.com/openapi/api"
data = {
'key': '5ea0f11b5b6146239c52a47849387484',
'info': _info,
'userid':'wechat-robot'
}
# 发送数据到指定网址,获取网址返回的数据(字典数据类型)
res = requests.post(api_url, data).json()
# 给用户返回的内容
print(res['text'])
return res['text']
# get_tuling_response("讲笑话")
# get_tuling_response("不好笑")
# get_tuling_response("不好玩") 程序到此处,完成了电脑和图灵机器人的交互
假如要执行电脑和图灵机器人的交互,则将前面三个‘#’取消,并将后面代码注释 如下
# 时刻监控好友发送的文本消息, 并且给予一个回复,
# isGroupChat=True接收群聊消息中的文本信息, 并让图灵机器人自动回复;
# isMapChat=True接收群聊消息中的文本信息, 并让图灵机器人自动回复;
@itchat.msg_register(itchat.content.TEXT, isFriendChat=True)
def text_reply(msg):
# 需求: 只对固定的群聊消息, 实现机器人聊天.
# 获取好友发送消息的内容
content = msg['Content']
# 将好友的消息发送给机器人处理, 处理结果就是返回给好友的消息
returnContent = get_tuling_response(content)
time.sleep(random.randint(1,10))
return returnContent
if __name__ == "__main__":
itchat.auto_login(hotReload=True)
itchat.run( )
文中#代表的是注释和可加内容,系统默认不执行
具体程序执行如下:
结果......自动回复很有趣
4.给指定好友发送消息
这是个死循环,每隔一秒给好友 ‘ 高超文‘ 发送’ hello ‘ (狂轰滥炸型,见谁不爽就给他发)
5.生成二维码
此处程序较简单
执行程序后扫描二维码会显示‘ 爱就像..............',想要显示什么,自己手动改就行。
小插曲
******模块默认的查找路径
import sys
模块的查找顺序:内存中已经加载的模块---> 内置模块 > sys.path目录里面的模块.
内存中已经加载的模块:
sys.modules查看,python解释器启动时默认会加载的模块内容.
注意:
自定义模块千万不要和内置模块冲突 (名称不要一样)
print(sys.path) 此处是系统默认查找路径顺序
6.os模块的讲解
import itchat
import os
***在linux里面执行shell命令
1.第一种方式:可以判断命令是否执行成功;返回值为0,成功,否则失败。
第一个命令 ‘hostname’ 为显示主机名 我的是‘sss’ 执行成功 ; 第二个命令不存在,所以执行失败
2.第二种方式:用来保存命令的执行结果
此时只输出命令结果,如果命令不存在,则为空
3.os模块与文件传输系统 (手机执行shell命令)
将微信聊天机器人程序的中间代码改为如下:
再执行
实验:首先给助手发送‘ ok’ , 第二次发送‘ ls’
因为 ‘ok‘ 是无效命令,所以手机会显示‘命令ok执行失败,请重试’ 电脑显示找不到;
‘ ls ’是有效命令,所以会执行命令
7.导入自定义模块
import
from .......... import........
import ........as.............
当 import 导入包时,实质是执行包里面的__init__.py文件
例如:import Pack01.myTimeit *******导入Pack01包里的myTimeit文件
@Pack01.myTimeit.timeit *******调用文件内的timeit模块
或者写为:from Pack01.myTimeit import timeit
@timeit
调用myTimeit文件内的所有函数
from Pack01.myTimeit import * 这里*代表所有