Python-----模块与包

本文介绍了Python中的模块和包的使用,包括random和functools模块的示例,以及os模块在Linux中执行shell命令的方法。还讨论了Python包的创建步骤,并展示了如何导入和使用包。同时,提到了作用域的概念以及安装第三方模块的方式,如使用pip。最后,文章还涉及了微信聊天机器人的实现和模块搜索路径的介绍。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.模块的使用

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)))                                  # 打乱顺序

import  functools
functools.reduce(lambda  x,y: x+y, range(10))

1.模块

在python中,一个 . py文件就称为之为一个模块(Module)

大大提高了代码的可维护性

编写代码不必从零开始,当一个模块编写完毕,就可以被其他地方引用;

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

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

import  os

 

系统目录间的分隔符,
       Linux: /var/log/messages
       Windows: C:\\Project\hello.py
import itchat

print(os.path.sep)

 在Linux里面执行shell命令
【1】 第一种方式: 可以判断命令是否执行成功; 返回值为0, 执行成功, 返回值不为0, 执行失败
res = os.system('hostnam1e')
print("res:", res)

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

需求: 当文件助手发送消息, 执行发送的内容,
如果执行成功, 【显示执行成功】:执行结果

反之, 显示执行失败 .
@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')
if __name__ == "__main__":
    itchat.auto_login(hotReload=True)
    itchat.run()

 

2.包

创建包的步骤:创建一目录为包名;

                            在该文件夹下创建_int_.py文件存放包的信息,该文件可以为空;

                             根据需要存放脚本文件,已编译的扩展及子包;

                              可以用 import,import   as,from  import等语句导入模块和包;

 当import导入包时, 实质时执行包里面的__init__.py文件

myTimeit模块程序为:


import  pack01.myTimeit
@pack01.myTimeit.timeit
 def fun():
     return "hello"
 fun()

 from pack01.myTimeit import  timeit as atime
 @atime
 def fun():
     return  "hello"
 fun()

from pack01.myTimeit import  *

 

3.作用域

在一个模块中,我们可能会定义多个函数和变量,有的变量和函数我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。在python中,是通过_前缀来实现。比如_author_,_name_就是特殊变量的,_func_,_fun为私有函数,不能直接引用。

4.安装第三方模块

需要联网

通过setuptools这个工具完成

pip install 包名或pycharm中安装

第三方模块的使用

import itchat
import time
import random

itchat.auto_login(hotReload=True)

while True:
1. 给手机助手发送消息
     itchat.send('hello', toUserName="filehelper")
     itchat.send_file('/etc/passwd', toUserName='filehelper')
     time.sleep(random.randint(1, 3))

2. 统计你的好友的男女比例
friends是一个类似列表的数据类型, 其中第一个是自己的信息, 除了第一个之外是你的好友信息.
friends = itchat.get_friends()

info = {}  # 'male':1, 'female':, 'other':
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)

3.微信聊天机器人

import random

import  itchat
import  requests
import time

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, type(res))                                              # 给用户返回的内容
     print(res['text'])
    return res['text']                              

@itchat.msg_register(itchat.content.TEXT, isFriendChat=True)
def text_reply(msg):
    content = msg['Content']                        # 将好友的消息发送给机器人处理, 处理结果就是返回给好友的消息
    returnContent = get_tuling_response(content)
     return  returnContent
    itchat.auto_login(hotReload=True)
    itchat.run()

给指定好友发送消息

import itchat
import time

itchat.auto_login(hotReload=True)           # 根据好友的昵称查找好友的信息, 返回值为列表, 有多个元素;
res = itchat.search_friends("向杰")         # 通过索引获取该好友的详细信息(字典数据类型)
xiangJieInfo = res[0]['UserName']
while True:
    itchat.send("hello", toUserName=xiangJieInfo)
    time.sleep(3)

import  itchat
import  requests
import time

微信聊天机器人
def get_response(_info):
    print(_info)                                       # 从好友发过来的消息
    api_url = 'http://www.tuling123.com/openapi/api'   # 图灵机器人网址
    data = {
        'key': '5ea0f11b5b6146239c52a47849387484',     # 如果这个 apiKey 如不能用,那就注册一次
        'info': _info,                                 # 这是我们从好友接收到的消息 然后转发给图灵机器人
        'userid': 'wechat-robot',                      # 这里你想改什么都可以
    }
    r = requests.post(api_url, data=data).json()       # 把data数据发
    print(r.get('text'))                               # 机器人回复给好友的消息
    return r


@itchat.msg_register(itchat.content.TEXT)
def text_reply(msg):
    return "【我是robot】" + get_response(msg["Text"])["text"]

if __name__ == '__main__':
    itchat.auto_login(hotReload=True)                  # hotReload = True, 保持在线,下次运行代码可自动登录
    itchat.run()

生成二维码

import  qrcode
 img = qrcode.make("hello world")
img = qrcode.make("http://www.baidu.com")
img.save("hello.png")

5.模块搜索路径

当我们试图加载一个模块时,python会在指定的路径下搜索对应的.py 文件

默认情况下,python解释器会搜索当前目录,所有已安装的内置模块和第三方模块,搜索路径存放在sys模块的path变量中。

import sys

print(sys.path)

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值