在Python条件运算符之前:>>> age=20
>>> 'legal' if age>=21 else 'not legal'
'not legal'
过去有一种基于索引元组的“货物代码”作为解决办法:
^{pr2}$
你可以拆开你发布的两个备选方案,看看引擎盖下发生了什么:>>> import dis
>>> def f():
... x=True and "asdf" or "qwer"
... y=False and "asdf" or "qwer"
...
>>> dis.dis(f)
2 0 LOAD_GLOBAL 0 (True)
3 POP_JUMP_IF_FALSE 12
6 LOAD_CONST 1 ('asdf')
9 JUMP_IF_TRUE_OR_POP 15
>> 12 LOAD_CONST 2 ('qwer')
>> 15 STORE_FAST 0 (x)
3 18 LOAD_GLOBAL 1 (False)
21 POP_JUMP_IF_FALSE 30
24 LOAD_CONST 1 ('asdf')
27 JUMP_IF_TRUE_OR_POP 33
>> 30 LOAD_CONST 2 ('qwer')
>> 33 STORE_FAST 1 (y)
36 LOAD_CONST 0 (None)
39 RETURN_VALUE
你可以看到价值观。您还可以查看boolean operators的短路行为,并看到这是记录在案的行为。在