函数参数打包和解包Python

时间:2018-11-12 02:18:22

标签: python python-3.x function ternary-operator

当前,我有一个像这样的函数:

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
)

我对上面的命令很满意,因为我的函数会检查“无”,但是如果有其他选择,我将非常感谢他们。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您需要额外的一组括号。另外,您无需说is True来检查布尔值在python中是否为“真”,从而使其为my_func(*((1, 2, 3, 4) if someBool else (1, 2)))