python func_Python functool module

1.functools.partial(func,*args,**keywords)

实现

def partial(func, *args, **keywords):def newfunc(*fargs, **fkeywords):

newkeywords=keywords.copy()

newkeywords.update(fkeywords)return func(*args, *fargs, **newkeywords)

newfunc.func=func

newfunc.args=args

newfunc.keywords=keywordsreturn newfunc

例子

>>> from functools importpartial>>> basetwo = partial(int, base=2)>>> basetwo.__doc__ = 'Convert base 2 string to an int.'

>>> basetwo('10010')18

2.functools.update_wrapper(wrapper,wrapped,assigned=WRAPPER_ASSIGNMENTS,updated=WRAPPER_UPDATES)

将wrapper function更新为wrapped function,多用于decorator,以decorator module中提到的一个例子(用于实现缓存)

defmemoize_uw(func):

func.cache={}def memoize(*args, **kw):if kw: #frozenset is used to ensure hashability

key =args, frozenset(kw.items())else:

key=argsif key not infunc.cache:

func.cache[key]= func(*args, **kw)returnfunc.cache[key]return functools.update_wrapper(memoize, func)

这里memoize就是wrapper function,func就是wrapped function。最简单情况下调用memoize_uw应该返回一个memoize的实例,然后调用memoize返回func,这样我们得到的是memoize的实例。但是,我们希望得到的是被包装函数,也就是func的实例,实际上memoize和func的差别很小,我们可以通过一个函数实现。函数wrapper function中默认参数assigned“指派”的内容包括__module__, __name__, __qualname__, __annotations__, __doc__,使用默认参数update“更新”的是__dict__,指派的意思是覆盖,更新的意思是添加了func.attrF,也就是说memoize方法内声明的属性(memoize.attrM)会被保留,但是访问方法会更名为func.attrM。

在以下的示例中,使用update_wrapper和直接返回memoize的区别就是访问f1.__doc__得到的是"Simulate some long computation"还是None

@memoize_uwdeff1(x):"Simulate some long computation"time.sleep(1)return x

3.@functools.wraps(wrapped,assigned=WRAPPER_ASSIGNMENTS,updated=WRAPPER_UPDATES)

wraps是update_wrapper的语法糖,从parameter来看就知道少了一个wrapper,于是乎就可以写成

defmemoize_uw(func):

func.cache={}

@wraps(func)def memoize(*args, **kw):if kw: #frozenset is used to ensure hashability

key =args, frozenset(kw.items())else:

key=argsif key not infunc.cache:

func.cache[key]= func(*args, **kw)returnfunc.cache[key]return memoize

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332521.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IntelliJ IDEA for Mac中的Maven操作窗口详解

文章目录简介操作按钮详解Reload All Maven ProjectsGenerate Sources and Update Folders For All ProjectsDownload Sources and/or DocumentationAdd Maven ProjectsRun Maven BuildExecute Maven GoalToggle Offline ModeToggle Skip Tests ModeShow Dependencies布局展示模…

java 验证码透明背景_Java中的证书透明度验证

java 验证码透明背景因此,我有一个幼稚的想法,即除了证书有效性检查(在Java中)之外,将证书透明性验证作为每个请求的一部分也很容易。 牺牲了整个周末的一半时间,我可以证明这并不是一件小事。 但是&#…

html ajax请求jsp,JSP+jquery使用ajax方式调用json的实现方法

本文实例讲述了JSPjQuery使用Ajax方式调用JSON的实现方法,在这里分享给大家以供大家参考,具体的实现以及代码如下所示:前台://testfunction test(uid){if(confirm("确定该用户操作"uid"吗?")){var…

ai背景合成_智能合成AI主播很危险,应立即取消!

邱震海分享我对时政问题的看法点击↑↑↑音频收听“倾听彼得 邱”音频背景每年两会,关注报道两会的记者多达3000多人,他们分布在会场内外及时捕捉两会动人瞬间和重要时刻,及时向全国乃至全球读者传递。但是今年的两会报道期间,新…

spring注入私有字段_Spring字段依赖注入示例

spring注入私有字段了解如何编写Spring Field Injection示例 。 字段注入是Spring框架 依赖注入的一种 。 在本教程中,我们将编写几个类,并看一看现场注入工程。 有关Spring依赖注入的更多信息: Spring Setter依赖注入示例 Spring构造函数…

简述html的3种列表uloldl,语义化HTML:ul、ol和dl

一、语义化元素1. ul标签W3C草案:The ul element represents an unordered list of items; that is, a list in which changing the order of the items would not change the meaning of list.语义化元素:表示包含一组无序列表项内容。在不同的浏览器默…

centos8 kernel source 安装_什么?你在物理机上安装Oracle总失败?那就试试Docker吧

写在前面有些小伙伴按照我写的《【Oracle】什么?作为DBA,你竟然不会安装Oracle??》一文,在CentOS 8.0服务器上来安装Oracle,总是说:安装不成功!但是我确实也是在CentOS 8.0服务器上安…

Maven的资源坐标

在 Maven 中&#xff0c;坐标是资源包的唯一标识&#xff0c;Maven 通过坐标在仓库中找到唯一的资源。 下面就是 javax.servlet-api-4.0.1.jar 的坐标&#xff1a; <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</…

starter_您是否尝试过MicroProfile Starter?

starterhttps://start.spring.io的SPRING INITIALIZR已经存在了一段时间&#xff0c;并且是引导新的Spring Boot应用程序的最佳方法。 到目前为止&#xff0c;即使不同的供应商为其实施提供了启动器&#xff0c;也没有类似的方式来引导新的MicroProfile项目。 但是等待已经结束…

html2image乱码问题,HtmlImageGenerator字体乱码问题解决、html2image放linux上乱码问题解决...

使用html2image-0.9.jar生成图片。在本地window系统正常&#xff0c;放到服务器linux系统时候中文乱码问题。英文可以&#xff0c;中文乱码应该就是字体问题了。一、首先需要在linux安装字体&#xff0c;simsun.ttc simsun.ttf simsunb.ttf1、新建目录/user/share/fonts/chine…

java每个阶段的学习时间_每个Java学习者都会犯的10个最常见的1个错误

java每个阶段的学习时间据说&#xff1a;“您的朋友会吞下您的错误&#xff0c;您的敌人会将它们呈现在盘子上”。 我绝对不是你的敌人&#xff0c;但我想向您介绍一些针对每个Java初学者的错误&#xff0c;我将在此博客“标牌”上就此做错。 当然只有其中一些&#xff0c;我是…

高速信号传输约翰逊 pdf_高速数字电路仿真设计与测试技术发展趋势综述 (一)...

近十多年来&#xff0c;数字集成电路和各种接口总线标准的发展令人眼花缭乱&#xff0c;目不暇接。各个总线标准通常由不同团队制订&#xff0c;其纷繁芜杂的测试和测量技术给从业人员带来许多困扰。本文将就当下的一些主要接口总线标准的仿真设计与测试技术发展趋势作一些简明…

Maven的继承

文章目录什么是继承&#xff1f;如何实现继承&#xff1f;什么是继承&#xff1f; 在聚合多个项目时&#xff0c;如果这些被聚合的项目中需要引入相同的Jar&#xff0c;那么可以将这些Jar写入父pom中&#xff0c;各个子项目继承该pom即可。 如何实现继承&#xff1f; 父pom配…

八中计算机是学啥的,北京八中:居然有这么好玩的课

北京八中&#xff1a;居然有这么好玩的课中国青年报北京12月13日电(记者堵力)种种“稀奇古怪”的科技知识纳入了北京八中学生们的正式课程。每周&#xff0c;所有的学生都会面对各种仪器&#xff0c;学习电台、电脑&#xff0c;以及兵器装备的知识等等———12月13日上午9&…

@builder注解_SpringBoot 整合SpringSecurity示例实现前后分离权限注解+JWT登录认证

一.说明SpringSecurity是一个用于Java 企业级应用程序的安全框架,主要包含用户认证和用户授权两个方面.相比较Shiro而言,Security功能更加的强大,它可以很容易地扩展以满足更多安全控制方面的需求,但也相对它的学习成本会更高,两种框架各有利弊.实际开发中还是要根据业务和项目…

web前端面试问答_Web服务面试问答

web前端面试问答在这篇文章中&#xff0c;我们涵盖了您需要熟悉的Web服务概念的几乎所有部分&#xff0c;以回答任何层级问题。 您还将在分类中找到最佳的Web服务面试问题和答案&#xff0c;因此只有在必要时才可以使用特定条款。 今天可以在各种编程平台上开发各种Web应用程序…

Maven项目的pom.xml文件详解

文章目录pom.xml文件解读标签 dependency 的解读pom.xml文件解读 <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0http://maven.…

u盘装系统学计算机好,教你如何使用u盘做系统

电脑对人们来说是了越来越重要了&#xff0c;怎么说呢&#xff0c;不论是在工作中&#xff0c;还是小孩的学习都需要使用电脑&#xff0c;所以说人们是越来越离不开对电脑的使用了。不过&#xff0c;电脑毕竟是电子产品&#xff0c;所以免不了会出现一些故障问题&#xff0c;比…

使用junit进行单元测试_使用JUnit对ADF应用程序进行单元测试

使用junit进行单元测试JUnit是Java语言的单元测试软件包&#xff0c;由于ADF构建在J2EE框架之上&#xff0c;因此可以用于测试Oracle ADF应用程序。 单元测试基本上是根据某些定义的测试标准来验证最小的可测试模块的过程。 在这里&#xff0c;我将说明如何在JDeveloper 12.2.1…