提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:本文主要介绍函数
提示:以下是本篇文章正文内容,下面案例可供参考
一、匿名函数?
1,匿名函数的定义
#匿名函数:简化函数定义
#格式: lambda 参数1.参数2.。。。。:运算
def func():
print('aaa')
def add(a,b):
s=a+b
return s
f=add
s=lambda a,b: a+b
print(s) #s就是函数function
result=s(1,2)
print(result)
s1= lambda x,y :x*y
result=s1(2,5)
2.匿名函数作为函数
#匿名函数作为函数
def func(x,y,func):
print(x,y)
print(func)
s=func(x,y)
print(s)
#调用func
func(1,2,lambda a,b:a+b)
3.匿名函数的应用的函数。
# max sorted zip .......
list1=[3,6,8,9,0]
m=max(list1)
print('列表的最大值',m)
list2=[{'a':10,'b':20},{'a':13,'b':21},{'a':18,'b':20},{'a':2,'b':20}]
m=max(list2,key=lambda x:x['a'])
print('列表的最大值:',m)
#相当于lambda
def func(d):
return d['a']
4.map()函数
#map
list1=[3,4,6,7,8,9,0,2,5]
result=map(lambda x:x+2,list1)
print(list(result))
'''
for index,i in enumerate(list1):
list1[index]=i+2
'''
func=lambda x:x if x%2 ==0 else x+1
result = func(5)
print(result)
#对列表中的奇数进行加1操作
result=map(lambda x:x if x%2==0 else x+1,list1 )
print(list(result))
for index,i in enumerate(list1):
if i %2 !=0:
list1[index]=i+1
print(list1)
'''
对列表进行操作使用map()就是把列表中的值取出来
'''
5 函数
reduce() 函数
#reduce() :对列表中的元素进行加减乘除运算的函数
from functools import reduce
tuple=(3,6,7,8,9,1)
result=reduce(lambda x,y:x+y,tuple)
print(result)
#第二种方式
tuple2=(1,)
result=reduce(lambda x,y:x-y,tuple2,10)
print(result)
#动手测试减法
filteer()函数
list1=[12,6,8,98,34,36,2,8]
result=filter(lambda x:x>10,list1)
print(list(result))
print(list1)
def func():
list2=[]
for i in list1:
if i >10:
list2.append(i)
print(list2)
# 找出所有年龄大于20岁学生
students=[
{'name':'tom','age':20},
{'name':'lucy','age':19},
{'name':'mark','age':13},
{'name':'jack','age':21},
{'name':'lily','age':23},
{'name':'steven','age':18}
]
result=filter(lambda x:x['age']>20,students)
print(list(result))
sorted()函数
# 按照年龄从小到大排序
students=sorted(students,key=lambda x:x['age'],reverse=True)
print(students)
'''
max()
min()
sorted()
map()
reduce()
filter()
'''
二、递归函数
#递归函数
'''
普通: def func():pass
匿名函数: lambda 参数:返回结果
递归函数: 普通函数的一种表现形式
特点:
1.递归函数必须要设定终点
2.通常都会有一个入口
'''
def sum(n): #1的n次方
if n==0:
return 0
else:
return n+sum(n-1)
resultt=sum(10)
print(resultt)
s=0
for i in range(11):
s+=1
print(s)
def f1(n):
if n>0:
print('-------',n)
f(n-1)
else:
print('-----',n)
def sum1(n):
if n==100:
pass
else:
pass
`
总结
函数:
作用域:LEGB
L: local 本地 局部变量
E: encloseing 嵌套
G: Global 全局
B: built-in 内置的
嵌套函数:
闭包:
1. 内层函数
2. 内层函数引用外层函数的变量
3. 返出内层函数
装饰器:
1. 内层函数
2. 内层函数引用外层函数的变量
3. 返出内层函数
4. 函数作为外层函数参数
使用装饰器:
@装饰器名字
def 函数名():
pass
# 总结函数:
普通函数:
def 函数名([参数,...]):
函数体
1. 如何定义函数
2. 调用函数
参数:
1. 无参数:
def func():
pass
func()
2. 有参数:
一般参数:
def func(a,b):
pass
func(1,2)
可变参数:
def func(*args,**kwargs): args单个元素 kwargs 关键字参数
pass
func()
func(1)
func(a=10)
默认值:
def func(a=10,b=10):
pass
func()
func(100)
关键字参数:
func(b=99)
返回值: return
没有返回值
def func():
print('-----')
x= func() ---->x=None
有返回值:
def func():
return 'a'
x =func() -----> x ='a'
def func():
return 'a','b'
x =func() -----> x =('a','b')
嵌套函数 ---》 闭包 ---》 装饰器
def func():
def wrapper():
....
return wrapper
变量的作用域: LEGB
global nonlocal
globals() locals()
LEGB
L: local 本地 局部变量
E: encloseing 嵌套
G: Global 全局
B: built-in 内置的
装饰器:
单层装饰器
def decorate(func):
def wrapper(*args,**kwargs):
....
return wrapper
@decorate
def house():
pass
@decorate
def f1(a,b):
pass
多层装饰器:
@zhuang2
@zhuang1
def f1(a,b):
pass
装饰器带参数:
def outter(a):
def decorate(func):
def wrapper(*args,**kwargs):
....
return wrapper
return decorate
@zhuang(10)
def house():
pass
@zhuang(100):
def street():
pass
匿名函数: lambda 参数:返回值
递归函数: 自己调用自己。