.. This document was generated by tools/gen-cpydiff.py Syntax ====== Generated Sun 16 Jan 2022 23:50:22 UTC Operators --------- .. _cpydiff_syntax_assign_expr: MicroPython allows using := to assign to the variable of a comprehension, CPython raises a SyntaxError. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ **Cause:** MicroPython is optimised for code size and doesn't check this case. **Workaround:** Do not rely on this behaviour if writing CPython compatible code. Sample code:: print([i := -1 for i in range(4)]) +-------------------------------------------------------------------------------------------+----------------------+ | CPy output: | uPy output: | +-------------------------------------------------------------------------------------------+----------------------+ | :: | :: | | | | | File "", line 7 | [-1, -1, -1, -1] | | SyntaxError: assignment expression cannot rebind comprehension iteration variable 'i' | | +-------------------------------------------------------------------------------------------+----------------------+ Spaces ------ .. _cpydiff_syntax_spaces: uPy requires spaces between literal numbers and keywords, CPy doesn't ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sample code:: try: print(eval("1and 0")) except SyntaxError: print("Should have worked") try: print(eval("1or 0")) except SyntaxError: print("Should have worked") try: print(eval("1if 1else 0")) except SyntaxError: print("Should have worked") +-------------+------------------------+ | CPy output: | uPy output: | +-------------+------------------------+ | :: | :: | | | | | 0 | Should have worked | | 1 | Should have worked | | 1 | Should have worked | +-------------+------------------------+ Unicode ------- .. _cpydiff_syntax_unicode_nameesc: Unicode name escapes are not implemented ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sample code:: print("\N{LATIN SMALL LETTER A}") +-------------+-----------------------------------------------+ | CPy output: | uPy output: | +-------------+-----------------------------------------------+ | :: | :: | | | | | a | NotImplementedError: unicode name escapes | +-------------+-----------------------------------------------+