句法¶
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
|