Identity is not the same thing as equality in Python. In these instances, we want the latter. Use ==/!= to compare str, bytes, and int literals. $ __python__ ```python >>> proj = "pro" >>> proj += 'j' >>> proj 'proj' >>> proj == 'proj' True >>> proj is 'proj' False >>> 0 == 0.0 True >>> 0 is 0.0 False ``` [flake8](http://flake8.pycqa.org) testing of https://github.com/rwightman/pytorch-image-models on Python 3.7.1 $ __flake8 . --count --select=E9,F63,F72,F82 --show-source --statistics__ ``` ./data/loader.py:48:23: F823 local variable 'input' defined as a builtin referenced before assignment yield input, target ^ ./models/dpn.py:170:12: F632 use ==/!= to compare str, bytes, and int literals if block_type is 'proj': ^ ./models/dpn.py:173:14: F632 use ==/!= to compare str, bytes, and int literals elif block_type is 'down': ^ ./models/dpn.py:177:20: F632 use ==/!= to compare str, bytes, and int literals assert block_type is 'normal' ^ 3 F632 use ==/!= to compare str, bytes, and int literals 1 F823 local variable 'input' defined as a builtin referenced before assignment 4 ``` __E901,E999,F821,F822,F823__ are the "_showstopper_" [flake8](http://flake8.pycqa.org) issues that can halt the runtime with a SyntaxError, NameError, etc. These 5 are different from most other flake8 issues which are merely "style violations" -- useful for readability but they do not effect runtime safety. * F821: undefined name `name` * F822: undefined name `name` in `__all__` * F823: local variable name referenced before assignment * E901: SyntaxError or IndentationError * E999: SyntaxError -- failed to compile a file into an Abstract Syntax Treepull/1/head
parent
fee607edf6
commit
51f85702a7
Loading…
Reference in new issue