python-3.x - 如何将可调用对象作为参数传递给 `functools.partial`

标签 python-3.x functools

这段代码

import itertools
import functools

i = itertools.cycle(["1", "2"])

def f1():
    return next(i)

def f2(a):
    print(a)

f = functools.partial(f2, f1())

f()
f()

产生输出1 1。 是否有一种明显的方法可以防止在创建 f 时计算 f1,因此结果输出将为 1 2

最佳答案

使用闭包代替 functools 怎么样?

import itertools

i = itertools.cycle(["1", "2"])

def f1():
    return next(i)

def f2(a):
    print(a)

def wrap(target, fun):
    def inner():
        target(fun())
    return inner

f = wrap(f2, f1)

f()  # 1
f()  # 2

关于python-3.x - 如何将可调用对象作为参数传递给 `functools.partial`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60199262/

相关文章:

python - Python2 的内置 reduce 和 functools.reduce 有何不同?

python - 如何将 numba 与 functools.reduce() 一起使用

python - 记住一个函数,以便当我在Python中重新运行该文件时不会将其重置

python 模拟 : @wraps(f) problems

python-3.x - 如何将 reduce 函数的每次迭代存储在列表中?

python - URL 重定向返回 403 而不是 302

python-3.x - 使用日期值 reshape /透视数据

python - Heroku:sh:cython:未找到

python - 通过 View 提交表单时获取 "NOT NULL constraint"。通过/admin添加时工作正常

python - 如何让物体在一段时间后消失?