Python笔记----把函数视作对象

本文介绍了Python中的函数作为一等对象的概念,包括如何将函数赋值给变量、作为参数传递和作为返回值。还讨论了高阶函数、map、filter和reduce的替代品、匿名函数(lambda)、可调用对象、函数内省以及函数参数的各种用法,如强制位置参数和函数注解。此外,提到了支持函数式编程的包和函数式编程的一些实践技巧。
摘要由CSDN通过智能技术生成

第五章 一等函数

“一等对象”被定义为满足下述条件的程序实体:

  • 在运行时创建
  • 能赋值给变量或者数据结构中的元素
  • 能作为参数传给函数
  • 能作为函数的返回结果

在Python中,所有的函数都是一等对象。

5.1 把函数视作对象

>>> def f(n):                         
...     '''return n!'''               
...     return 1 if n<2 else n *f(n-1)
...                                   
>>> f(4)                              
24                                    
>>> type(f)                           
<class 'function'>                    
>>> f.__doc__                         
'return n!'                           
>>>                                   

这是一个控制台会话,因此我们是在“运行时”创建一个函数。
__doc__属性用于生成对象的帮助文档:

>>> help(f)
Help on function f in module __main__:

f(n)
    return n!

可以把f函数赋值给变量fact,然后通过变量名调用。还能把它作为参数传给map函数。map函数返回一个可迭代对象,里面的元素是把第一个参数(一个函数)应用到第二个参数(一个可迭代对象)中各个元素上得到的结果。

>>> fact = f
>>> fact(5)
120
>>> map(f, range(5))
<map object at 0x055BDB38>
>>> list(map(fact, range(5)))
[1, 1, 2, 6, 24]
>>> list(map(f, range(5)))
[1, 1, 2, 6, 24]

5.2 高阶函数

接受函数为参数,或者把函数作为结果返回的函数就是高阶函数。

>>> def reverse(words):                            
...     return words[::-1]                         
...                                                           
>>> reverse('hello')                               
'olleh'                                              
>>> names = ['Recent', 'Joey', 'Emma', 'Dagan']    
>>> sorted(names, key=reverse)                     
['Emma', 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值