- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 functools 模块中的部分方法来将函数映射到一系列值:
def basic_rule(p,b,vx=1,**kwargs):
return (p / b) if vx != 0 else 0
def rule5(func,**kwargs):
vals = map(functools.partial(func,**kwargs), range(1,kwargs['b']+1))
return [x for i,x in enumerate(vals[:-1]) if x >= vals[i+1]] == []
rule5(basic_rule,p=100,b=10000)
这是我在第 5 行遇到的错误:
----> return map(functools.partial(func,**kwargs), range(1,kwargs['b']+1))
TypeError: basic_rule() got multiple values for keyword argument 'p'
看起来 functools.partial 正在尝试将范围分配给参数 p,即使我已经为其分配了一个值。我正在尝试将范围分配给 vx 的值。知道如何才能实现这一点吗?
编辑:向代码添加了一些额外的上下文。本质上我想要测试 5 做的是确保给定函数的结果随着 vt 的增加而增加,以便 `func(vt=1) < func(vt=2)... < func(vt =n)。
最佳答案
functools.partial生成一个将参数 receiveid 存储在 2 个属性中的部分:
参数
存储位置参数keywords
存储所有基于关键字的参数因此,部分可以完全按照预期调用原始函数。换句话说,当您使用一个参数(比方说 1)调用结果部分时,它将与以下内容相同:
original_func(1, **kwargs)
由于您的 kwargs
包含第一个参数 - 并且您将“1”作为位置参数传递 - 您会收到错误。
我不确定它在这种特殊情况下是否有效,但可以使用 inspect.getargspec 一个解决方案。从 kwargs 中提取可以作为位置参数传递的参数。在这种情况下,rule5
函数将类似于:
def rule5(func, **kwargs):
# let's save 'b' argument because we'll need it in the range call
b = kwargs['b']
original_args = inspect.getargspec(func).args
# extract from kwargs all arguments that can be passed as positional
new_args = [kwargs.pop(key) for key in original_args if key in kwargs]
# construct the partial passing as much positional arguments as possible
fn = functools.partial(func, *new_args, **kwargs)
# now map will pass the range result as the next positional argument
vals = map(fn, range(1, b+1))
return [x for i,x in enumerate(vals[:-1]) if x >= vals[i+1]] == []
关于python - functools.partial : TypeError: got multiple values for keyword argument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38174751/
模块functools 引用reduce 定义在_functools 中。同时 _functools 指的是在 functools 中定义的 partial 我在尝试为猴子修补目的创建命名空间副本时遇
我有以下两个装饰器: 装饰器1: import functools def overrides(interface_class): print('interface_class:', inte
我有一个函数,我正在尝试制作它的部分版本,然后在 reduce 语句中应用该部分函数。 偏函数本身是有效的——因为我可以正常地用一组参数调用它,它会返回正确的答案。但是,如果在 reduce 下应用它
考虑以下代码: import functools import inspect class Foo: def foo_fn(self, hello, world): print
我正在尝试 pickle 一个 SortedListWithKey,我正在使用 functools 中的 cmp_to_key() 将比较函数转换为键函数。但是, cmp_to_key() 似乎使我的
考虑以下几点: from functools import partial def add(a, b, c): return 100 * a + 10 * b + c add_part = pa
我知道 collections.namedtuple 的存在和目的,但我注意到,至少在 IDLE (3.2.2) 中,这个工厂函数也在 functools: >>> import functools
我一直在使用 Python,我设置了以下代码情况: import timeit setting = """ import functools def f(a,b,c): pass g = fu
一.简单介绍: functools模块用于高阶函数:作用于或返回其他函数的函数。一般而言,任何可调用对象都可以作为本模块用途的函数来处理。 functools.parti
我在 Windows 上使用 Python 3.7 运行每个代码时都会发生此错误: Traceback (most recent call last): File "test.py", line
以下是我的代码片段。当我运行该程序时,出现以下错误。 @functools.total_ordering AttributeError: 'module' object has no attrib
回答一个问题时,我注意到我不知道如何在reduce中执行append后返回列表,例如 import functools futures = [1,2,3] records = functools.re
#!/usr/bin/python from functools import wraps def logged(func): @wraps(func) def with_loggin
是否可以在项目被逐出时为 functools.lru_cache 定义回调?在回调中,缓存的值也应该存在。 如果没有,也许有人知道支持逐出和回调的轻量级类字典缓存? 最佳答案 我将发布我使用的解决方案
我在使用 functools.partial 时遇到问题。 我的代码: selected_words = ['awesome', 'great', 'fantastic', 'amazing', 'l
我有以下代码: import functools import random import inspect def myfirst(a, b): return a + b def myseco
我想要一个可以使用 functools.lru_cache 的函数,但默认情况下不能。我正在寻找一种方法来使用可用于禁用 lru_cache 的函数参数。目前,我有两个版本的函数,一个有 lru_ca
我目前面临“functools.reduce(operator.iadd,...)”改变原始输入的问题。例如 我有一个简单的数据框 df = pd.DataFrame([[['A', 'B']], [
在 Python Cookbook 部分 9.5. Defining a Decorator with User Adjustable Attributes我一直难以理解以下代码中 functools
我发现 functools.partial 有很多很棒的用例。 但是,我发现需要定义我称之为 partial_right 的东西。它就像部分的,但从“右边”绑定(bind)非 kwargs。 我的问题
我是一名优秀的程序员,十分优秀!