python之初识模块与包

模块

模块的定义

  • Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。

  • 模块让你能够有逻辑地组织你的 Python 代码段。

  • 把相关的代码分配到一个模块里能让你的代码更好用,更易懂。

  • 模块能定义函数,类和变量,模块里也能包含可执行的代码。

  • 包括:内置模块,自定义模块,第三方模块;

#列举一些模块
import getpass   
# getpass.getpass()      #输入密码时时掩饰的密码

import time              #导入时间模块
# time.sleep(2)
# time.time()
# time.ctime()

import  math            #导入数学模块
# math.pow(2,3)

import  os
# print(os.listdir('/var/log/'))      #列出/var/log/

import  random            #产生随即数的
import  string
random.random()
random.randint(1,4)
random.choice('hello')  # 从序列中拿出一个值出来
random.sample(string.ascii_letters + string.digits, 4)  # 从序列中拿出指定个值出来
random.shuffle(list(range(1,10)))   # 打乱顺序

模块的作用

  • 最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。
    当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,
    包括Python内置的模块和来自第三方的模块。

  • 使用模块还可以避免函数名和变量名冲突。
    相同名字的函数和变量完全可以分别存在不同的模块中,
    因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。
    但是也要注意,尽量不要与内置函数名字冲突。

模块的导入

import

  • import导入模块执行的操作:
  • 产生一个新的名称空间;
  • 在新建的名称空间俩面执行模块(.py)的内容
  • 拿到了一个模块名, 执行模块文件产生的名称空间.

import …. as …

 对于导入的模块重命名

from …. import ….

from …. import ….. as ….
从模块里面导入函数, 变量, 装饰器等…..

问题

问题描述:导入模块时, 模块里面执行代码结果也会显示
解决方法:
_ name_, 所在文件没有当作模块导入是, 结果为_ main_;
_ name_, 所在文件被当作模块导入是, 结果为模块的名称;

#在模块中判断模块是否被导入, 如果没有被导入, 则执行下面的代码.
if __name__ == "__main__":
    #就是把模块打印的值写到这里面
    print("这是写好的模块里面的显示.......")zai
    print(timeit(hello))
    print(__name__)

_ _all _ _决定用来控制from xxx import *导入的内容

_ all _ []列表里的是可以被导入的函数或者变量

模块的分类

  • 内置模块(random, string…..)
  • 自定义模块(自己写的模块)
  • 第三方模块(别人写好的模块)

如何安装第三方模块

  • pip3 install 模块名
  • 通过pycharm安装模块

模块的默认搜索路径

  • 模块的查找顺序: 默认情况下,Python 解释器会搜索当前目录、所有已安装的内置模
    块和第三方模块,搜索路径存放在 sys 模块的 path 变量中;内存中已经加载的模块 –> 内置模块 > sys.path目录里面的模块

  • 内存中已经加载的模块 :
    sys.modules查看, python解释器启动式默认会加载的模块内容.
    注意:
    自定义,模块千万不要跟内置模块冲突.

如果不同的人编写的模块名相同怎么办?为了避免模块名冲
突,Python 又引入了按目录来组织模块的方法,称为包(Package)

包的创建过程

  • 创建一目录为包名;
  • 在该文件夹下创建_ _ init _ _.py文件存放包的信息,该文件
    可以为空;导入包时会默认执行_ _ init _ _.py
  • 根据需要存放脚本文件,已编译的扩展及子包;
  • 可以用import,import as,from import等语句导入模块
    和包;

几个有趣的包与模块的应用

itchat实现聊天机器人(指定好友或群)

import requests
import itchat
def get_tuling_response(_info):
    print(_info)
    api_url = "http://www.tuling123.com/openapi/api"   #图灵机器人的网址
    data = {
        'key': '9b17a359ad484b5091f047df01f1e2b7',    #图灵机器人的ip
        'info': _info,
        'userid':'wechat-robot'
    }
    # 发送数据到指定网址,获取网址返回的数据(字典数据类型)
    res = requests.post(api_url, data).json()
    print(res['text'])
    return res['text']             # 给用户返回的内容

def OnlyUser(userstr):             ##获取允许好友或群的UserName
    res1=itchat.search_friends(userstr)
    Onlyinfo=res1[0]['UserName']
    return Onlyinfo
@itchat.msg_register(itchat.content.TEXT,isFriendChat=True,isGroupChat=True)
def text_reply(msg):
    print(msg)
    if msg['FromUserName'] in Onlyname:
        content=msg['Content']              # 获取好友发送消息的内容
        returnContent=get_tuling_response(content)    # 将好友的消息发送给机器人处理, 处理结果就是返回给好友的消息
        return "[I am robot]"  + returnContent     #返回给好友消息
if __name__=='__main__':
    itchat.auto_login(hotReload=True)
    Onlyname = OnlyUser(input("输入指定的好友或群名称:"))
    itchat.run()

这里写图片描述

qrcode生成二维码

import qrcode


# 复杂的生成二维码
def make_code(text):
    #  version是二维码的尺寸,数字大小决定二维码的密度       error_correction:是指误差
    # box_size:参数用来控制二维码的每个单元(box)格有多少像素点
    # border: 参数用控制每条边有多少个单元格(默认值是4,这是规格的最小值
    qr = qrcode.QRCode(version=5,
                       error_correction=qrcode.constants.ERROR_CORRECT_L,
                       box_size=8,
                       border=4,
                       )
    # 添加数据
    qr.add_data(text)
    # 生成二维码
    qr.make(fit=True)
    img = qr.make_image()
    img.show()


# 简单的生成二维码
def make_code_easy(text):
    image = qrcode.make(text)
    image.save("hello.png")
    image.show()
    print("image already save: hello.png")


if __name__ == '__main__':
    text = input("请输入你想说的话:")
    make_code_easy(text)

os模块

在Linux里面执行shell命令

  • 第一种方式: 可以判断命令是否执行成功; 返回值为0, 执行成功, 返回值不为0, 执行失败
    res = os.system(‘hostnam1e’)
    • 第二种方式: 用来保存命令的执行结果
      res = os.popen(‘hostname’).read()
import itchat
import os
@itchat.msg_register(itchat.content.TEXT)
def text_reply(msg):
    if msg['ToUserName']=='filehelper':
        command=msg["Content"]        # 获取要执行命令的内容
        if os.system(command)==0:        #  让电脑执行命令代码    #  如果执行成功, 返回值为0
            res=os.popen(command).read()
            result="执行命令成功,执行结果:\n"+res
            itchat.send(result,'filehelper')
        else:
            result = "命令%s执行失败,请重试" %(command)
            itchat.send(result,'filehelper')           #给文件助手发result
if __name__=='__main__':
    itchat.auto_login(hotReload=True)
    itchat.run()

itchat的一些基本应用

  • 给手机助手发消息
import itchat
import time
import random
itchat.auto_login(hotReload=True)             #扫码登陆
while 1:
    itchat.send("hello",toUserName="filehelper")
    time.sleep(random.randint(1,3))
  • 统计好友的男女比例
import itchat
itchat.auto_login(hotReload=True)
friends=itchat.get_friends()
info={}
for friend in friends[1:]:
    if friend["Sex"]==1:
        info['male']=info.get('male',0)+1
    elif friend["Sex"]==2:
        info['female']=info.get('female',0)+1
    else:
        info['other']= info.get('other',0)+1
print(info)

这里写图片描述

  • 指定好友发消息
import itchat
import time
import random
import string
itchat.auto_login(hotReload=True)
res=itchat.search_friends('陌上花开')     # 根据好友的昵称查找好友的信息, 返回值为列表, 有多个元素;
print(res)
moshanghuaInfo=res[0]['UserName']       # 通过索引获取该好友的详细信息(字典数据类型)
while 1:
    s=random.sample(string.ascii_letters+string.digits,10)
    print(s)
    print(''.join(s))
    itchat.send(''.join(s),toUserName=moshanghuaInfo)
    time.sleep(random.randint(1,5))

这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42635252/article/details/81945294