代码之家  ›  专栏  ›  技术社区  ›  IndigoChild

函数中的参数数目可变

  •  -2
  • IndigoChild  · 技术社区  · 7 年前

    是否可以运行如下函数:

    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
    

    有没有人能告诉我有没有别的方法?

    1 回复  |  直到 7 年前
        1
  •  4
  •   bruno desthuilliers    7 年前

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

    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