Pythonic编程(七)—— 一等函数


前言

python编程风格也叫Pythonic,这一系列文章记录学习点滴。


在 Python 中, 函数是一等对象。 “一等对象”定义是满足下述条件的程序实体:

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

因此,在Python中, 整数、 字符串和字典都是一等对象。

1、函数是对象

首先给出一个程序示例,证明在python中函数是对象
这是一个求阶乘的函数:

>>>def factorial(n):
	'''return n!'''
	return 1 if n<2 else n*factorial(n-1)
>>> factorial(5)
120
>>> factorial.__doc__
'return n!'
>>> type(factorial)
<class 'function'>

首先函数是在运行时创建的,__doc__函数是函数对象众多属性中的一个,type()函数展示出factorial 是 function 类的实例。

2、一等函数

下面这个示例展示了对象的“一等”本性,把函数赋值给变量fact,然后通过变量名调用,还可以作为参数传递:

>>> fact = factorial
>>> fact(6)
720
>>> list(map(fact, range(10)))
[1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880]

3、高阶函数

接受函数为参数, 或者把函数作为结果返回的函数是高阶函数。
map函数就是一例,如上面那个程序所示,此外sorted()函数也是,其内置参数key用于提供一个函数,应用到序列上进行排序,比如:

>>> def bb(word):
	return word[::-1]


>>> bb('game')
'emag'
>>> fruits = ['strawberry', 'fig', 'apple', 'cherry', 'raspberry', 'banana']
>>> sorted(fruits, key=len)
['fig', 'apple', 'cherry', 'banana', 'raspberry', 'strawberry']
>>> sorted(fruits, key=bb)
['banana', 'apple', 'fig', 'raspberry', 'strawberry', 'cherry']

我们可以通过内置函数len()进行字符串长度排序,也可以通过我们自己定义的函数bb()进行倒序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值