【发布时间】:2019-09-09 20:34:45
【问题描述】:
如果特定的输入变量是 1 vs True,我有一些代码我想做不同的事情。 (简而言之,是指对几个对象中的哪一个做某事,True 表示对所有对象都做这件事,但这与这个问题并不特别相关。)
目前,我使用的或多或少相当于:
if x is True:
# Do something
elif x is 1:
# Do something else
else:
# More possibilities follow...
但是在 Python 3.8 中,我现在得到了
SyntaxWarning: "is" with a literal. Did you mean "=="?
嗯,不,我没有。使用== 不区分True 和1,因为在python 中True == 1。
但听起来 python 开发人员认为将is 与文字一起使用是always a bug。这只是一个警告,而不是错误,所以我现在还可以,但是我应该切换到什么非错误的方式来做到这一点?
【问题讨论】:
-
你试过
True is x吗? -
我不喜欢这样的警告。这意味着您有更复杂且可能未记录的语法。规则不应说:“您可以在此处插入任何术语,除非它具有以下形式”。如果变量是可接受的,那么文字也应该是。
标签: python-3.8