python自学(十)——函数式编程

一、匿名函数

如题,匿名函数,直白点,就是没有具体名称的函数,但是不影响函数本身的使用。
作业:使用匿名函数改造下面的代码

def is_odd(n):
    return n % 2 == 1
L = list(filter(is_odd, range(1, 20)))


如下

L = list(filter(lambda n : n%2 == 1, range(1,20)))
二、装饰器(decorator)

本身是对函数进行装饰的能力,在不改变已有函数代码的前提下,给函数“装饰”新增的功能。

2.1 .name

函数的内置属性,表示函数的名称

def now() :
	print(1)

now.__name__ // "now"
2.2 @
语法 :
def 函数 A(function ()){
}

@A
def 函数B

表示将@下面的函数,作为参数传给@后面的函数,进行执行,明白这个才能进行下一个
2.2 decoreate

现在要在now函数中,增加一个打印的功能,比如开始打印和结束打印,就是需要在目标函数的执行开始和执行结束增加功能装饰。
作业1,给目标函数打印执行时间

def log(fn):
	def decorete(*x,**y):
		print('%s 执行了 %2f ms' % (fn.__name__, 11.567))
		fn(*x,**y)
	return decorete
@log
def a(x,y):
	print('%d + %d = %d'%(x,y,x+y))

作业2:请编写一个decorator,能在函数调用的前后打印出’begin call’和’end call’的日志

def log(fn):
	def decorete(*x,**y):
		print('begin called %s' % fn.__name__)
		f = fn(*x,**y)
		print('end called %s' % fn.__name__)
		return f
	return decorete
@log
def a(x,y):
	print('%d + %d = %d'%(x,y,x+y))
三、偏函数

直白点,就是优雅的帮我们节省代码

import functools
int2 = functools.partial(int)
int2(2.3) // 2

和上面装饰器不同的是,他是返回一个新的函数,不会对原函数进行操作
这个文档更详细偏函数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值