我知道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'

第一次尝试时,taskLeft()的评估结果为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,则分配一个不同的值。

显然,这只是我刚才提出的一个示例,我知道这在语法上是不正确的,但是有没有那么重复的书写方式?

最佳答案

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

my_tasks = tasksLeft() or 'no tasks left'

关于python - 评估变量分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38250238/

10-11 08:54