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()