Python использовать функцию print () в тройном условном операторе? - PullRequest
0 голосов
/ 21 октября 2018

Я не понимаю, почему это не удается

print('Yes') if True else print('No')
  File "<stdin>", line 1
    print('Yes') if True else print('No')
                                  ^
SyntaxError: invalid syntax

print('Yes') if True == False else print('No')
  File "<stdin>", line 1
    print('Yes') if True == False else print('No')
                                           ^
SyntaxError: invalid syntax

Но это работает

print('Yes') if True else True
Yes

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Это потому, что в python 2, когда вы пишете:

print('Yes') if True else True

Это на самом деле

print(('Yes') if True else True)

Так что вы можете написать:

print('Yes') if True else ('No')

Или,немного красивее

print('Yes' if True else 'No')

Это означает, что вы можете использовать только троичные операции над «аргументом» печати в python2.

0 голосов
/ 21 октября 2018

Функция print является специальным оператором в Python 2, поэтому ее нельзя использовать в сложных выражениях в строке тернарного оператора.Ваш код будет работать в Python 3.

...