在 Python 中通过三元运算符传递函数参数
Pass functional arguments through ternary operator in Python
这可能是一道基础题,因为我还在学习Python。但是假设我想做这样的事情,
def add(a, b):
return a + b
a, b, c, d = 1, 2, 3, 4
sum = add(a, b if b == 2 else c, d)
基本上,我试图从三元运算符内部传递多个函数参数(如果可能的话,我想要一个类似的解决方案)。此代码当前给出以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: add() takes 2 positional arguments but 3 were given
我还尝试了什么:
add((a, b) if b == 2 else (c, d))
add(*(a, b) if b == 2 else *(c, d))
sum_ = add(a, b) if b==2 else add(c, d)
以上语句等同于
sum_ = 0
if b==2:
sum_ = add(a, b)
else:
sum_ = add(c, d)
如果感到困惑,最好写一个完整的声明,然后尽量简单明了。
另外,建议不要使用变量名的内置函数
>>> add(*((a, b) if b == 2 else (c, d)))
3
正如评论中所指出的,您需要这么多括号来执行此操作这一事实是一个好兆头,表明这不是构建此代码的好方法。
怎么样
add(*(a, b) if b == 9 else (c, d))
类似于
add(*((a, b) if b == 9 else (c, d)))
问题出在函数参数上,你用 2 个变量声明了一个函数,但你传递了 3 个,我的理解是你将参数传递给函数,它 return 参数的总和,你可以这样做
def add(*args):
return sum(args)
a, b, c, d = 1, 2, 3, 4
value = add(a, b if b == 2 else c, d)
*不要将 sum 声明为变量它是 python *
的内置函数
这可能是一道基础题,因为我还在学习Python。但是假设我想做这样的事情,
def add(a, b):
return a + b
a, b, c, d = 1, 2, 3, 4
sum = add(a, b if b == 2 else c, d)
基本上,我试图从三元运算符内部传递多个函数参数(如果可能的话,我想要一个类似的解决方案)。此代码当前给出以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: add() takes 2 positional arguments but 3 were given
我还尝试了什么:
add((a, b) if b == 2 else (c, d))
add(*(a, b) if b == 2 else *(c, d))
sum_ = add(a, b) if b==2 else add(c, d)
以上语句等同于
sum_ = 0
if b==2:
sum_ = add(a, b)
else:
sum_ = add(c, d)
如果感到困惑,最好写一个完整的声明,然后尽量简单明了。
另外,建议不要使用变量名的内置函数
>>> add(*((a, b) if b == 2 else (c, d)))
3
正如评论中所指出的,您需要这么多括号来执行此操作这一事实是一个好兆头,表明这不是构建此代码的好方法。
怎么样
add(*(a, b) if b == 9 else (c, d))
类似于
add(*((a, b) if b == 9 else (c, d)))
问题出在函数参数上,你用 2 个变量声明了一个函数,但你传递了 3 个,我的理解是你将参数传递给函数,它 return 参数的总和,你可以这样做
def add(*args):
return sum(args)
a, b, c, d = 1, 2, 3, 4
value = add(a, b if b == 2 else c, d)
*不要将 sum 声明为变量它是 python *
的内置函数