在Python中,定义一个函数要使用def
语句,依次写出函数名、括号、括号中的参数和冒号:
然后,在缩进块中编写函数体,函数的返回值用return
语句返回。
1、定义一个函数
def myfirst(): print("Hello world!") myfirst() #输出结果 Hello world!
2、定义发送邮件的函数
# 不接收用户指定邮箱的函数 #!/usr/bin/env python # -*- conding:utf-8 -*- import smtplib from email.mime.text import MIMEText from email.utils import formataddr def mail(): msg = MIMEText('邮件内容', 'plain', 'utf-8') msg['From'] = formataddr(["evescn", '18111434862@163.com']) msg['To'] = formataddr(["gmkk", '519518995@qq.com']) msg['Subject'] = "主题" server = smtplib.SMTP("smtp.163.com", 25) server.login("18111434862@163.com", "XXXXXX") server.sendmail('18111434862@163.com', ['519518995@qq.com', ], msg.as_string()) server.quit() mail()
# 用户可以指定邮箱的函数 #!/usr/bin/env python # -*- conding:utf-8 -*- import smtplib from email.mime.text import MIMEText from email.utils import formataddr def mail(mails): msg = MIMEText('邮件内容', 'plain', 'utf-8') msg['From'] = formataddr(["evescn", '18111434862@163.com']) msg['To'] = formataddr(["gmkk", mails]) msg['Subject'] = "主题" server = smtplib.SMTP("smtp.163.com", 25) server.login("18111434862@163.com", "XXXXXX") server.sendmail('18111434862@163.com', [mails, ], msg.as_string()) server.quit() mail('519518995@qq.com')
3、函数的参数个数
- 无参
- 一个参数
- 两个参数
- ……
- 动态参数
4、举例
# 无参函数 def show(): print('a') return [11, 22, ] print('b') show() # 输出结果 a
# 一个参数 def show(arg): print(arg) n = [11, 22, 33, 44] show(n) # 输出结果 [11, 22, 33, 44]
# 两个参数 def show(arg, xxx): print(arg, xxx) show('evescn', 'gmkk') # 输出结果 evescn gmkk
# 默认参数,必须写在实参之后 def jiecheng(arg, n=2): print(arg ** n) jiecheng(2) jiecheng(2, 3) # 输出结果 4 8
# 指定参数 def show(a1,a2): print(a1,a2) show(123, 999) show(a2=123, a1=999) # 输出结果 123 999 999 123
# 动态参数 # 传入参数为列表 OK? def show(*arg): # 把所有参数转为了元组 print(arg, type(arg)) show(1,2,3,4,5,6,7,8) # 输出结果 (1, 2, 3, 4, 5, 6, 7, 8) <class 'tuple'>
# 动态参数 # 传入参数为字典 OK? def show(**arg): # 把所有参数转为了字典 print(arg,type(arg)) show(n1=1,n2=2,n3=3,n4=4,) # 输出结果 {'n4': 4, 'n3': 3, 'n1': 1, 'n2': 2} <class 'dict'>
# 实参、一个*的动态参数、两个*的动态参数 # 定义是先放变量,在放一个*的参数,在放**的参数 def show(a1, *args, **kwargs): print(a1) print(args, type(args)) print(kwargs, type(kwargs)) show(11, 22, 33, 44, n1=99, n2=88, n3=77) # 输出结果 11 (22, 33, 44) <class 'tuple'> {'n3': 77, 'n1': 99, 'n2': 88} <class 'dict'>
# 仔细对比2次的输出结果,对于创建的列表和字典,传给函数时需指定传递给那个变量 def show(*args, **kwargs): print(args,type(args)) print(kwargs, type(kwargs)) a1=[11, 22, 33, 44] a2={'n1': 99, 'n2': 88, 'n3': 77} show(a1, a2) show(*a1, **a2) #输出结果 ([11, 22, 33, 44], {'n3': 77, 'n2': 88, 'n1': 99}) <class 'tuple'> {} <class 'dict'> (11, 22, 33, 44) <class 'tuple'> {'n3': 77, 'n2': 88, 'n1': 99} <class 'dict'>
# format函数,如何给farmat函数传递参数 s1 = "{0} to {1}" l = ['evescn','gmkk'] ret1 = s1.format(*l) ret2 = s1.format('evescn','gmkk') print(ret1) print(ret2) s1 = "{name} to {acter}" l = {'name':'evescn', 'acter':'gmkk'} ret1 = s1.format(**l) ret2 = s1.format(name='evescn', acter='gmkk') print(ret1) print(ret2) # 输出结果 evescn to gmkk evescn to gmkk evescn to gmkk evescn to gmkk