|
|
@@ -16,24 +16,29 @@ game scripting, not cpython for general purpose programming.**
|
|
|
|
|
|
pkpy supports most of the syntax and semantics of python.
|
|
|
For performance and simplicity, some features are not implemented, or behave differently.
|
|
|
+The easiest way to test a feature is to [try it on your browser](https://pocketpy.dev/static/web/).
|
|
|
|
|
|
## Unimplemented features
|
|
|
+
|
|
|
1. `**kwargs` in function definition.
|
|
|
2. `__getattr__` and `__setattr__`.
|
|
|
3. Descriptor protocol `__get__` and `__set__`. However, `@property` is implemented.
|
|
|
4. `__slots__` in class definition.
|
|
|
5. `import` module from a directory with `__init__.py`.
|
|
|
6. One element tuple. `(1,)` is not supported.
|
|
|
-7. Unpacking in `list` and `dict` literals, i.e. `[1, 2, *a]`.
|
|
|
+7. Unpacking in `list` and `dict` literals, e.g. `[1, 2, *a]`.
|
|
|
8. Access the exception object in try..except.
|
|
|
-9. `else` clause in try..except.
|
|
|
+9. `else` clause in try..except.
|
|
|
10. Inplace methods like `__iadd__` and `__imul__`.
|
|
|
11. `__del__` in class definition.
|
|
|
|
|
|
## Different behaviors
|
|
|
+
|
|
|
1. positional and keyword arguments are strictly evaluated.
|
|
|
2. When a generator is exhausted, `StopIteration` is returned instead of raised.
|
|
|
3. `++i` and `--j` is an increment/decrement statement, not an expression.
|
|
|
-4. `int` and `float` are not subclasses of `bool`.
|
|
|
+4. `int` does not derive from `bool`.
|
|
|
5. `int` is not of unlimited precision. In 32 bit system, `int` and `float` is 30 bit; in 64 bit system, they are both 62 bit.
|
|
|
-6. `__ne__` is not required. Define `__eq__` is enough.
|
|
|
+6. `__ne__` is not required. Define `__eq__` is enough.
|
|
|
+7. Raw string cannot have boundary quotes in it, even escaped. See [#55](https://github.com/blueloveTH/pocketpy/issues/55).
|
|
|
+8. In a starred unpacked assignment, e.g. `a, b, *c = x`, the starred variable can only be presented in the last position. `a, *b, c = x` is not supported.
|