我尝试连接两个像这样的字符串
print 'AAA' if True else 'BBB' + 'CCC' if True else 'DDD'
在终端中,它只是打印像'AAA'而不是'AAACCC'。为什么?还有其他替代方式吗?
答案 0 :(得分:2)
+
的{{3}}高于条件表达式。
结果,您的表达式分组如下:
('AAA') if (True) else (('BBB' + 'CCC') if (True) else ('DDD'))
您需要使用括号来覆盖优先级:
print ('AAA' if True else 'BBB') + ('CCC' if True else 'DDD')
演示:
>>> print 'AAA' if True else 'BBB' + 'CCC' if True else 'DDD'
AAA
>>> print 'AAA' if False else 'BBB' + 'CCC' if True else 'DDD'
BBBCCC
>>> print ('AAA' if True else 'BBB') + ('CCC' if True else 'DDD')
AAACCC