Raymond Hettinger <raymond.hettin...@gmail.com> added the comment:

The code in the screenshot looks correct.



>>> i = 0
>>> i is int    
False
>>> type(i) is int
True

The code above does not get warning because "int" is a variable.  This kind of 
comparison is always allowed and will work reliably.



>>> i is 0
<stdin>:1: SyntaxWarning: "is" with a literal. Did you mean "=="?
True

The above code generates a warning because 0 is a numeric literal and there may 
be more than one instance of that literal.  While this kind of comparison is 
allowed, it is unreliable because numeric literals are not guaranteed to be 
singletons:

    >>> x = 600
    >>> (x + x) is 1200
    <stdin>:1: SyntaxWarning: "is" with a literal. Did you mean "=="?
    False



The reliable and correct way to test numeric values with an equality:

    >>> x + x == 1200
    True

----------
nosy: +rhettinger -Dennis Sweeney, Jelle Zijlstra

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue46941>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to