句法

2021 年 7 月 9 日星期五 00:08:56 UTC 生成

运营商

MicroPython 允许使用 := 分配给理解的变量,CPython 会引发 SyntaxError。

原因: MicroPython 针对代码大小进行了优化,不检查这种情况

解决方法:如果编写 CPython 兼容代码,请不要依赖此行为。

示例代码:

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

CPy 输出:

uPy 输出:

  File "<stdin>", line 7
    print([i := -1 for i in range(4)])
             ^
SyntaxError: invalid syntax
[-1, -1, -1, -1]

空间

uPy 需要文字数字和关键字之间的空格,CPy 不需要

示例代码:

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
Should have worked
Should have worked
Should have worked

统一码

未实现 Unicode 名称转义

示例代码:

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

CPy 输出:

uPy 输出:

a
NotImplementedError: unicode name escapes