Python学习笔记之函数式编程

本文深入探讨Python的函数式编程,涵盖高阶函数如map(), reduce(), filter()和sorted(),并介绍匿名函数和装饰器的概念。文章提供了一系列练习,帮助读者巩固所学,包括使用装饰器实现日志记录和参数类型检查。" 97874817,8669502,使用AssemblyScript从TypeScript编译WebAssembly,"['前端开发', 'JavaScript', 'TypeScript', 'WebAssembly']
摘要由CSDN通过智能技术生成

一、高阶函数

    把函数作为参数传入,这样的函数成为高阶函数,函数式编程就是指这样高度抽象的编程范式 。

    高阶函数:

                   实参:可以是一个函数的函数名;

                   返回值:可以是一个函数的函数名。

    (一)内置高阶函数map()

             map()函数会根据提供的函数对指定的序列做映射。其语法如下:

       map(function, iterable, ...)  #function --函数  iterable --一个或多个序列

             第一个参数function以参数序列中的每一个元素调用function函数,返回包含每次function函数的返回

      值的新列表(python2)或迭代器(python3)                 

    def fun(x):
        return x**2
    print(list(map(fun,range(1,10))))    #将一个存储0~9的列表的每一个元素平方

    输出:

    [1, 4, 9, 16, 25, 36, 49, 64, 81]
        当function函数拥有两个参数时,map()函数的可迭代的对象也就需要两个参数
    def fun_1(x,y):
        return x+y
    print(list(map(fun_1,range(1,11),range(1,11))))   #计算两个列表每个元素相加的和

    输出:

    [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
    (二)内置高阶函数reduce()

             Python2中reduce()函数在全局名字空间中,可以直接使用,在Python3中已经从全局名字空间中移除

      了,被放置在function模块里面,如果想要使用它,则需要通过引入functools模块来调用reduce()函数。

  from functools import reduce

             reduce()函数的语法如下:

  reduce(function,iterable[,initializer])  function--函数, iterable --可迭代对象 , initializer --可选,初始参数.

            redeuce()函数会对参数序列中的元素进行累积,函数讲一个数据集合(链表,元组)中的所有有数据进行

     下列操作:用传给reduce中的函数function(必须有两个参数)先对集合中的1,2个元素进行操作,在将得到的

     结果与第三个数据用function函数运算,最后得到一个结果。

 from functools import reduce
 def add(x,y):
     return x+y

 print(reduce(add,range(1,11)))   #((((1+2)+3)+4)+5)+6)+...   计算1~10的元素之和. 
输出:
    55
    (三)内置高阶函数filter()

              filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表,该函数接收

       两个参数,第一个为函数,第二个为序列序列的每个元素作为参数传递给函数进行判断,然后返回True或

       Fase,最后将返回True的元素放到新的列表中。

    filter(function,iterable)  #function --判断函数 , iterable -- 可迭代的对象
        例子:
        def chose_odd(num):
        return (num % 2 == 0)

        print(list(filter(chose_odd,range(1,11))))

        输出:

        [2, 4, 6, 8, 10]
        

        注意:

                关于filter()方法,在python2和python3中有所不同,python2中返回的是过滤后的列表, 而python3

        中返回到是一个filter类,filter类实现了__iter__和__next__方法, 可以看成是一个迭代器, 有惰性运算的特性,

        相对python2提升了性能, 可以节约内存.

    (四)内置高阶函数sorted()
                sorted()对所有的可迭代对象进行排序操作,
         sorted(iterable, [,cmp[,key[,reverse]]])    
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值