python函数的基础理论 | 使用smtplib模块和email模块发送邮件

2025-06-24T01:30:00

python函数的基础理论 | 使用smtplib模块和email模块发送邮件

导读

  • 函数规则

    • 函数名+函数体
    • 自定义名称
  • 函数参数
  • 函数返回值

面向过程编程

  • 从上到下,依次完成功能

函数式编程

把代码封装进函数

目的

  • 减少重复代码
  • 增加可读性

    • 函数尽量维持一屏

函数参数

案例

  • 邮箱发送 126

    • 登录/注册 邮箱
    • 获取授权码
    • 获取smtp地址
    #发送三封邮件
    send_email_list = ['[email protected]','[email protected]','[email protected]']
    
    for send_email in send_email_list:
        import smtplib
        from email.mime.text import MIMEText
        from email.utils import formataddr
    
        # 设置邮件,内容,主题,来源
        # 内容
        msg = MIMEText('嗨嗨嗨', 'html', 'utf-8')
        msg['From'] = formataddr(['大佬', '[email protected]'])
        msg['Subject'] = '我是大佬'
    
        # 设置邮箱,登录,地址,发送操作
        sever = smtplib.SMTP_SSL('smtp.126.com', 465)
        sever.login('[email protected]', '1145141919810')
        sever.sendmail('[email protected]', '[email protected]', msg.as_string())
        sever.close()
  • 优化过程

    • 顺序执行
    • 多函数自定义
    • 填入参数

参数类型

  • 形参
  • 实参

传参方式

  • 顺序传参

    random_func(11,22,33)
  • 关键字传参

    random_func(aa=1,bb=2,cc=3)
顺序传参与关键字传参可混用,关键字传参需在最后,不可包夹
random_func(1,2,cc=3)
  • 默认参数

    默认参数可以北顺序传参
    open(path,mode=rt,encodeing='utf-8') #mode与encoding都是默认参数

动态参数

  • 以元组存储

    顺序传参
    def tuple_func(*args):
        sum_a = 0
        for i in args:
            i = int(i)
            sum_a += i
        print(sum_a)
    tuple_func(1, 2, 3,4)
  • 以字典存储

    关键字传参
    def dict_func(**kwargs):
        data = ''
        for i in kwargs:
            data = data + i
    
        print(data)
    
    dict_func(name='alex',gender='男',phone='188177')
可混合使用,代表为format
a = '我的名字是{},我的电话是{},我来自{}'.format('eric','188177','us')
print(a)
b = '我的名字是{name},我的电话是{phone},我来自{country}'.format(name = 'eric',phone = '188177',country = 'us')
print(b)
def random_func(*args,**kwargs)
    pass

random_func(22,33,44,name = 'alex',gender = '男')

补充

  • 动态参数args,kwargs 可自定义
  • *在后面
  • 参数在动态参数前面
  • 所有参数都在**前面
  • 顺序传参结束后关键字穿参
  • 最优,参数,默认参数,动态参数(元组),最后字典

函数返回值

代码使用return返回值
def plus_func(a=5):
    data = a+1000
    return data

i = plus_func(10)
print(i)

返回主体

  • return返回任意类型

    • list tuple,bool,str,set,dict
  • return不写默认返回None

    • 单独retrurn同理
    • return None 也可
  • 函数返回多个值的形式是元组
  • 函数中遇到return即刻中止

应用场景

  • 返回结果

    #加密内容
    def encrypt(source_info):
        pass
        rerturn encrypt
    #判断真假
    def ture_or_false():
        pass
        return bool
  • 控制过程(函数内return替代break)

    def guess_num():
        while True:
            user_input = input("Enter a number: (Q/q)").strip()
            if user_input.upper() == "Q":
                return
            user_input = int(user_input)
            if user_input >99:
                print("That's too high!")
            elif user_input < 99:
                print("That's too low!")
            else:
                print("That's right!")
    
    guess_num()
当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »