问题标签 [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.
python - 在类结构中使用 functools.partial,“未定义名称'self'”
下面是我的代码的一个显着简化的版本。之后__init__()
有几个功能。
我正在尝试使用functools.partial
创建不同版本的基本comparison
函数,它引用了在类中较早创建的函数,calculation
. 此比较函数的一个版本可能grade_comparison
如下所示。
当我运行我的代码时,有一个错误,NameError: global name 'self' is not defined
. 我尝试添加self
许多看似合乎逻辑的组合 - 下面是一个示例。
此更改导致此错误,NameError: name 'self' is not defined
当我将 self 添加到比较函数时(见下文):
我收到此错误,TypeError: comparison() takes at least 2 arguments (1 given)
. 如果您需要更多上下文,请告诉我!如前所述,这是代码的准系统。
python - 创建在原始函数中设置关键字参数的部分函数
不确定这是否可行,但我正在尝试从具有位置和关键字参数的函数创建部分函数。问题是,我希望结果部分函数中的参数设置原始函数中的关键字参数之一 - 而不是它的位置参数之一。
这是原始函数的定义:
我想要一个可以传递给 scipy.minimise 的部分函数,这样我就可以找到最佳权重值(权重是一个 ndarray)。
所以我需要的是一个只有一个参数的部分函数(x 说):
例如
但我希望部分函数在调用原始函数时设置权重参数:
(我知道我可以更改原始函数,以便 weights 参数是位置参数而不是关键字参数,但我不想这样做,因为我也想使用没有 weights 参数集的函数)。
python - python functools partial的参数顺序
我正在尝试使用多处理pool.map
来加速函数的执行,但可迭代不是该函数的第一个参数。Lambda 不起作用,因为它们不可腌制。我试图用来functools.partial
创建一个新函数,但它失败了TypeError
。下面是一个非常简单的示例,结果相同。如果我将参数 order 切换为f(i, s1, s2)
,它会按预期工作。
为什么参数顺序在这里很重要?当我阅读文档时,这对我来说并不明显。
我有什么选择(除了明显的改变原始功能)?
更新:我能想到的最好的方法是在模块级别创建一个包装器来切换参数顺序,然后是包装器的一部分。看起来一点也不漂亮或看起来像pythonic。
python - 使用装饰器记录执行时间
在我尝试了一段时间不成功后,我正在向这个神奇的网站寻求帮助。现在我的问题是:我想创建一个装饰器,将函数的执行时间(在函数执行期间)写入日志文件,如:
和
所以log.txt
看起来像
有任何想法吗?
python - Python 多处理 - 为什么使用 functools.partial 比默认参数慢?
考虑以下函数:
如果我使用multiprocessing.Pool.imap
,我会得到以下时间:
现在,如果我使用functools.partial
而不是使用默认值:
为什么版本使用functools.partial
这么慢?
python - Python 是否具有用于一阶递归关系的迭代递归生成器函数?
是否有一个内置函数或标准库函数大致相当于
或者
甚至只是
在任何版本的 Python 中?(后者与 结合使用时与其他两个一样好itertools.takewhile
。)
像这样的生成器函数将允许迭代地计算某些递归定义的序列,即一阶递归关系。
虽然这些在需要时实施起来并不难,但我觉得像它们这样的东西应该是itertools
或可能functools
的一部分,但如果是的话,我还无法在文档中发现它。
使用示例:
也应该与非数字元素一起使用:
python - 为什么我的 LRU 缓存会丢失相同的参数?
我有一些看起来像这样的代码:
cache_info()
报告有两次未命中 - 但我用相同的参数调用了该函数。
实际上需要做一些事情,但我发现这是因为在一个实例中我使用了关键字 arg,而在另一个实例中我使用了位置参数。
但是为什么?
python - lru_cache 转储到文件中并再次加载回内存中
在functools
pacakge in 中Python3
,有一个lru_cache()
装饰器可以记忆你的函数调用。
有没有办法让我将此缓存转储到文件中,然后稍后将文件加载回内存中?
我在 functools 文档中找不到此功能。实现上述要求的推荐方法是什么,最好使用仅涉及 Python 的解决方案?
python - 如何在循环中使用带有参数的 PyQt 插槽和信号?
我正在尝试在 lineedit 内动态创建插入删除工具按钮,并将插槽与删除工具相关联。使问题复杂化的是插槽具有参数,即要删除的行的行编辑和标签。因此,我必须使用lambda
. 问题是删除按钮仅删除一行并且顺序不正确。我已经尝试过functools.partial
使用 lambda,i=i
但两者都不起作用。以下是我拥有的代码。
编辑:这个问题的独特之处在于,参数也是动态的,因为它们来自循环。
编辑:我在下面添加了完整的可运行代码。
要重现该问题,请单击其中一个删除按钮。它只删除 P4,不再删除。附加点的问题相同。
python - 如何将 python 集合用于自定义类
仍然对 python 及其神奇的函数式编程感到有些困惑,所以我倾向于发现自己编写的代码更倾向于 Java 编程范式,而不是 Idiomatic Python。
我的问题有点相关:如何使自定义类成为 Python 中的集合
唯一的区别是我有嵌套对象(使用组合)。VirtualPage对象由PhysicalPage对象的列表组成。我有一个函数,它可以获取一个PhyscialPage对象列表并将所有细节合并到一个名为PageBoundary的单个命名元组中。本质上它是一个序列化函数,它可以输出一个由整数范围组成的元组,该整数范围代表物理页面和页面中的行号。由此,我可以轻松地对 VirtualPages 进行排序和排序(至少是这样的想法):
我还有一个函数可以采用PageBoundary namedtuple并将元组反序列化或扩展为PhysicalPages列表。最好不要更改这两个数据存储类,因为它会破坏任何下游代码。
这是我的自定义 python2.7 类的片段。它由很多东西组成,一个是包含对象PhysicalPage的列表:
我想利用一些模板化集合(来自 python 集合模块)来轻松地作为列表或VirtualPage类集进行排序和比较。还想对我的数据存储类的布局提出一些建议:VirtualPage和PhysicalPage。
给定一个VirtualPages序列或如下例所示:
我想轻松回答这样的问题:
马上,很明显VirtualPage类需要调用 get_cannonical_page_boundaries 甚至实现函数本身。至少它应该遍历它的PhysicalPage列表以实现所需的功能(lt () 和eq ()),以便我可以比较 b/w VirtualPages。
1.)目前我正在努力实现一些比较功能。一个很大的障碍是如何比较一个元组?我是否通过创建扩展某种类型的集合的自定义类来创建自己的lt () 函数:
2.) 比较函数的实现是否应该存在于VirtualPage类中?
我倾向于某种类型的 Set 数据结构,因为我正在建模的数据的属性具有唯一性的概念:即物理页面值不能重叠并且在某种程度上充当链接列表。通过@decorator 函数实现的setter 或getter 函数在这里也有用吗?