Python and is not None
我在处理这段代码时遇到了一些问题:
1 2 | if not fundbenchmark.endswith(("Index","INDEX")) and fundbenchmark is not None: fundbenchmark ="%s%s" % (fundbenchmark," Index") |
Traceback:
1 | AttributeError: 'NoneType' object has no attribute 'endswith' |
显然,当
我的假设是正确的还是其他地方可以找到解释?
1 | if fundbenchmark is not None and not fundbenchmark.endswith(("Index","INDEX")): |
表达式按顺序计算。这意味着在Python有机会检查该值是否为空之前,将首先调用
你应该交换支票的顺序。
你查了一个也没查到。
我不会为none编写显式检查,而是将对象本身用作布尔表达式(请参见为什么在python中是"if not someobj:"Better than"if someobj==none:"?有关详细信息)。
1 2 | if fundbenchmark and fundbenchmark.endswith(("Index","INDEX")): fundbenchmark ="%s%s" % (fundbenchmark," Index") |