Python语言高级特性

1. 函数式编程(Functional Programming)

  • 基于lambda演算的一种编程方式
    • 程序中只有函数
    • 函数可以作为参数,同样可以作为返回值
    • 纯函数式编程语言: LISP, Haskell
  • Python函数式编程只是借鉴函数式编程的一些
    特点,可以理解成一般函数式,一般Python
  • 讲述内容
    • 高阶函数
    • 返回函数
    • 匿名函数
    • 装饰器
    • 偏函数

1.1 lambda表达式(也叫匿名函数)

  • 函数:最大程度复用代码
    • 存在问题:如果函数很小,代码很短,反而会比较麻烦
    • 函数被调用次数少,会造成浪费
    • 对于阅读者来说,造成阅读流程被迫中断
  • lambda表达式
    • 一个表达式,函数体相对简单
    • 不是一个代码块,仅仅是一个表达式
    • 可以有多个参数,用逗号隔开
    • 用法:
      1.以lambda开头
      2.紧跟一定参数(可以没有)
      3.参数后用冒号和表达式主题隔开
      4.只是一个表达式,所以没有return
      例:
      stm = lambda x: 100 * x(计算100的倍数)
      stm(90)

1.2 高阶函数

  • 把函数作为参数使用的函数叫高阶函数
    • 函数名称是变量,可以赋值,可以被当做参数
  • 系统高阶函数
    • map
      • 把集合或者列表里的每一个元素都按照一定规则操作,生产新的列表
        或者集合
      • 返回一个迭代对象(什么是可迭代?)
      • map类型是一个可迭代的结构,可以使用for循环遍历
        map(func_name, n)
    • reduce
      • 归并,缩减
      • 把一个可迭代对象最后归并成一个结果
      • 对于作为参数的函数要求:必须有两个人参数
      • 需要导入functools包
    • filter
      • 过滤函数:对一组数据进行过滤,符合条件的数据会生成一个新的列表并返回
      • 和map相比:
        相同点:都对列表每个元素进行逐一操作
        区别:
        map会生成一个跟原来数据相对应的新列表
        filter不一定,只要符合条件的才会进入新数据集合
      • filter:
        • 利用给定函数进行判断
        • 返回值是布尔值
        • 调用格式:
          filter(f, data) – f是过滤函数,data是数据
    • 高阶函数排序
      • 把一个序列按照给定算法进行排序
      • key:在排序前对每个元素进行key函数运算,可以理解成按照key函数定义的逻辑进行排序
      • Python2和Python3相差巨大
      • sorted()
  • 返回函数###
    • 函数可以返回具体指,也可以返回一个函数作为结果
    • 闭包(closure)
      • 当一个函数在内部定义函数,并且内部的函数应用了外部函数的参数或者局部变量,当
        内部函数被当做返回值时,相关参数和变量保存在返回的函数中,这种结果,叫做闭包
      • 返回闭包时,返回函数不能引用任何循环变量
  • 装饰器(decrator)
    • 增加函数新功能,又不改动现有代码时,使用装饰器
    • 本质上,装饰器是一个返回函数的高阶函数
    • 装饰器使用:使用@语法:在每次要扩展到函数定义前使用@+函数名
    • 装饰器好处:
      一旦定义,则可以装饰任意函数
      一旦被其装饰,则把装饰器的功能直接添加到定义函数的功能上
  • 偏函数
    • 参数固定的函数,相当于有一个特定参数的函数体
    • functools.partial:把一个函数某些参数固定,返回一个新函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值