python中函数(function)总结三

本节介绍几个高阶函数的使用
高阶函数:满足下列条件中的一个即为高阶函数
1.函数接收一个或多个函数作为参数传入。
2.函数返回一个函数

python中内置的高阶函数:
map,filter,sorted

一.map函数介绍
map(func, *iterable) 返回一个可迭代对象,此可迭代对象用函数func对可迭代对象iterable中的每一个元素作为参数计算后得到新的数据。
在这里插入图片描述
二.filter函数介绍
作用:

  1. 筛选可迭代对象iterable中的数据,返回一个可迭代对象,此可迭代对象只返回iterable中符合条件的数据。
  2. function将对iterable中提供的每个数据进行求布尔值,如果为True则保留,返回False 则丢弃此数据。
    在这里插入图片描述

三.sorted 函数
作用:
将原可迭代对象的数据进行排序,生成排序后的列表。
函数参数格式:
sorted(iterable, key=None, reverse=False)
iterable 可迭代对象
key 函数是用来提供一个值,这个值将作为排序的依据,如果不给出key函数,则用原数据的值进行比较和排序
reverse 标志用来设置是否降序排序

L = [5, -2, -4, 0, 3, 1]
L2 = sorted(L)  # [-4, -2, 0, 1, 3, 5]
L3 = sorted(L, reverse=True) #[5,3,1,0,-2,-4]
L4 = sroted(L, key=abs) # [0, 1, -2, 3, -4, 5] 按绝对值
L5 = sorted(L, key=abs, reverse=True) # [5, -4, 3, -2, 1, 0]

四.递归函数
递归是指函数直接或间接的调用自身。

# 函数直接调用自身
  def f():
      f()  # 直接调用自身
  f()
  print("递归完成")

  # 函数间接调用自身
  def fa():
      fb()
  def fb():
      fa()
  fa()
  print("递归完成")

说明
递归一定要控制递归的层数,当符合某一条件时要终止递归调用
几乎所有的递归都能用while循环来代替。

递归的优缺点:
优点:
可以把问题简单化,让思路理会为清晰,代码更简洁。
缺点:
递归因系统环境影响大,当递归深度太大时,可能会得到不可预知的结果。

# 1. 给出一个数n,写一个函数myfac(n)来计算n!(n的阶乘)
#   n! = 1*2*3*4*....*n

#     print(myfac(5))  # 120

# 用循环来实现
def myfac(n):
    s = 1
    for i in range(1, n + 1):
        s *= i
    return s

# 用递归来实现
def myfac(n):
    if n == 1:  # 知道1! == 1
        return 1
    # 如果n不是1,则递推到下一级求解
    return n * myfac(n - 1)


print(myfac(5))  # 120

五.闭包的介绍
闭包是指引用了此函数外部变量的函数.
如果一个内嵌函数访问了外部嵌套函数的变量,则这个内嵌函数就是闭包.
闭包满足的三个条件:
1.必须是一个内嵌函数。
2.内嵌函数必须引用外部函数的变量。
3.外部函数返回值必须是内嵌函数。

# 写一个函数来创建 x的y次方的函数
def make_power(y):
    def fn(x):
        return x ** y
    return fn


pow2 = make_power(2)
print('5的方平是:', pow2(5)) #25

少壮不努力,老大徒伤悲!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值