python 萌新(学了 3 个月左右还算吗)
一直用 condition and true or false 这个三目运算表达式(因为比 true if condition else false 少一个字符...)
今天码程序的时候发现用前一种表达式得到的结果非预期
Python 3.4.2 和 2.7.9 测试过都一样
from dogpile.cache import make_region
from dogpile.cache.api import NoValue
cache = make_region().configure(
'dogpile.cache.dbm', arguments={'filename': '/tmp/cache.dbm'})
session = cache.get('NO_EXISTS_KEY')
print(isinstance(session, NoValue) and None or session)
print(None if isinstance(session, NoValue) else session)
# Output <dogpile.cache.api.NoValue object at 0x107611c10>
# Output None