评估变量赋值

时间:2016-07-07 16:03:16

标签: python python-3.5

我知道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,则分配不同的值。

显然这只是我刚刚提出的一个例子,我知道它在语法上不正确,但是有一种不那么重复的写法吗?

1 个答案:

答案 0 :(得分:5)

在Python中,逻辑运算符返回其中一个操作数(第一个可用于确定整个表达式的结果),因此您可以使用or运算符:

my_tasks = tasksLeft() or 'no tasks left'