【问题标题】:How do I pass variable length arguments to parameters of another function?如何将可变长度参数传递给另一个函数的参数?
【发布时间】:2019-03-21 17:21:56
【问题描述】:

如何将可变长度参数传递给另一个函数的参数?

def fun(a,b,c):
    #calculating
    pass

from inspect import signature

def example(*args):
    if len(args) >= len(signature(fun).parameters):
        fun(args); # how do i do this without modifying fun function
        return
    print("error")

【问题讨论】:

  • 这里你可能想使用fun(*args[:3]),不是吗?

标签: python python-3.x parameter-passing


【解决方案1】:

使用切片确保您拥有正确数量的参数,然后使用解包将它们作为单独的参数传递。

def example(*args):
    numargs = len(signature(fun).parameters)
    if len(args) >= numargs:
        return fun(*args[:numargs])
    print("not enough arguments")

【讨论】:

  • 所以 * 是元组拆包运算符?
  • 它解压任何序列,不仅仅是元组,但是是的。
【解决方案2】:

fun(args) 更改为fun(*args[:3])。这只需要 args 的前 3 个元素并将它们解包。

编辑:正如kindall在他的回答中所写,您还应该参数化numargs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多