...
This commit is contained in:
BLUELOVETH 2023-05-30 15:00:02 +08:00
parent f1ddde5599
commit d987b70873

View File

@ -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.
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.