python之内置函数、高阶函数、匿名函数

内置函数、高阶函数、匿名函数

函数式编程

  • 在Python中,函数是一等对象

    • 一等对象一般都会具有如下特点:
      ① 对象是在运行时创建的
      ② 能赋值给变量或作为数据结构中的元素
      ③ 能作为参数传递
      ④ 能作为返回值返回
  • 高阶函数

    • 高阶函数至少要符合以下两个特点中的一个
      ① 接收一个或多个函数作为参数
      ② 将函数作为返回值返回

高阶函数

递归实际就是一个高阶函数

# 创建一个list列表,判断列表里的偶数
lst = [1,2,3,4,5,6,7,8,9,10]
def fn(l):
    # 创建一个新列表将我在l列表里获取的偶数存在新的列表
    new_list=[]
    # 通过for循环判断去除偶数
    for n in l:
        if n%2==0:
            new_list.append(n)  # 将偶数添加到new_list新列表中
    return new_list
'''
print(fn(lst))  
# 表示将l列表元素放在函数里面去调用。满足了函数自己调用自己的函数
# 将函数fn作为参数返回就是高阶函数
'''
  • 高阶函数在实际中大量使用,作为函数返回
  • 利用高阶函数可以减少代码的重用,避免大量的循环判断语句出现
  • 利用高阶函数让业务代码块间显得更加清晰

内置函数

  • abs()返回绝对值
num = -1
# abs()返回绝对值
print(abs(num))  # 1
  • sorted(list)排序,返回排序后的list。
    reverse表示排序方法,true表示倒序,false表示正序。false其实是按照假设的是假条件判断条件,一般企业直接用true。
    str和int不能同时进行排序.。
# sorted(list)排序,返回排序后的list
print(sorted([1,2,3,4,5,6,1,1,3],reverse=True))  # [6, 5, 4, 3, 3, 2, 1, 1, 1]
print(sorted(['1','2'],reverse=True))  # ['2', '1']
#sum(list)求取list元素的和
sum([1,2,3,100])
print(sum([1,2,3,100]))  # 106
  • round(a,b) 获取指定位数的小数。
    a代表浮点数,b代表要保留的位数。会进行四舍五入
# round(a,b) 获取指定位数的小数。
print(round(12.345678,4))  # 12.3457

-  isinstance  类型判断
- 利用该函数可以更快的判断类型,不需要使用python解释器,虽然python是强语言,python解释器可以自己编译识别,但是慢。
```python
# isinstance  类型判断
print(isinstance(1,int))  # True
  • eval()执行一个表达式,或字符串作为运算
# eval()执行一个表达式,或字符串作为运算
print(eval('1+1'))  # 2
  • exec()输出python语句
# exec()输出python语句
exec('print("Python")')  # Python
  • execute()预编译
    对任何计算机语言都有效
# execute()预编译  对任何计算机语言都有效

匿名函数

定义函数的过程中,没有给定名称的函数就叫做匿名函数
Python中使用lambda表达式来创建匿名函数。
lambda 来创建匿名函数规则
●lambda只是一个表达式,函数体比def简单很多。
●lambda的主体是一个表达式,而不是一个代码块,所以不能写太多的逻辑进去。
●lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
●lambda定义的函数的返回值就是表达式的返回值,不需要return语句块
●lambda表达式的主要应用场景就是赋值给变量、作为参数传入其它函数
lambda匿名函数的表达式规则是:lambda 参数列表: 表达式

def fn(a,b):
    return  a+b
fn(1,2) # 普通函数
print((lambda a,b:a+b)(10,20)) #30

lambda就是不写函数名的表达式,经常使用
print(fn(10,20) ) # 通过函数赋值的不好之处:python解释器解释代码不利于效率,代码维护困难。

  • 给一个变量赋值(将lambda的值给变量)。将一个变量/常量改变为函数!!
fn1 = (lambda a,b:a+b)
print(fn1(10,20)) # 30

不建议使用:变量常量等属于优先级低的(精度要求),转化为函数精度优先级高的,造成精度损失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值