函数式编程最重要的是增强代码的重用性和可读性
- 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
- 面向对象:对函数进行分类和封装,让开发“更快更好更强...”
一、函数的定义和使用
def mail(参数):
...
函数体
...
#def:表示函数的关键字
#mail:表示函数名,后面根据函数名调用函数
#函数体:函数中进行一系列的逻辑运算,如发送邮件,计算出[11、22、338、2中的最大数等]
#参数:为函数体提供数据
#返回值:当函数执行完毕后,可以给调用者返回数据
1 def jisuan(): 2 n = 123 3 n += 1 4 print(n) 5 jisuan() 6 f = jisuan 7 f() 8 9 10 #result
11 #124
12 #124
发送邮件实例:
1 import smtplib 2 from email.mime.text import MIMEText 3 from email.utils import formataddr 4 5 def mail(): 6 ret = "邮件发送成功!" 7 try: 8 msg = MIMEText('邮件内容', 'plain', 'utf-8') 9 msg['From'] = formataddr(["flash",'sqljtzy@126.com']) 10 msg['To'] = formataddr(["走人",'1241424377@qq.com']) 11 msg['Subject'] = "主题" 12 13 server = smtplib.SMTP("smtp.126.com", 25) 14 server.login("sqljtzy@126.com", "登录密码") 15 server.sendmail('sqljtzy@126.com', ['1241424377@qq.com',], msg.as_string()) 16 server.quit() 17 except Exception: 18 ret = "邮件发送失败!" 19 return ret 20 21 print(mail()) #函数调用不需要print,但返回值要用print
## 另一种写法
result = mail()
print(result)
二、函数参数
1、无参数
def num(): print(666) num()
2、一个参数
def num(arg): #()中的参数相当于变量名 print(arg) num(666)
3、两个参数(多个参数)
def show(arg,num): #多个参数在()里写,以此类推... print(arg,num) show('kkk',666)
4、默认参数
def show(arg,num=666): def show(arg,num=666): print(arg,num) print(arg,num) show('kkk') show('kkk',888) ###result "kkk 666" ###result "kkk 888"
#默认参数可以有多个,必须放在参数列表最后 默认参数可以被覆盖!
5、指定参数
def func(name, age = 18): print("%s:%s" %(name,age)) # 指定参数 func('flash', 19) # 使用默认参数 func('alex') ###result flash:19 alex:18
6、动态参数
def show(*args): #一个*是元祖() print(args,type(args)) show(12, 345, 6789)
###result
(12, 345, 6789) <class 'tuple'>
def show(**args): #两个*是字典{} print(args,type(args)) show(n1=12,aa=456,bb=789) ###result {'aa': 456, 'n1': 12, 'bb': 789} <class 'dict'>
def show(*args,**kwargs): print(args,type(args)) print(kwargs,type(kwargs)) show(11,22,33,666,n1=12,flash='nb') ###result (11, 22, 33, 666) <class 'tuple'> {'flash': 'nb', 'n1': 12} <class 'dict'>
def show(*args,**kwargs): print(args,type(args)) print(kwargs,type(kwargs)) #show(11,22,33,666,n1=12,flash='nb') l = [11,22,33,44] d = {'n1':12,'flash':'nb'} show(1,d) ###result (1, {'flash': 'nb', 'n1': 12}) <class 'tuple'> {} <class 'dict'>
def show(*args,**kwargs): print(args,type(args)) print(kwargs,type(kwargs)) #show(11,22,33,666,n1=12,flash='nb') l = [11,22,33,44] d = {'n1':12,'flash':'nb'} show(*l,**d) ###result (11, 22, 33, 44) <class 'tuple'> {'n1': 12, 'flash': 'nb'} <class 'dict'>
7、使用动态参数实现字符串格式化
1、 s1 = "{0} is {1}" result = s1.format('alex','sb') print(result) 2、 s1 = "{0} is {1}" l = ["alex","sb"] result = s1.format(*l) print(result) 3、 s1 = "{name} is {acter}" d = {'name':'alex','acter':'sb'} result = s1.format(**d) print(result)
三、使用lambda表达式
lambda表达式:简单函数的表达方式
func = lambda a: a+1
ret = func(99)
print(ret)
四、内置函数
注:Python官方文档https://docs.python.org/3/library/functions.html#next
参考:
http://www.cnblogs.com/wupeiqi/articles/4943406.html