问题标签 [functools]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
195993 浏览

python - functools.wraps 有什么作用?

在对另一个问题的答案的评论中,有人说他们不确定functools.wraps在做什么。所以,我问这个问题,以便在 StackOverflow 上记录它以供将来参考:究竟是functools.wraps做什么的?

0 投票
2 回答
913 浏览

python - 如何扩展 functools.wraps 装饰器的功能?

我想创建一个新的装饰器来代替@wraps(f)它做任何魔法@wraps(f)会做的事情以及其他事情。我该怎么做?

具体来说,我有几个装饰器的形式:

似乎我应该能够创建@wraps_with_first_line(f)一个@wraps(f)if not hasattr(wrapper, '_first_line'): wrapper._first_line = inspect.getsourcelines(f)[1].

0 投票
1 回答
724 浏览

python - python装饰器丢失参数定义

我正在使用这样的块:

将一系列 XML-RPC 调用包装到 python 模块中。在存根函数上调用“服务”装饰器以公开远程服务器上的操作。

我正在创建这样的存根,以便以后能够检查它们以获取有关函数的信息,特别是它的参数。

如所列,上面的代码不会将参数信息从原始函数传输到包装器。如果我检查,inspect.getargspec( remote_function )那么我基本上得到一个空列表,而不是args=['a','b']我所期望的。

我猜我需要functools.update_wrapper()通过可选assigned参数为调用提供额外的指导,但我不确定要向该元组添加什么以获得我想要的效果。

名称和文档字符串已正确传输到新函数对象,但有人可以告诉我如何传输参数定义吗?

谢谢。

0 投票
2 回答
150 浏览

python - 什么是函数包装装饰器的“引导问题”?

Python 3.2recursive_reprreprlib模块中引入了一个新函数。

当我查看源代码时,我发现了这段代码:

我不明白的是什么是Bootstrap 问题,为什么不能@wraps(user_function)应用于wrapper

0 投票
5 回答
7547 浏览

python - functools.partial 和类似的 lambda 之间的区别?

在 Python 中,假设我有一个函数f,我想传递一些辅助参数(为简单起见,假设它只是第一个保持变量的参数)。

这两种方式(如果有的话)有什么区别?

例如,在文档页面中partial,有这样的引用:

partial在类中定义的对象的行为类似于静态方法,并且在实例属性查找期间不会转换为绑定方法。

如果使用提供给类的参数(在构造函数中或稍后通过函数)创建类方法,lambda 方法是否会受到此影响?

0 投票
2 回答
2528 浏览

python - 实现附加参数的 functools.partial

functools.partial的文档说它“大致相当于”:

如果我想实现一个预先添加附加参数的版本,似乎我只需要更改指示的行。

仅复制此代码时,是否还有其他我应该担心的功能/陷阱?

0 投票
1 回答
2806 浏览

python - 使用装饰器更新包装器时遇到错误

在尝试使用装饰器更新函数的包装器时,我遇到了一个相当神秘的(至少对我而言)错误消息。有什么想法可以解决这个问题吗?

我试图使我的代码尽可能通用,以便它也适用于其他情况。

期望的输出:

实际输出:

0 投票
2 回答
450 浏览

python - python:将方法导出为关闭对象的函数

在 python 中,我想将对象方法导出为普通函数。该对象将被关闭。如下所示:

这很好用,可以按预期打印 15。但是,如果我将 return-lambda-line 替换为注释行,它将失败并出现以下错误:

我知道使用 functools 比使用 lambda 表达式更干净。所以我想知道如何使用functools中的部分或其他工具来做到这一点。

0 投票
3 回答
6458 浏览

python - 映射/遍历 Python 对象列表

有没有办法在具有多个属性的用户定义 Python 对象列表上迭代和调用函数?假设它名为Entry,具有属性名称和年龄。

这样我可以说一些大意的东西

正在考虑使用 functools.partial() 但不确定在这种情况下是否有效。

0 投票
3 回答
3329 浏览

python - 对命名元组类的自定义排序

我经常使用namedtuple类。我今天一直在想是否有一种很好的方法可以为这样的类实现自定义排序,即使默认排序键不是 namedtuple 的第一个元素(然后是第二个、第三个等)。

我的第一个直觉是实现__lt____eq__total_ordering剩下的事情(它填写 le, ne, gt, ge):

然而:

哦,对了……只有在缺少total_ordering其他方法时才填写。由于 tuple/namedtuple 有这样的方法,total_ordering 没有为我做任何事情。

所以我想我的选择是

  1. 停止使用 namedtuple 并构建我自己的无聊类,继续使用 total_ordering
  2. 继续使用 namedtuple 并实现所有 6 种比较方法
  3. 继续使用 namedtuple 并插入一个排序值作为第一个字段。幸运的是,我没有太多的类实例,但通常我只是依靠字段的顺序来初始化它们,这可能很讨厌。也许这是一个坏习惯。

有关解决此问题的最佳方法的建议?