python functool,python functools.partial

  python functool,python functools.partial

  本文主要介绍Python的functools模块的使用和描述,具有很好的参考价值。希望对大家有帮助。如有错误或不足之处,请不吝赐教。

  

目录

partial update _ wrapperwrapsreducecmp _ to _ key LRU _ cachesingledispatch

 

  

partial

 

  用于创建一个分部函数,将默认参数包装到一个可调用对象中,返回的结果也是一个可调用对象。

  分部函数可以固定原函数的一些参数,这样更容易调用。

  从functools导入部分

  int2=部分(int,base=8)

  打印(int2(123 ))

  # 83

  

update_wrapper

 

  由partial包装的函数没有__name__和__doc__属性。

  Update_wrapper函数:将包装函数的__name__和其他属性复制到新函数中。

  从functools导入update_wrapper

  定义包装2(功能):

  def inner(*args):

  返回函数(*参数)

  返回update_wrapper(inner,func)

  @wrap2

  def演示():

  打印(“hello world”)

  打印(演示。__name__)

  #演示

  

wraps

 

  warps函数用于复制装饰器中被装饰函数的__name__。

  就是在update_wrapper上做一个包装器。

  从functools导入包装

  定义包装1(功能):

  @wraps(func) #移除它,它将返回到内部

  def inner(*args):

  打印(功能。__name__)

  返回函数(*参数)

  返回内部

  @wrap1

  def演示():

  打印(“hello world”)

  打印(演示。__name__)

  #演示

  

reduce

 

  相当于Python2中的内置函数reduce

  该函数将一个序列相加为一个输出。

  reduce(函数、序列、起始值)

  从functools导入减少

  l=范围(1,50)

  打印(缩小(x,y:x y,l))

  # 1225

  

cmp_to_key

 

  list.sort中有一个关键参数,内置函数sorted。

  x=[hello , worl , ni]

  x.sort(键=长度)

  打印(x)

  # [你好,世界,你好]

  Python3以前提供了cmp参数来比较两个元素。

  Cmp_to_key函数用于将旧的比较函数转换为key函数。

  

lru_cache

 

  允许我们快速缓存或取消缓存函数的返回值。

  这个装饰器用于缓存函数的调用结果。对于需要多次调用的函数,每次调用的参数都是一样的,可以使用这个装饰器来缓存调用结果,从而加快程序运行速度。

  这个装饰器在内存中缓存不同的调用结果,所以要注意内存占用。

  从functools导入lru_cache

  @lru_cache(maxsize=30) # maxsize参数告诉lru_cache缓存了多少最近的返回值。

  定义纤维(n):

  如果编号为2:

  返回

  返回光纤(n-1)光纤(n-2)

  print([fib(n) for n in range(10)])

  Fib.cache_clear() #清除缓存

  

singledispatch

 

  Python3.4中新增的单一分发器用于实现通用函数。

  根据单个参数的类型确定调用哪个函数。

  从functools导入单个调度

  @singledispatch

  def fun(text):

  打印(字符串:文本)

  @fun.register(int)

  def _(text):

  打印(文本)

  @fun.register(列表)

  def _(text):

  对于k,v在枚举(文本):

  打印(k,v)

  @fun.register(float)

  @fun.register(元组)

  def _(text):

  打印(浮点型,元组)

  有趣(“我是胡博”)

  乐趣(下)123

  乐趣([a , b , c])

  乐趣(1.23)

  Print(fun.registry) #所有通用函数

  Print(fun.registry[int]) #获取int的泛型函数

  # String:我是胡博

  # 123

  # 0 a

  # 1 b

  # 2 c

  #浮点型,元组

  # { class object : fun at0x 106 d10f 28,class int : function _ at0x 106 f0b 9d 8,class list : function _ at0x 106 f0ba 60,class tuple : function _ at0x 106 f0bb 70,class float : function _ at0x 106 f0bb 70 }

  # function _ at0x106f0b9d8

  以上个人经验,希望给你一个参考,也希望你能支持盛行的IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: