...
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. pkpy supports most of the syntax and semantics of python.
For performance and simplicity, some features are not implemented, or behave differently. 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 ## Unimplemented features
1. `**kwargs` in function definition. 1. `**kwargs` in function definition.
2. `__getattr__` and `__setattr__`. 2. `__getattr__` and `__setattr__`.
3. Descriptor protocol `__get__` and `__set__`. However, `@property` is implemented. 3. Descriptor protocol `__get__` and `__set__`. However, `@property` is implemented.
4. `__slots__` in class definition. 4. `__slots__` in class definition.
5. `import` module from a directory with `__init__.py`. 5. `import` module from a directory with `__init__.py`.
6. One element tuple. `(1,)` is not supported. 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. 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__`. 10. Inplace methods like `__iadd__` and `__imul__`.
11. `__del__` in class definition. 11. `__del__` in class definition.
## Different behaviors ## Different behaviors
1. positional and keyword arguments are strictly evaluated. 1. positional and keyword arguments are strictly evaluated.
2. When a generator is exhausted, `StopIteration` is returned instead of raised. 2. When a generator is exhausted, `StopIteration` is returned instead of raised.
3. `++i` and `--j` is an increment/decrement statement, not an expression. 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. 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.