python中的模块与包

一、模块

1.定义
为了便于代码维护,一般很多函数分组,分别放到不同的文件里,每个文件包含的代码就相对较少,维护也更方便。在Python中,一个.py文件就称之为一个模块(Module)。
Python中模块分为三种: Python标准库、第三方模块、应用程序自定义模块。
使用模块可以帮助避免函数与其他模块函数重名,函数名与变量名重名的问题。
此外,要尽量避免定义的模块名与内置函数(build in function)重名。

在这里插入图片描述
注:导入模块实际上就是执行python文件的过程
2.引用模块
从包中引入模块有如下两种方式:
方法一、import …

import ..模块名

方法二、from … import …

from  import 模块名
from 模块名 import 变量名/函数名

举例:
创建模块:
在这里插入图片描述
调用模块:
在这里插入图片描述

二、包

为了避免模块名冲突,Python引入了按目录来组织模块的方法,称为包(Package)。
无论是import形式还是from…import,凡是在导入语句中(而不是在使用时)遇到带点的,都要第一时间提高警觉:这是关于包才有的导入语法,点的左边都必须是一个包。
包的本质就是一个包含__init__.py文件的目录。
需要注意的是from后import导入的模块不能带点,否则会有语法错误,如:from a import b.c是错误语法
1. init.py
无论使用import还是from import,只要是第一次导入包或者是包的任何其他部分,都会依次执行包下的__init__.py文件。
2.模块中的__all__有什么作用?
如果一个文件中有all变量,那么也就意味着没有在这个变量中的元素,不会被from 模块名 import * 导入。
3.模块中的__name__ == 'main’有什么作用?
判断当前代码是否是被其他代码导入的,如果不是则执行里面的内容。
4.如果要把一个模块中的所有内容全部导入该如何操作?
from 模块名 import *
这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多使用

三、自动化发送邮件

需要安装yagmil模块和schedule模块
注:可以通过pip install yagmail 和pip install schedule 来安装这两个模块
代码:

import yagmail
def send_mail(sender='1209196522@qq.com', password=None,
              receivers=None, subject='发邮件',
              contents=None, attaches=None, host='smtp.qq.com'):
    try:
        mail = yagmail.SMTP(user=sender, password=password, host=host)
        mail.send(to=receivers, subject=subject, contents=contents, attachments=attaches)

    except Exception as e:
        print("发送邮件失败,失败的原因是:", e)
    else:
        print("[主题:%s]邮件发送成功" % (subject))


if __name__ == '__main__':
    import schedule

    password ='wgrsolyoxkejbaei'
    boss = ['1209196522@qq.com','761135372@qq.com']
    friends = ['1209196522@qq.com','761135372@qq.com']
    subject ="邮件报警:磁盘已使用90%"
    contents =['邮件告警', "<h1 style='color:red'>磁盘已使用90%</h1>"]
    attches = ['game.py']

    schedule.every(2).seconds.do(send_mail, password=password,
                                receivers =boss + friends,
                                subject=subject,
                                contents=contents,
                                attaches=attches)
    while True:
        schedule.run_pending()

测试:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值