语法

Generated Wed 03 Jan 2024 12:07:50 UTC

操作符

MicroPython 允许使用 := 给变量赋值, CPython 会报语法错误.

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.

参考代码

print([i := -1 for i in range(4)])

CPy 输出

uPy 输出

  File "<stdin>", line 7
SyntaxError: assignment expression cannot rebind comprehension iteration variable 'i'
/bin/sh: ../ports/unix/micropython: No such file or directory

作用域

uPy requires spaces between literal numbers and keywords, CPy doesn’t

参考代码

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 输出

uPy 输出

0
1
1
/bin/sh: ../ports/unix/micropython: No such file or directory

Unicode

Unicode name escapes are not implemented

参考代码

print("\N{LATIN SMALL LETTER A}")

CPy 输出

uPy 输出

a
/bin/sh: ../ports/unix/micropython: No such file or directory