3 ms·
a = "test" if a < 1: print(a)
by 4c2383f5c88e911 9y ago
a = "test"
if a < 1:
print(a)
- anc84 9y agoWhat about it?
- PerryCox 9y agoIf you enter the code above into the website it responds with: maybe the code is wrong?
- anc84 9y agoIt does not do that for me, the Python 3 version appears with no changes.
- 4c2383f5c88e911 9y ago"test" < 1 is a TypeError in python3, and it works in python2 (returns False), it is part of the pitfalls of porting code to python 3.
- deleted 9y ago[deleted]
- tyingq 9y agoThere are some corner cases that run fine in python but trip up 2to3 tools, including this web based one. This code for example: print(set(x for x in range(2),))
- eesmith 9y ago"asdf".encode("hex") Is there a tool which knows to translate this to: import binascii binascii.b2a_hex(b"asdf") Even worse, if the string isn't known to be a byte string or ASCII unicode string, it's something like: import binascii binascii.b2a_hex(s.encode("ascii") if isinstance(s, str) else s)
- tyingq 9y agoSure...that's a different thing though. Python 3's choice to introduce new types and change behavior of existing types means no automated tool can really decide what to do. The snippet I posted is a little different in that it runs on both Python 2 as well as 3, but the 2to3 tools choke on it.
- eesmith 9y agoAhh, yes, you're right. I'm still irritated by this specific case because my code and documentation used s.encode("hex") often, and it took a while to fix them all. Especially as the original code used both str and unicode hex-encoded values, so I couldn't drop in binascii. I ended up adding a C extension function.
- eesmith 9y agoWhat is a 2to3 tool supposed to do here? python2 prints "set([0, 1])" while python3 prints "{0,1}". Is it supposed to normalize the str() so it matches Python2? For that matter, the str() for floats has changed: % python Python 2.7.10 (default, Jul 30 2016, 19:40:32) [GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> print(-1.0000000000000002) -1.0 >>> % python3 Python 3.6.0 (v3.6.0:41df79263a11, Dec 22 2016, 17:23:13) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> print(-1.0000000000000002) -1.0000000000000002