一、初识函数
函数,可以当做是一大堆功能代码的集合。
def 函数名():
函数内编写代码
...
...
函数名()
例如:
# 定义名字叫info的函数
def info():
print("第一行")
print("第二行")
print("第n行...")
info()
运用函数的场景:
1. 有重复代码,用函数增加代码的重用性
def send_email():
# 10行代码
print("欢迎使用计算机监控系统")
if CPU占用率 > 90%:
send_email()
if 硬盘使用率 > 99%:
send_email()
if 内存使用率 > 98%:
send_email()
...
2. 代码太长,用函数增强代码的可读性
"""判断是否是豹子"""
pass
def calculate_same_color_rule():
"""判断是否是同花"""
pass
def calculate_straight_rule():
"""判断是否顺子"""
pass
def calculate_double_card_rule(poke_list):
"""判断是否对子"""
pass
def calculate_single_card_rule():
"""判断是否单牌"""
pass
# 1. 生成一副扑克牌
card_color_list = ["红桃", "黑桃", "方片", "梅花"]
card_nums = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] # A
all_card_list = [[color, num] for color in card_color_list for num in card_nums]
# 2.洗牌
random.shuffle(all_card_list)
# 3.给玩家发牌
...
# 4.判断牌是:豹子?同花顺?顺子?对子?单点?
calculate_same_num_rule()
calculate_same_color_rule()
calculate_straight_rule()
...
以前我们变成是按照业务逻辑从上到下逐步完成,称为:面向过程编程;现在学了函数之后,利用函数编程称为:函数式编程。
二、函数的参数
-
注册邮箱(一般使用网易邮箱)
-
基础配置
- 授权码
- SMTP服务器: smtp.126.com或者smtp.163.com
-
代码发送邮件
开启后,保留好授权码
记住SMTP服务器的地址:
以下是提供的发邮件的一个函数:
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
# ### 1.邮件内容配置 ###
msg = MIMEText("邮件内容", 'html', 'utf-8') # 第一个位置为邮件内容
msg['From'] = formataddr(["发件人", "发件人邮箱@163.com"]) # 邮件顶部会显示发件人(谁发来的邮件),发件人邮箱
msg['Subject'] = "主题" # 邮件主题
# ### 2.发送邮件 ###
server = smtplib.SMTP_SSL("smtp.163.com")
server.login("自己邮箱", "授权码") # 第一个位置为自己的邮箱,第二个位置为授权码
server.sendmail("自己邮箱", "收件人邮箱", msg.as_string()) # 第一个位置为自己的邮箱,第二个为收件人邮箱(可跨邮箱),
server.quit()
需求:根据上述代码实现给3个用户发邮件
v1 = "a@qq.com"
v2 = "b@qq.com"
v3 = "c@live.com"
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
def send_email(xx):
# ### 1.邮件内容配置 ###
msg = MIMEText("你好", 'html', 'utf-8')
msg['From'] = formataddr(["张三", "zhangsan@163.com"])
msg['Subject'] = "hello"
# ### 2.发送邮件 ###
server = smtplib.SMTP_SSL("smtp.163.com")
server.login("zhangsan@163.com", "JXTSQRBCBYVNNSUE")
server.sendmail("zhangsan@126.com", xx, msg.as_string())
server.quit()
send_email("a@qq.com")
send_email("b@qq.com")
send_email("c@live.com")
【1】思路1
此方法繁琐:
# 写send_email1函数,让send_email1代指发邮件功能
def send_email1():
# ### 1.邮件内容配置 ###
# 邮件文本
msg = MIMEText("你好", 'html', 'utf-8')
# 邮件上显示的发件人
msg['From'] = formataddr(["张三", "zhangsan@163.com"])
# 邮件上显示的主题
msg['Subject'] = "邮件主题"
# ### 2.发送邮件 ###
server = smtplib.SMTP_SSL("smtp.163.com")
server.login(<