【问题标题】:Variable number of arguments in function函数中可变数量的参数
【发布时间】:2018-02-23 11:39:48
【问题描述】:

是否可以运行这样的函数:

def call(a,*alphabets,*numbers):
    print(a)
    print(alphabets)
    print(numbers)

我收到以下错误:

  File "<ipython-input-331-ddaef8a7e66f>", line 1
    def call(a,*alphabets,*numbers):
                          ^
SyntaxError: invalid syntax

谁能告诉我是否有其他方法可以做到这一点?

【问题讨论】:

  • 不,* 是贪婪的,它将消耗所有剩余的(位置)参数。无论如何,Python 怎么知道如何在两个不同的变量之间拆分它们?
  • 没错,我不知道怎么做。我有一个任务需要我做这样的事情。你知道任何替代方案吗?
  • 嗨@Omar,我需要在函数中传递至少2个可变数量的参数。
  • 你为什么需要那样的东西? "2 variable number of argument" 没有意义,因为第 2 个可变参数编号会被第 1 个自动失效。如果使用*args, **kwargs 无法完成,则要么设计不佳,要么 Python 不适合此任务。

标签: python function arguments multiple-arguments


【解决方案1】:

很简单:要求调用者传递两个列表(或元组或其他):

def call(a,alphabets=None,numbers=None):
    if alphabets is None:
        alphabets = []
    if numbers is None:
        numbers = []
    print(a)
    print(alphabets)
    print(numbers)


call("?")
call("?", ["a", "b", "c"])
call("?", ["a", "b", "c"], (1, 2, 3))
call("?"), None, (1, 2, 3))
# etc

【讨论】:

  • 如果调用者可以传递一个元组,为什么不def call(a,alphabets=(),numbers=()): print(a); ....
  • @VPfB 主要是因为我实际上很笨
猜你喜欢
  • 1970-01-01
  • 2021-02-16
  • 2010-12-07
  • 2011-01-09
  • 2022-12-11
  • 1970-01-01
  • 1970-01-01
  • 2017-11-26
  • 2011-11-26
相关资源
最近更新 更多