構文¶
Generated Sat 05 Feb 2022 04:06:58 UTC
演算子¶
MicroPython では内包表記の変数に := を使って代入できるが、CPython では SyntaxError になる。¶
原因: MicroPython はコードサイズに最適化されており、このケースをチェックしていない。
回避策: CPython 互換のコードを書く場合は、この動作に頼らない用にしてする。
サンプルコード:
print([i := -1 for i in range(4)])
CPy 出力: | uPy 出力: |
File "<stdin>", line 7
SyntaxError: assignment expression cannot rebind comprehension iteration variable 'i'
|
[-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
|