2016-07-07 139 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'