Python入门篇-functools

                                      作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

 

 

一.reduce方法

  reduce方法,顾名思义就是减少

  reduce(function,sequence[,initial])->value

  可迭代对象不能位空;初始值没提供就在可迭代对象中取一个元素
 1 #!/usr/bin/env python
 2 #_*_conding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie
 5 
 6 
 7 from functools import  reduce
 8 
 9 
10 print(reduce(lambda x,y:x*y,range(1,6)))          #我们可以用来计算5的阶乘
11 print(reduce(lambda x,y:x*y,range(1,6),100))      #当然,我们也可以指定函数的起始值,这个起始值会直接赋值给x变量,如果没有指定则会使用序列的第一个数字来赋初值。
12 
13 nums = [6,9,4,2,4,10,5,9,6,9]
14 print(nums)
15 print(sum(nums))
16 print(reduce(lambda x,y:x+y,nums))
17 
18 
19 
20 #以上代码输出结果如下:
21 120
22 12000
23 [6, 9, 4, 2, 4, 10, 5, 9, 6, 9]
24 64
25 64

 

二.partial方法

1>.partial概述

  偏函数,把函数部分的参数固定下来,相当于为部分的参数添加了一个固定的默认值,形成一个新的函数并返回
  
  从partial生成的新函数,是对原函数的封装

2>.partial方法举例

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:y1053419035@qq.com
 6 
 7 
 8 import functools,inspect
 9 
10 def add(x, y, *args) -> int:
11     print("add args:{}".format(args))
12     return x + y
13 
14 newadd = functools.partial(add, y=5)
15 
16 print(inspect.signature(add))
17 print(newadd(7))
18 print(newadd(10, y=20))
19 print(newadd(y=10, x=6))
20 print(inspect.signature(newadd))
21 
22 
23 
24 #以上代码执行结果如下:
25 (x, y, *args) -> int
26 add args:()
27 12
28 add args:()
29 30
30 add args:()
31 16
32 (x, *, y=5) -> int
 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:y1053419035@qq.com
 6 
 7 
 8 import functools,inspect
 9 
10 def add(x, y, *args) -> int:
11     print("add args:{}".format(args))
12     return x + y
13 
14 newadd = functools.partial(add, 1,3,6,5)
15 print(newadd(7))
16 print(newadd(7, 10))
17 print(newadd())
18 print(inspect.signature(add))
19 print(inspect.signature(newadd))
20 
21 
22 
23 #以上代码执行结果如下:
24 add args:(6, 5, 7)
25 4
26 add args:(6, 5, 7, 10)
27 4
28 add args:(6, 5)
29 4
30 (x, y, *args) -> int
31 (*args) -> int
partial方法举例

相关文章:

  • 2022-02-19
  • 2022-12-23
  • 2021-04-29
  • 2021-10-02
  • 2022-12-23
  • 2021-06-22
猜你喜欢
  • 2021-09-07
  • 2022-12-23
  • 2022-12-23
  • 2021-11-06
  • 2022-12-23
  • 2021-12-19
相关资源
相似解决方案