我知道Python的三元运算符:
result = a if b else c
但是如果a和b是同一个怎么办?让我举例说明一下:
tasks = ["foo", "bar"]
def tasksLeft():
return tasks
tasks.remove('foo')
my_tasks = tasksLeft() if tasksLeft() else 'no tasks left'
在第一次尝试中,tasksLeft()将评估为True,因此三元运算符将评估为["bar",]
。
tasks.remove('bar')
my_tasks = tasksLeft() if tasksLeft() else 'no tasks left'
在第二次尝试中,tasksLeft()将评估为False([]
),因此它将评估为默认字符串。
我的假设代码是:
if not my_tasks = tasksLeft():
my_tasks = 'no tasks left'
重点是评估刚分配的值,如果为False,则分配不同的值。
显然这只是我刚刚提出的一个例子,我知道它在语法上不正确,但是有一种不那么重复的写法吗?
答案 0 :(得分:5)
在Python中,逻辑运算符返回其中一个操作数(第一个可用于确定整个表达式的结果),因此您可以使用or
运算符:
my_tasks = tasksLeft() or 'no tasks left'