2016-07-07 92 views
5

我知道Python的三元运算符:评估变量赋值

result = a if b else c 

但如果什么和b是一回事吗?让我来举例说明吧:

tasks = ["foo", "bar"] 
def tasksLeft(): 
    return tasks 

tasks.remove('foo') 
my_tasks = tasksLeft() if tasksLeft() else 'no tasks left' 

在第一次尝试,tasksLeft()将评估为真,那么三元运算符将评估为["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' 

的一点是,刚分配的价值进行评估,并且如果是假的,然后分配一个不同的值。

很明显,这只是我刚才提出的一个例子,我知道它在语法上不正确,但是有没有一种不太重复的写法呢?

+7

'my_tasks = tasksLeft ()或'没有任务离开' – vaultah

+0

啊,你是对的,我没有想到@vaultah。谢谢! –

+0

您可以将其作为答案发布。 –

回答

5

在Python逻辑运算符返回它们的操作数(可以用来确定总的表达式的结果是第一个)中的一个,这样就可以使用or操作符:

my_tasks = tasksLeft() or 'no tasks left'