3 ms·
Not by design, fortunately: https://bugs.python.org/issue43833 https://bugs.python.org/issue43833
by kristaps 5y ago
Not by design, fortunately: https://bugs.python.org/issue43833 https://bugs.python.org/issue43833
- xxpor 5y agoThat hasn't been confirmed. Are we sure that it's not an inherent ambiguity in the grammar?
- joshuamorton 5y agoThat's not totally clear. A bug being filed doesn't mean it's accepted. And this has been (ab)used for quite some time in various python codegolf. See https://codegolf.stackexchange.com/a/56 https://codegolf.stackexchange.com/a/56 from 2011.
- Sohcahtoa82 5y agoIt is 100% by design. It's even documented. https://docs.python.org/3/reference/lexical_analysis.html#whitespace-between-tokens https://docs.python.org/3/reference/lexical_analysis.html#wh... This is not a bug.
- _kst_ 5y agoThe cited documentation says: > Whitespace is needed between two tokens only if their concatenation could otherwise be interpreted as a different token (e.g., ab is one token, but a b is two tokens). The two tokens in this case are "0xf" and "or". Their concatenation cannot be interpreted as a different token, because "0xfor" is not a valid token. Therefore, if I'm reading the rule correctly, whitespace is needed in this case. "0xffor" is another interesting case. It's also not a valid token, but it could be interpreted as two tokens in two different ways: "0xf" "for" or "0xff" "or". (Python does the latter. I presume it uses something like C's "maximal munch" rule.)
- Sohcahtoa82 5y agoYour conclusion is the exact opposite of what the documentation explicitly states. > Whitespace is needed between two tokens only if their concatenation could otherwise be interpreted as a different token (e.g., ab is one token, but a b is two tokens). Because the concatenation of "0xf" and "or" can't be interpreted as a different token, the whitespace is not needed.
- _kst_ 5y agoYou're right, and I was wrong. I dislike the rule, and I strongly think that "0xfor" should require whitespace between "0xf" and "or" (I'm sure that influenced my reading), but you're right about what the rule says. (Apparently I can't edit my previous comment.)