day10 函数基础
目标:掌握函数的编写方式以及函数的基本使用。
今日概要:
- 初识函数
- 函数的参数
- 函数的返回值
1. 初识函数
1.1 函数到底是什么?
函数,可以理解为一大堆功能代码的集合。
def 函数名():
函数内编写代码
...
...
函数名()
例如:
# 定义名为info的函数
def info():
print("第一行")
print("第二行")
print("第n行...")
info()
1.2 什么时候会用到函数?
一般在项目开发中,函数会有两种应用场景:
1.2.1 有重复代码,用函数提高代码的重用性。
# 定义send_email函数:
def send_email():
...
...
# 开发过程中重复调用函数:
print("欢迎使用计算机监控系统")
if CPU占用率 > 90%:
send_email()
if 硬盘使用率 > 99%:
send_email()
if 内存使用率 > 98%:
send_email()
1.2.2 代码太长,用函数增强代码的可读性。
案例:设计一款炸金花的棋牌游戏
# 1. 生成一副扑克牌
card_color_list = ["红桃", "黑桃", "方片", "梅花"]
card_nums = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
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()
calculate_double_card_rule()
calculate_single_card_rule()
...
# 为每种牌型定义一个函数:
def calculate_same_num_rule():
"""判断是否是豹子"""
pass
def calculate_same_color_rule():
"""判断是否是同花"""
pass
def calculate_straight_rule():
"""判断是否顺子"""
pass
def calculate_double_card_rule():
"""判断是否对子"""
pass
def calculate_single_card_rule():
"""判断是否单牌"""
pass
按照业务功能逻辑从上到下逐步编写代码的方式称为:面向过程编程;现在学了函数之后,利用函数编程的方式称为:函数式编程。
2. 函数的参数
之前说了很好多次发送邮件的案例,下面先教大家用python发邮件,然后再由此引出函数的参数。
- 注册邮箱
- 基础配置
- 授权码
- SMTP服务器: smtp.126.com
- 代码发送邮件
用Python发邮件函数格式如下:
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
### 1.邮件内容配置 ###
msg = MIMEText("你是猪吗?", 'html', 'utf-8')
msg['From'] = formataddr(["轩小陌", "发送人的邮箱地址"])
msg['Subject'] = "你好"
### 2.发送邮件 ###
server = smtplib.SMTP_SSL("smtp.126.com")
server.login("发送人的邮箱地址", "发送人邮箱的授权码")
server.sendmail("发送人的邮箱地址", "收件人的邮箱地址", msg.as_string())
server.quit()
那么如何根据上述代码实现给3个用户发邮件呢?
v1 = "424662501@qq.com"
v2 = "424662220@qq.com"
v3 = "xuanxiaomo@live.com"
基于函数的参数(将代码中动态部分提取到参数位置,让函数可以充分被重用)
def send_email(email):
### 1.邮件内容配置 ###
# 邮件文本
msg = MIMEText("你是猪吗?", 'html', 'utf-8')
# 邮件上显示的发件人
msg['From'] = formataddr(["轩小陌", "发送人的邮箱地址"])
# 邮件上显示的主题
msg['Subject'] = "你好"
### 2.发送邮件 ###
server = smtplib.SMTP_SSL("smtp.126.com")
server.login("发送人的邮