目前,我有一个类似的功能:

def my_func(*args):
    #prints amount of arguments
    print(len(args))
    #prints each argument
    for arg in args:
        print(arg)


我想将多个参数传递给该函数,但以下内容对我不起作用。否则,它在星号*上给出语法错误。

my_func(
    *(1, 2, 3, 4)
    if someBool is True
    else *(1, 2)
)


我发现的解决方法是先放入1和2,然后再放入3和4,同时检查someBool。

my_func(
    1, 2,
    3 if someBool is True else None,
    4 if someBool is True else None
)


我对上面的命令很满意,因为我的函数检查None,但是如果有其他选择,我将很高兴感谢他们。

最佳答案

*移到... if ... else ...之外:

my_func(
    *((1, 2, 3, 4)
      if someBool is True
      else (1, 2))
)

关于python - 函数参数打包和解包Python,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53255230/

10-10 14:36