#coding:utf-8
#定义函数
def mail():
print("hello world")
#调用,两种都可以
mail()
f = mail
f()
#函数执行顺序(遇到return关键字,则中断函数,不在继续执行函数内容了)
def show():
print("a")
return [11,22]
print("b")
ret = show()
print(ret) #不再输出"b"
# a
# [11, 22]
#函数返回值
def mail():
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 第三方 SMTP 服务
mail_host = "smtp.qiye.163.com" # 设置服务器
mail_user = "luolin.luo@wearetechman.com" # 用户名
mail_pass = "pwd@4735" # 口令
sender = 'luolin.luo@wearetechman.com' # 发送
receivers = ['729414559@qq.com'] # 接收
# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')
message['From'] = Header("测试接收", 'utf-8')
message['To'] = Header("测试发送", 'utf-8')
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host,25)
smtpObj.login(mail_user, mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
return "邮件发送成功" #函数返回值
except smtplib.SMTPException:
return "Error:无法发送邮件" #函数返回值
#执行函数(并获取返回值,如果函数没有定义返回值则返回"None")
ret = mail()
print(ret)
#函数的普通参数,形参
def mail(user):
#给多个用户发送邮件
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 第三方 SMTP 服务
mail_host = "smtp.qiye.163.com" # 设置服务器
mail_user = "luolin.luo@wearetechman.com" # 用户名
mail_pass = "pwd@4735" # 口令
sender = 'luolin.luo@wearetechman.com' # 发送
receivers = [user,] #user为传递进来的参数(收件人)
# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')
message['From'] = Header("测试接收", 'utf-8')
message['To'] = Header("测试发送", 'utf-8')
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host,25)
smtpObj.login(mail_user, mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
return "邮件发送成功"
except smtplib.SMTPException:
return "Error:无法发送邮件"
#接收邮件列表
user_list = ['729414559@qq.com','316374573@qq.com']
#循环发送
for n in user_list:
ret = mail(n) # 调用函数时给函数定义的形参(user)传递一个值
print(ret)
#函数的默认参数
#无参数:
#show(): -->show()
#一个参数:def show(arg): print(arg)show("ssss")
#两个参数:def show(arg,bbb): print(arg)show("ssss","dfs")
#默认参数(形参加个"="号就是默认参数。默认参数一定要放在参数的后面)def show(a1,a2=999): print(a1,a2)#show(111) #调用时只传递了一个参数show(111,888) #调用时给默认参数传参,会把默认参数覆盖
#指定参数
def show(a1,a2):
print(a1,a2)
show(a2=111,a1=888) #调用时候,直接指定参数给形参传递值
#函数的动态参数
def show(*arg): #*arg表示传入一个元组
print(arg)
print(type(arg))
show(1,2,3,"age")
def show(**arg): #**arg表示传入一个字典(格式为:key=value)
print(arg)
print(type(arg))
show(n1=78,n2="name")
def show(*args,**kwargs): #同时传入元组和字典数据,(*args表示元组,**kwargs表示字典)
print(args,kwargs)
print(type(args),type(kwargs))
show(1,2,3,"你好",n1=78,n2="name")
#它自动会把元组和字典数据分离传入:(1, 2, 3, '你好') {'n2': 'name', 'n1': 78}
def show(*args,**kwargs): #同时传入元组和字典变量
print(args,kwargs)
print(type(args),type(kwargs))
tuple_data = (1,2,3,4,"你好")
dict_data = {"n1":"name","n2":"age"}
#show(tuple_data,dict_data)
#如果以上这样直接传入元组和字典的变量,则结果为传入了一个元组类型:((1, 2, 3, 4, '你好'), {'n1': 'name', 'n2': 'age'})
show(*tuple_data,**dict_data)
#给传入的元组变量加*,然后给传入的字典变量加**就能分别传入对应的数据了
#使用动态参数实现字符串的格式化
s1 = "{0} is {1}"
li = ['you','sb']
#result = s1.format('you','sb')
result = s1.format(*li) #传入列表内容,对应格式化的字符串
print(result)
s1 = "{name} is {show}"
result = s1.format(name="you",show="sb") #传入列表内容,对应格式化的字符串
print(result)
#lambda 表达式(lambda会自动加返回值)
#一般函数的写法
def func(a):
b = a + 1
return b
result = func(4)
print(result)
#lambda表达的写法
func = lambda a:a+1 #创建形参a。函数内容a+1,并把a的结果return
result = func(4)
print(result)