functools模块的updatewrapper,让代码更友好亢保星
#!/usr/bin/env python #-*- coding:utf-8 -*- """ ## 一 functools介绍 1、functools 模块可以说主要是为 函数式编程而设计,用于增强函数功能。 2、functools模块用以 为可调用对象(callable objects)定义高阶函数或操作。 3、functools下面包括:partial update_wrapper wraps reduce cmp_to_key lru_cache singledispatch ## 二 update_wrapper 介绍 1、 update_wrapper 字面意思:更新包装,具体意思为:更新函数的包装 2、 函数的包装是什么?函数的包装,就是在函数的外面,在包装一个函数 3、 为什么要更新外部的这个包装函数呢? """ """ ## 应用场景介绍: partial的功能: 用于创建一个偏函数,将函数包装一个可调用对象,返回结果也是可调用对象。 偏函数可以固定住原函数的部分参数,从而在调用时更简单。注意这句话最重要的是--固定部分参数 (关于partial方法,可以看我上一篇文章,我也同时在平台发了视频教程,请移步) partial 这个方法,就是在包装别的函数!!!来个具体的例子,一个班级内学生互相借笔的例子。 """ def borrow(student1,student2): "同学一找同学二借笔!" print(f"{student1}找{student2}借了一只铅笔!") """ 大家都找王五借铅笔,这样很累呀!这时候partial方法可以上线了,把王五这个参数进行固定。 """ from functools import partial borrowPenFromWangwu=partial(borrow,student2="王五") borrowPenFromWangwu("李四") """ 现在出现了一个问题:有一个新来的同学,他不知道怎么借铅笔,需要看一下这个两个方法的用法? """ print(borrow.__name__) """ 上边代码输出:borrow """ print(borrow.__doc__) """ 上面代码输出:同学一找同学二借笔! """ help(borrow) """ Help on function borrow in module __main__: borrow(student1, student2) 同学一找同学二借笔! """ """ 通过这三个方法,他发现了borrow方法的用处。新来的同学,开始查看,borrowPenFromWangwu这个偏方法。 """ try: print("我的name是:",borrowPenFromWangwu.__name__) except AttributeError: print("no Name") """ 上面代码输出为:on Name。为什么这个方法没有name? """ print(borrowPenFromWangwu.__doc__) """ 上面代码输出为: partial(func, *args, **keywords) - new function with partial application of the given arguments and keywords. 这也不是期望的东西呀,对borrowPenFromWangwu方法的理解毫无帮助。 """ help(borrowPenFromWangwu) """ class partial(builtins.object) | partial(func, *args, **keywords) - new function with partial application | of the given arguments and keywords. 输出很多,关于partial方法的信息,对borrowPenFromWangwu方法的理解毫无帮助。 """ """ 应该如何获取borrowPenFromWangwu,这个方法的说明?partial这个方法包装了borrow这个方法,返回的 结果命名为borrowPenFromWangwu, 通过help(borrowPenFromWangwu)这个方法,缺返回了partial这个方法的信息。 这时候我们就需要update_wrapper,这个方法来更新一下partial这个外包装。 """ from functools import update_wrapper # 开始更新外包装 update_wrapper(borrowPenFromWangwu, borrow) """ 查看外包装是否被更新了。 """ print("我的name是:",borrowPenFromWangwu.__name__) """ 上一行代码的输出:我的name是: borrow """ print(borrowPenFromWangwu.__doc__) """ 上一行代码的输出为:同学一找同学二借笔! """ help(borrowPenFromWangwu) """ Help on function borrow in module __main__: borrow(student1, student2) 同学一找同学二借笔! """ """ 结论:这样新来的同学,就知道了借笔的方法。 这也是update_wrapper这个方法的用法了,一句话总结: 设置外部函数的__name__和__doc__属性,让代码对新人或者是健忘的人,更友好。 """
为什么特斯拉充电故障不能甩锅国家电网电流太大?2月1日上午,特斯拉客户支持发布微博向国家电网道歉。此前,南昌市涂先生的特斯拉汽车无故趴窝上了热搜自己购买了仅6天的特斯拉Model3,使用特斯拉官方超级充电桩充电后突然断电无法启
与奥迪R8公用生产线奥迪etronGT意外首发按照原计划,奥迪etronGT原本应当在2月9日首发,不过日前新车的无伪装照曝光,这次意外首发也算是突然的惊喜了,新车是奥迪旗下第三款电动车型,和保时捷Taycan一样基于J1平台
奥迪全新纯电动SUV来了特斯拉ModelY如何应对日前,奥迪Q4Sportbacketron的内饰曝光,可以看到新车在内饰设计方面基本延续了概念车上的风格,采用了奥迪家族广受好评的虚拟座舱设计,由三块尺寸可观的大屏组成。新车详解内
既坚固又强硬利用细菌可制造汽车材料如果有人告诉你,细菌并不可怕,甚至还能制造出坚固耐受和有弹性的工程材料,你会怎么想?这并非一种幻想,而是南加州大学维特比工程学院(USCViterbiSchoolOfEnginee
记录美好瞬间必备利器微博小姐姐都种草的Reno3Pro随着5G网络的正式商用,各家厂商的5G手机都轮番登场,不过要说近期热度最高的5G手机,OPPO即将发布的Reno3Pro无疑就获得了众多小伙伴的关注。在一次次的爆料中,Reno3P
劳斯莱斯发布幻影天魄典藏版白天也能看银河日前,劳斯莱斯官方发布了幻影天魄典藏版(TempusCollection)车型。设计师将宇宙星空刺绣在车顶内部,并在副驾前方的幻影画廊上也融入了特殊设计同时新车还提供了深蓝色主题车
梅赛德斯奔驰AMGOne合成图曝光售价或超4000万梅赛德斯AMGOne正离我们越来越近。作为奔驰公路车的技术旗舰,新车将在英国布里克斯沃思的梅赛德斯AMG高性能动力总成工厂内组装,计划生产275台,起售价为240万英镑(约合217
废旧零件打造11布加迪8米高变形金刚谈起汽车文化,美国日本这些发达国家就不用说了,泰国虽然在经济等其他方面不太起眼,但论汽车文化却一点儿不拖后腿,不论是老车还是改装车,泰国人都玩儿得很有一套,而且还总能带来一些令人意
马斯克成首富2021胡润全球富豪榜出炉日前,2021胡润全球富豪榜正式发布,该榜单对来自68个国家和地区的2402家公司的3228名亿万富翁进行了排名。纵览最新的榜单不难发现,智能电动汽车已经成为增长最快的行业之一,其
V8三电机法拉利SF90Spider将于27日国内首发去年11月法拉利以线上形式发布了SF90Stradale的敞篷版本SF90Spider。如今这台史上最强劲的法拉利量产敞篷跑车,同时也是法拉利旗下首款量产插电式混合动力敞篷跑车,即
外媒新加坡将从2025年起停止注册新的柴油车日前,新加坡副总理王瑞杰表示,新加坡计划在2040年前逐步淘汰汽油车和柴油车,加大对充电站的投资预算等激励措施,鼓励使用混合动力和纯电动等清洁能源汽车,以此作为该国减少温室气体排放