Python 列表为 *args?

标签 python function-composition

我有两个 Python 函数,它们都在函数定义中采用变量参数。举个简单的例子:

def func1(*args):
    for arg in args:
        print arg

def func2(*args):
    return [2 * arg for arg in args]

我想编写它们——如 func1(func2(3, 4, 5)) -- 但我不想要 argsfunc1成为([6, 7, 8],) , 我希望它是 (6, 7, 8) , 就好像它被称为 func1(6, 7, 8)而不是 func1([6, 7, 8]) .

通常,我会使用 func1(*func2(3, 4, 5))或者有 func1检查是否args[0]是一个列表。不幸的是,我不能在这个特定实例中使用第一个解决方案,要应用第二个解决方案需要在很多地方进行这样的检查(func1 中有很多函数)。

有没有人知道如何做到这一点?我想可以使用某种内省(introspection),但我可能是错的。

最佳答案

您可以考虑编写函数装饰器来检查第一个参数是否为列表。将装饰器应用于现有函数比修改函数要简单一些。

关于Python 列表为 *args?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2581217/

相关文章:

python - 如何用plotly绘制椭圆体

python - Python .py 文件的上下文菜单 "Open with IDLE"被吹走了

performance - Haskell:不同功能组成的性能差异?

haskell - 米田引理是否仅从理论角度有用?

python - 如何将这个格式奇怪的循环打印函数转换为具有类似输出的数据框?

python 3 : How to move an item from list x to list y and remove it from list x?

python - Matplotlib 在 Ipython 中不显示交互式图表

typescript - 如何通过换能器功能组成对象的变换

function - 部分应用Haskell中的几个函数

typescript - Typescript 中的函数组合无需重载