函数的总结

本文深入探讨了Python中的匿名函数,包括其定义、应用以及与其他函数如map()、filter()和reduce()的结合使用。同时,文章还详细介绍了递归函数的概念、特点,并通过实例展示了如何实现递归计算。通过对这些概念的解析,读者能够更好地理解和运用Python中的函数技巧。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:本文主要介绍函数


提示:以下是本篇文章正文内容,下面案例可供参考

一、匿名函数?

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 参数:返回值

递归函数: 自己调用自己。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值