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