我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python functools详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python functools详解

Python functools其他都比较简单,挑partial和wraps扯扯淡

官网文档说的真是不好理解,就当作是把一个函数,绑定部分或者全部参数后生成一个新版本的函数.

还是很绕口,看例子

from functools import partial
>>> def add(a, b, kw="add"):
...     return a+b, kw
... 
>>> add
<function add at 0x2afeaf7cecf8>


>>> plus3 = partial(add, 3, kw="add_3")
>>> plus3.func
<function add at 0x2afeaf7cecf8>
>>> plus3.args
(3,)
>>> plus3.keywords
{'kw': 'add_3'}
>>> plus3(5)
(8, 'add_3')

plus3就是创建一个新函数(准确的说,是叫partial object,不用管,你就当函数,不影响使用):args使用你预置的3, kwargs也update你指定的关键字参数,被修改的args和kwargs最终都被应用到add函数上

文档说的比较详细,如果不使用这个wraps,那么原始函数的__name____doc__都会丢失

不使用wraps例子

>>> def my_decorator(f):
...     def wrap(*args, **kwargs):
...         print "decorated func called"
...         return f(*args, **kwargs)
...     return wrap
... 
>>> 
>>> @my_decorator
... def ff():
...     """ff doc str"""
...     print "ff called"
... 
>>> 
>>> ff

>>> ff.__doc__
>>> ff.__name__
'wrap'
>>> ff()
decorated func called
ff called

可以看到ff.__doc__丢失,ff.__name__被覆盖。下面是使用wraps例子

>>> from functools import wraps
>>> def my_decorator2(f):
...     @wraps(f)
...     def wrap(*args, **kwargs):
...         print "decorated func called"
...         return f(*args, **kwargs)
...     return wrap
... 
>>> @my_decorator2
... def gg():
...     """gg doc str"""
...     print "gg called"
... 
>>> gg.__doc__
'gg doc str'
>>> gg.__name__
'gg'
>>> gg()
decorated func called
gg called

gg.__doc__和gg.__name__被保留。所以呢,为了便于调试,尽量保留原始函数信息,日志里才能更清楚的输出各种信息

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python functools详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python functools详解

Python functools其他都比较简单,挑partial和wraps扯扯淡官网文档说的真是不好理解,就当作是把一个函数,绑定部分或者全部参数后生成一个新版本的函数.还是很绕口,看例子from functools import par
2023-01-31

python模块之functools

functools模块提供了某些高阶函数(high-order function)。functools.cmp_to_key(func)比较函数是接收两个参数进行比较的函数,返回一个负数表示<,返回0表示=,返回一个正数表示>。key函数接
2023-01-31

Python的functools模块

(wrapperwrappedassigned = WRAPPER_ASSIGNMENTSupdated = WRAPPER_UPDATES):  类似咱们自己写的copy_preperties功能;  wrapper包装函数, wrapp
2023-01-31

python标准库--functools

官方相关地址:https://docs.python.org/3.6/library/functools.html 一.简单介绍:        functools模块用于高阶函数:作用于或返回其他函数的函数。一般而言,任何可调用对象都可以
2023-01-30

Python中functools模块函数解析

Python自带的 functools 模块提供了一些常用的高阶函数,也就是用于处理其它函数的特殊函数。换言之,就是能使用该模块对可调用对象进行处理。 functools模块函数概览functools.cmp_to_key(func)fun
2022-06-04

Python中functools模块的常用函数解析

1.partial 首先是partial函数,它可以重新绑定函数的可选参数,生成一个callable的partial对象:>>> int('10') # 实际上等同于int('10', base=10)和int('10', 10) 10
2022-06-04

python高阶函数functools模块如何使用

本篇内容主要讲解“python高阶函数functools模块如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python高阶函数functools模块如何使用”吧!functools模块提
2023-07-05

Python的functools模块使用总结

本篇文章给大家带来了关于Python的相关知识,主要介绍了Python的functools模块使用及说明,具有很好的参考价值,下面一起来看一下,希望对大家有帮助。【相关推荐:Python3视频教程 】partial用于创建一个偏函数,将默认参数包装一个可调用对象,返回结果也是可调用对象。偏函数可以固定住原函数的部分参数,从而在调用时更简单。from functools import partiali
2022-08-08

more_itertools 无法在 Python 3.6 中从 functools 导入cached_property

问题内容我尝试使用以下命令从 visual studio 代码中的终端运行grade_analysis.py:~/documents/school/ml4t_2023fall/assess_portfolio$ pythonpath=.
more_itertools 无法在 Python 3.6 中从 functools 导入cached_property
2024-02-22

Python使用functools模块中的partial函数生成偏函数

python 中提供一种用于对函数固定属性的函数(与数学上的偏函数不一样)# 通常会返回10进制 int('12345') # print 12345 # 使用参数 返回 8进制 int('11111', 8) # print 4681
2022-06-04

Python @property 详解

本文讲解了 Python 的 property 特性,即一种符合 Python 哲学地设置 getter 和 setter 的方式。Python 有一个概念叫做 property,它能让你在 Python 的面向对象编程中轻松不少。在了解它
2023-01-30

python re详解

正则表达式的元字符有. ^ $ * ? { [ ] | ( ).表示任意字符[]用来匹配一个指定的字符类别,所谓的字符类别就是你想匹配的一个字符集,对于字符集中的字符可以理解成或的关系。^ 如果放在字符串的开头,则表示取非的意思。[^5]表
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录