问题标签 [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 - 如何将参数传递给传递给 itertools.groupby 的 keyfunc?
所以!
这是一个使用的函数itertoos.groupby
:
现在,输出如下:
如您所见,连续的分隔符被连接成一个字符串。我希望这种行为是可选的(由sepcat
我的函数的参数表示),但这是我遇到障碍的地方......如何将参数传递给separators.get
?
可以functools
在这里帮助我吗?
python - 将 f(x) 转换为 f(*x) 的标准 Python 包装器?
我不断遇到以下包装器的用例:
标准 Python 2 库中是否有已经做到这一点的东西?我看了看functools
,但找不到任何东西。
对于上下文,这是一个最近的用例:
python - functools.wraps 不允许我用 Python 3 中的类包装函数
我想为一些将文件作为第一个参数的函数编写一个装饰器。装饰器必须实现上下文管理器协议(即将包装的函数变成上下文管理器),所以我想我需要用一个类来包装函数。
我对装饰器模式并没有真正的经验,并且以前从未实现过上下文管理器,但是我编写的内容适用于 Python 2.7,如果我注释掉该wraps
行,它也适用于 Python 3.3。
取消注释该wraps
行时出现的错误发生在内部update_wrapper
:
我知道文档并没有说我什至可以用functools.wraps
这样的类来包装函数,但话又说回来,它只适用于 Python 2。有人可以解释一下这个回溯到底告诉我什么以及我应该做什么wraps
在两个版本的Python上实现效果?
编辑:我错了。上面的代码没有做我想要的。我希望能够在有和没有 with
的情况下使用该函数,例如内置函数open
。
上面的代码将修饰函数转换为上下文管理器。我希望能够做到:
也
所以我的代码版本应该大概如下所示:
随意评论我忽略的任何事情。
注意:JF Sebastian 的课程版本似乎可以工作:
我基本上wraps
从课堂上删除了并改为return CManager
:
python - itertools.accumulate() 与 functools.reduce()
在 Python 3.3 中itertools.accumulate()
,通常重复地对提供的迭代应用加法运算,现在可以将函数参数作为参数;这意味着它现在与functools.reduce()
. 粗略一看,现在两者之间的主要区别似乎是:
accumulate()
默认为求和,但不允许您显式提供额外的初始条件,reduce()
而不默认为任何方法,但允许您提供用于 1/0 元素序列的初始条件,并且accumulate()
先取可迭代,先reduce()
取函数。
两者之间还有其他区别吗?或者这只是两个函数的行为问题,最初不同的用途开始随着时间的推移而收敛?
python - 使用 functools.partial 进行跟踪
我正在开发一个使用该trace
模块来跟踪代码执行的项目。
当我调用trace.Trace(args).run(stuff)
时,stuff
必须是代码对象或字符串。
现在,我正在构建我将通过调用来调用的函数functools.partial
。这部分完全按照我的需要工作。
但是,当我到达跟踪部分时,我无法使用functools.partial
对象执行跟踪。我不能使用myFuncToolsPartialObject.func.func_name(args)
,因为我不能保证该函数将被导入本地范围。我可以通过调用 import 来解决这个问题,但目前我不想这样做(我们称之为个人偏好)。
有没有办法可以将functools.partial
对象转换为代码对象以便正确调用跟踪?
我知道我可以要求myFuncToolsPartialObject.func.func_code
,但我不知道如何在所需的参数上调用它
python - functools partial 是如何做到的?
我无法理解部分函数在 functools 中的工作原理。我从这里得到以下代码:
现在排队
我知道我传递给incr
它的任何参数都将传递y
给lambda
哪个将返回sum(1, y)
ie 1 + y
。
我明白那个。但我不明白这一点incr2(4)
。
get 如何像偏函数4
一样传递?x
对我来说,4
应该替换sum2
. x
和之间有什么关系4
?
python - 在 python 中查找替换列表的 itertools 或 functools
我有一组有时无效的字符串,我想用更好的字符串替换它们。我一直在玩 functools 和 itertools 并想尝试将它们应用于问题,但我有点卡住了。这是我所拥有的:
我想要一个函数算法,对于 mylist 中的每个字符串,对于替换中的每个替换,string.replace(replacement[0],replacement[1])。
想到了什么,比如……
但是第一个需要额外的参数,第二个说列表对象没有属性替换。有没有一种巧妙的实用方法来解决这个问题?
python - Python + Kivy:时钟不适用于部分(关键字)
在上面的代码中,_procedural_reloading() 是一个类的方法,它获取一个包含一些图像的列表,并尝试一个一个地重新加载()它们。你猜怎么着,它不起作用,因为它说 _procedural_reloading 为关键字 gen 获得了多个值!
奇怪的是,如果我将 gen 作为参数(而不是关键字参数)传递,它就可以正常工作,在这里:
为什么 gen=gen 不起作用?
更详细地说,到目前为止,我什至一次都无法使用 Clock 传递任何关键字参数!我总是必须按顺序一个一个地排列参数并传递它们......这是一个已知问题吗?还是我在那里做错了什么?我觉得我好笨!
编辑:
没有默认值的 gen在我的情况下也不起作用:
python - pyqt 计时器不返回值或错误
我正在尝试使用带有 pyqt 的计时器。代码如下,但它不打印任何东西,我也没有收到错误。有谁知道出了什么问题?
谢谢
编辑更新:
所以这是我使用的完整代码的一个片段,它有点复杂,可能是一个不同的问题,但结果是一样的。
结构是这样的:
我的目标是让一个按钮单击播放,并且在某个时间间隔在 qtgraphic 小部件中发生一些事情,然后停止按钮停止播放。我在这里的另一个问题中找到了 functools,但我不确定它是否正确。
python - 如何将 memory_profiler(python 模块)与类方法一起使用?
我想分析类方法的时间和内存使用情况。我没有找到一个开箱即用的解决方案(有这样的模块吗?),我决定使用timeit
时间分析和memory_usage
模块memory_profiler
。
我遇到了使用memory_profiler
. 我尝试了不同的变体,但都没有奏效。
当我尝试使用 partial from 时functools
,我收到此错误:
顺便说一句,完全相同的方法适用于timeit
函数。
当我尝试按原样使用lambda
时,出现此错误:
如何使用 memory_profiler 处理类方法?
PS:我有内存分析器(0.26)(安装了pip)。
UPD:这实际上是错误。您可以在此处查看状态:https ://github.com/pythonprofilers/memory_profiler/issues/47