Python 高阶函数

本文深入讲解了Python中的高级特性,包括函数作为变量的使用、高阶函数(map, reduce, filter)的应用、匿名函数(lambda)的定义及使用场景、装饰器的概念与作用、迭代的基本原理、列表生成式的语法糖以及生成器的实现方式。

1.函数本身也可以赋值给变量,即:变量可以指向函数。函数名其实就是指向函数的变量!

wKiom1loo-3htg2zAABIPnuFOsg743.png

 2.变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数

wKiom1lopC2TVKDVAAAqf3lNqM4782.png

  3.map() 函数接收两个参数,一个是函数,一个是序列, map 将传入的函数依次作用到序列的每个元素,并把结果作为新的 list 返回

wKioL1lopGiCbHiOAAAgj6s_QaM636.png

  4.reduce 函数把一个函数作序用在一个列[x1, x2, x3...]上,这个函数必须接收两个参数,reduce 把结果继续和序列的下一个元素做累积计算。

wKioL1lopNGxVYDPAAAcunpVJIU373.png

  

 5.filter() 也接收一个函数和一个序列。和 map() 不同的时,filter() 把传入的函数依次作用于每个元素,然后根据返回值是 True还是 False 决定保留还是丢弃该元素。

wKiom1lopUHQXz3HAAAfsRQ1wu0954.png  6.python内置的 sorted() 函数就可以对 list 进行从小到大排序

wKiom1lopZ7THTMlAAAWON2TPdg179.png

  sorted倒序排列

wKioL1loph7zpmw9AAAsYGDwPUE995.png  7. *匿名函数。当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。关键字 lambda 表示匿名函数,冒号前面的 表示函数参数。

wKiom1loymSguePEAAAUEo-9hEw117.png

     *匿名函数有只能有一个表达式,不用写 return ,返回值就是该表达式的结果。

     *因为匿名函数没有名字,不必担心函数名冲突。 匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数。

wKiom1loyzyQZ2-qAAATcVt-Jhs283.png

     *也可以把匿名函数作为返回值返回

wKioL1loy4_THc3-AAAvSU8Smb4629.png

   8. 装饰器就是用来装饰函数。

      想要增强原有函数的功能;

      但不希望修改now()函数的定义;

      在代码运行期间动态增加功能的方式

wKioL1lozB-T4KGPAABrz1fMWyU433.png


 .迭代


  *可以通过for循环来遍历这个列表或者元组,这种遍历为迭代

  *只要是可迭代对象,无论有无下标,都可迭代

wKioL1lnZRGhyPEJAABDQ9TsetY688.png  

  *判断一个对象是否是可迭代对象,有collections模块的Iterable判断

wKiom1lnZXfQo5nvAABh7mhlSU0756.png

   *枚举方法emumerate,把列表变成索引-元素对

wKioL1lnZeng4huSAAAfs_wyFTQ141.png          *两个变量的迭代显示

wKioL1lnZjrzzwy_AAAnqjBvaRo036.png

  



  .列表生成式


   *Python内置用来创建列表的生成式

wKiom1lnZqyA2Y2fAAAaz5vt7Pw557.png


  .生成器


  *后续的元素,这样就不必创建完整的列表,从而节省大量的空间,在   Python中,这种一边循   环一边计算的机制,称为生成器。

    *创建生成器,把一个列表生成式的[]改为()

    *读取方法个g.next(),for循环

wKioL1lnZ92jXtleAABL7WnP7j0533.png    *斐波拉切函数,将print b 改为 yield b, 函数顺序执行,遇到return或最后一行函数语句就返回,生成器函数每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回yield语句处继续执行。

wKioL1lnaXngey13AABrFaMQxGk398.png

本文转自  夏梨巴人  51CTO博客,原文链接:http://blog.51cto.com/12774035/1947727

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值