1、初识函数
函数,可以当作是一大堆功能代码的集合
def 函数名():
函数内编写的代码
...
...
函数名()
举个例子
# 定义名称为info的函数
def info():
print('第一个')
print('第二个')
print('第三个')
info() ## 执行函数内的代码
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
mail_host = 'XXX'
mail_user = 'XXX'
mail_pass = 'XXX'
sender = 'XXX'
receivers = sender
msg_string = 'TEXT邮件'
msg_html = '<p>Python 发送邮件测试</p>'
message = MIMEText(msg_html,'html','utf-8')
message['Subject'] = '测试主题'
message['From'] = '发件人邮箱地址'
message['To'] = '收件人邮箱地址'
try:
smtp_sh = smtplib.SMTP()
smtp_sh.connect(mail_host,25)
smtp_sh.login(mail_user,mail_pass)
smtp_sh.sendmail(sender,receivers,message.as_string())
smtp_sh.quit()
print('send success')
except smtplib.SMTPException as e:
print('send error',e)
2、函数的参数
2.1 参数
#### 定义三个参数的函数(A1/A2/A3 一般称为形式参数----形参)
def func(a1,a2,a3):
print(a1,a2,a3..)
### 执行函数并传入参数(执行函数传值一般为实际参数---实参)
func(11,22,33)
### 执行函数并传入参数
func(9,22,103)
-
位置参数
def add(n1,n2,n3): print(n1+n2+n3) add(10,n2=9,n3=10) add(10,n3=9,n2=10) ## 如果一开始就设置了位置参数,后面的参数也不许设置位置 add(n1=10,n3=9,n2=10) ## 正确 add(n1=10,9,n2=10) ## 错误
2.2 默认参数
def func(a1,a2,a3=99):
print(a1+a2+a3)
# 位置参数
func(8,9)
func(1,2,88)
2.3 动态参数
def func(*args):
print(args)
func(22)
func(22,99)
func(22,99,22,.....)
- **
def func(**kwargs):
print(kwargs)
func(n1='feifei')
func(n1='feifei',age=18)
func(n1='feifei',age=18,email='xx@huawei.com')
-
,*
def func(*args,**kwargs): print(args,kwargs) func(22,33,99) func(n1='feifei',age=18) func(22,33,99,n1='feifei',age=18,email='xx@huawei.com')
提示: 字符串格式化时在这里的应用,,format方法
两个* 的必须在后面,一个*的必须在前面
混合参数的时候,动态参数必须在后面
默认参数和动态参数同时存在,默认值一定要在两个*的参数前面即可
2.4 函数返回值
可以帮助我们反馈结果
def func():
return 666
res = func()
print(res) ### 666
def magic(num):
result = num +1000
return result
data = magic(9)
print(data)
返回值的三个关键知识点
-
返回值可以是任意形式,如果函数内没有写return,就返回默认none
def func(): return [1,True,(11,22)] result = func() print(result) ## 1,True,(11,22) def func(): value = 1+1 ret = func() print(ret) ## none
-
函数中没有写返回值,或者return 或者 return none ,执行函数获取的返回值都是None
-
return 后面的值如果有逗号,则默认返回值会转换为元组再返回
def func(): return 1,2,3 vaule = func() print(value) # (1,2,3)
-
函数运行过程中,一旦遇到return就会立即退出函数,(终止函数中的所有代码)
def func(): print(1) return 1 print(2) res = func() print(res) # 只输出1,不会输出2
总结
-
完成某个结果并期望得到某个结果的时候。
def send_email(): ... return True v1 = send_email() def encrypt(old): ... return "密文..." data = encrypt('需要加密的内容') print(data) ## 就会输出一个源文件的密文
-
基于return 控制让函数终止运行
def func(name): with open('xxx.txt',mode='r',encoding='utf-8') as file_object: for line in file_object: if name in line: return True data = func('xxx') 判断是否存在数据XXX if data: print('存在') else: print('不存在')
def foo(): while True: number = input('请输入一个数字') if number.upper() == 'Q': return '程序退出' number = int(number) if num == 99: print('对了') else: print('error') foo()