pocketpy/docs/features/differences.md
BLUELOVETH d1b06f0633 ...
2023-05-30 14:49:53 +08:00

1.3 KiB

icon title order
dot Comparison with CPython 99

cpython is the reference implementation of the Python programming language. It is written in C and is the most widely used implementation of Python.

The design goal

pkpy aims to be an alternative to lua for game scripting, not cpython for general purpose programming.

  • For syntax and semantics, pkpy is designed to be as close to cpython as possible.
  • For ecosystem and others, pkpy is not compatible with cpython.

pkpy supports most of the syntax and semantics of python. For performance and simplicity, some features are not implemented, or behave differently.

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].
  8. Access the exception object in try..except.

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.