背景

在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下:

while True:
    if cpu利用率 > 90%:
        #发送邮件提醒
        连接邮箱服务器
        发送邮件
        关闭连接
   
    if 硬盘使用空间 > 90%:
        #发送邮件提醒
        连接邮箱服务器
        发送邮件
        关闭连接
   
    if 内存占用 > 80%:
        #发送邮件提醒
        连接邮箱服务器
        发送邮件
        关闭连接


函数小练习

#!/usr/bin/env python
#_*_ coding:utf-8 _*_
#def 关键字   定义函数名mail
def mail():
    n = 123
    n += 1
    print(n)

mail()
f = mail
f()


发送邮件实例

#!/usr/bin/env python
#_*_ coding:utf-8 _*_

import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr

def mail():
    ret = True
    try:
        msg = MIMEText('邮件内容', 'plain', 'utf-8')
        msg['From'] = formataddr(["叶飞",'yefei@51rz.com'])
        msg['To'] = formataddr(["走人",'384526074@qq.com'])
        msg['Subject'] = "主题"

        server = smtplib.SMTP("smtp.exmail.qq.com",25)
        server.login("yefei@51rz.com", "邮箱密码")
        server.sendmail('yefei@51rz.com', ['384526074@qq.com',], msg.as_string())
        server.quit()
    except Exception:
        ret = False
    #reture  返回值
    return  ret

ret = mail()
if ret:
    print('发送成功')
else:
    print('发送失败')

函数普通参数

def mail(user):     
    ret = True
    try:
        msg = MIMEText('邮件内容', 'plain', 'utf-8')
        msg['From'] = formataddr(["叶飞",'yefei@51rz.com'])
        msg['To'] = formataddr(["走人",'384526074@qq.com'])
        msg['Subject'] = "主题"

        server = smtplib.SMTP("smtp.exmail.qq.com",25)
        server.login("yefei@51rz.com", "邮箱密码")
        server.sendmail('yefei@51rz.com', [user,], msg.as_string())
        server.quit()
    except Exception:
        ret = False
    return  ret

ret = mail('384526074@qq.com')
if ret:
    print('发送成功')
else:
    print('发送失败')


默认函数  指定函数

#无参数

# show():-- > show()


#一个参数
#def show(arg):
#    print(arg)

#show('kkkkkkkk')

#两个参数
#def show(arg,xxx):
 #   print(arg,xxx)

#show(1111,2222)

#默认参数  必须放在最后
#def show(a1,a2=999):
 #   print(a1,a2)

#show(1111)
#show(1111,22222)

#指定参数
def show(a1,a2):
    print(a1,a2)
show(a2=123,a1=9999)


函数的动态参数


def show(*arg):
    print(arg,type(arg))
show(1,2,3,4)
#默认一个*号 是元祖

def show(**arg):
    print(arg,type(arg))
show(n1 = 78,uu=123,bb=999)
#两个*号 是字典

结合使用
def show(*args,**kwargs):
    print(args,type(args))
    print(kwargs,type(kwargs))

#添加一个列表元素 和一个字典
l = [11,22,33,44]
d = {'n1':88,'alex':'sb'}

show(*l,**d)

format用法

s1 = "{name} is {acter}"
d = {'name':'alex','acter':'sb'}
#result = s1.format(name='alex',acter='sb')
result = s1.format(**d)
print(result)