整体总结

模块导入的定义,作用及使用

## 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.统计你的好友男女比例

 ##我们知道,在微信中第一个好友是自己,其余是好友

python module 是否存在 python in module_自定义

执行此程序后会跳出一个二维码,扫码登陆后会显示你的昵称和好友中的男女比列 (此处的 ‘other‘ 是指好友中没填写性别的人)

python module 是否存在 python in module_python module 是否存在_02

如果想要查看好友的其他信息,则打印出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("不好玩")                 程序到此处,完成了电脑和图灵机器人的交互

假如要执行电脑和图灵机器人的交互,则将前面三个‘#’取消,并将后面代码注释   如下

python module 是否存在 python in module_自定义_03

# 时刻监控好友发送的文本消息, 并且给予一个回复,
# 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( )

文中#代表的是注释和可加内容,系统默认不执行

具体程序执行如下:

python module 是否存在 python in module_自定义_04

 

python module 是否存在 python in module_图灵机器人_05

结果......自动回复很有趣

python module 是否存在 python in module_python module 是否存在_06

4.给指定好友发送消息

 

python module 是否存在 python in module_图灵机器人_07

这是个死循环,每隔一秒给好友 ‘ 高超文‘ 发送’ hello ‘       (狂轰滥炸型,见谁不爽就给他发)

5.生成二维码

此处程序较简单

python module 是否存在 python in module_Python_08

执行程序后扫描二维码会显示‘ 爱就像..............',想要显示什么,自己手动改就行。

小插曲

******模块默认的查找路径

import   sys

模块的查找顺序:内存中已经加载的模块---> 内置模块  >  sys.path目录里面的模块.

内存中已经加载的模块:

            sys.modules查看,python解释器启动时默认会加载的模块内容.

注意:

            自定义模块千万不要和内置模块冲突   (名称不要一样)

print(sys.path)     此处是系统默认查找路径顺序

6.os模块的讲解

  import     itchat

  import     os

  ***在linux里面执行shell命令

1.第一种方式:可以判断命令是否执行成功;返回值为0,成功,否则失败。

python module 是否存在 python in module_自定义_09

第一个命令 ‘hostname’ 为显示主机名     我的是‘sss’     执行成功 ; 第二个命令不存在,所以执行失败

python module 是否存在 python in module_python module 是否存在_10

2.第二种方式:用来保存命令的执行结果

python module 是否存在 python in module_python module 是否存在_11

此时只输出命令结果,如果命令不存在,则为空

python module 是否存在 python in module_自定义_12

3.os模块与文件传输系统   (手机执行shell命令)

将微信聊天机器人程序的中间代码改为如下:

python module 是否存在 python in module_图灵机器人_13

再执行

实验:首先给助手发送‘ ok’ , 第二次发送‘ ls’

python module 是否存在 python in module_自定义_14

因为 ‘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     *                  这里*代表所有