使用函数可以减少重复编写相同的功能的代码,可以随意调用
1.基本函数
#def声明这是一个函数,后面函数名称,函数里是正常的python代码
def o_age(): age=20 c_age=int(input("input your age:")) if c_age == age: print("恭喜你猜对了") elif c_age > age: print("你把我年龄说大了") else: print("你把我年龄说小了") # ret=o_age() # print(ret) o_age() #可以直接引用函数打印也可以赋值一个变量
2.函数返回值
#try except判断函数是否执行成功,返回状态
def mail(): try: import smtplib from email.mime.text import MIMEText from email.utils import formataddr msg = MIMEText('hello,这是一封测试邮件,勿回复', 'plain', 'utf-8') msg['From'] = formataddr(['Jasper', 'qiang930903@126.com']) msg['To'] = formataddr(['Desperado', '408473944@qq.com']) msg['Subject'] = 'test mail' server = smtplib.SMTP('smtp.126.com', 25) server.login("qiangxxxxx@126.com", '*****') # 客户端授权密码 server.sendmail("qiangxxxxxx@126.com", ['408473944@qq.com'], msg.as_string()) server.quit() except: return False #可以是字符串 else: return True ret=mail() if ret == True: #此处ret要等于上面return的返回值 print("发送成功") else: print("发送失败")
#1.可以给函数使用多个变量(普通参数)
def mail(m_name,m_addr): try: import smtplib from email.mime.text import MIMEText from email.utils import formataddr msg = MIMEText('hello,这是一封测试邮件,勿回复', 'plain', 'utf-8') msg['From'] = formataddr(['Jasper', 'qiang930903@126.com']) msg['To'] = formataddr([m_name,m_addr]) msg['Subject'] = '测试邮件' server = smtplib.SMTP('smtp.126.com', 25) server.login("qiang930903@126.com", 'hu930903') # 客户端授权密码 server.sendmail("qiang930903@126.com", [m_addr], msg.as_string()) server.quit() except: return False else: return True msg=input("输入要发送邮件人的名称:") msg1=input("输入要发送的邮件地址:") ret=mail(msg,msg1) #函数定义了几个变量,这里就打印对应的几个变量 if ret == True: print("发送成功") else: print("发送失败")
#2.函数变量默认参数 def send(xx,oo,sb='ok'): print(xx,oo,sb) return True send('jasper','25') #不传参会输出默认的变量参数 send('jasper','25','帅哥') #传参会覆盖默认参数 输出结果: jasper 25 ok jasper 25 帅哥
重要提示:使用默认参数必须要放在参数列表最后面
#3.指定参数
def send(xx,oo,sb='ok'):
print(xx,oo,sb)
return True
send(oo='jasper',xx='25')
输出结果:
25 jasper ok
#默认参数是一个一个才对应,如果想指定变量的对应的参数位置,可以直接将变量=‘’