Back to Micropython

Python 3.7

docs/differences/python_37.rst

1.28.011.4 KB
Original Source

.. _python_37:

Python 3.7

New Features:

.. table:: :widths: 20 60 20

+--------------------------------------------------------+--------------------------------------------------+--------------------------------------+ | Feature | Status | +--------------------------------------------------------+--------------------------------------------------+--------------------------------------+ | PEP 538 <https://www.python.org/dev/peps/pep-0538/>_ | Coercing the legacy C locale to a UTF-8 based | | | | locale | | +--------------------------------------------------------+--------------------------------------------------+--------------------------------------+ | PEP 539 <https://www.python.org/dev/peps/pep-0539/>_ | A New C-API for Thread-Local Storage in CPython | | +--------------------------------------------------------+--------------------------------------------------+--------------------------------------+ | PEP 540 <https://www.python.org/dev/peps/pep-0540/>_ | UTF-8 mode | | +--------------------------------------------------------+--------------------------------------------------+--------------------------------------+ | PEP 552 <https://www.python.org/dev/peps/pep-0552/>_ | Deterministic pyc | | +--------------------------------------------------------+--------------------------------------------------+--------------------------------------+ | PEP 553 <https://www.python.org/dev/peps/pep-0553/>_ | Built-in breakpoint() | | +--------------------------------------------------------+--------------------------------------------------+--------------------------------------+ | PEP 557 <https://www.python.org/dev/peps/pep-0557/>_ | Data Classes | | +--------------------------------------------------------+--------------------------------------------------+--------------------------------------+ | PEP 560 <https://www.python.org/dev/peps/pep-0560/>_ | Core support for typing module and generic types | | +--------------------------------------------------------+--------------------------------------------------+--------------------------------------+ | PEP 562 <https://www.python.org/dev/peps/pep-0562/>_ | Module __getattr__ and __dir__ | Partial | +--------------------------------------------------------+--------------------------------------------------+--------------------------------------+ | PEP 563 <https://www.python.org/dev/peps/pep-0563/>_ | Postponed Evaluation of Annotations | | +--------------------------------------------------------+--------------------------------------------------+--------------------------------------+ | PEP 564 <https://www.python.org/dev/peps/pep-0564/>_ | Time functions with nanosecond resolution | Partial [#ftimenanosec]_ | +--------------------------------------------------------+--------------------------------------------------+--------------------------------------+ | PEP 565 <https://www.python.org/dev/peps/pep-0565/>_ | Show DeprecationWarning in __main__ | | +--------------------------------------------------------+--------------------------------------------------+--------------------------------------+ | PEP 567 <https://www.python.org/dev/peps/pep-0567/>_ | Context Variables | | +--------------------------------------------------------+--------------------------------------------------+--------------------------------------+

Other Language Changes:

.. table:: :widths: 90 10

+-----------------------------------------------------------------------------------------------------------------+----------------+ | async and await are now reserved keywords | Complete | +-----------------------------------------------------------------------------------------------------------------+----------------+ | dict objects must preserve insertion-order | | +-----------------------------------------------------------------------------------------------------------------+----------------+ | More than 255 arguments can now be passed to a function; a function can now have more than 255 parameters | | +-----------------------------------------------------------------------------------------------------------------+----------------+ | bytes.fromhex() and bytearray.fromhex() now ignore all ASCII whitespace, not only spaces | | +-----------------------------------------------------------------------------------------------------------------+----------------+ | str, bytes, and bytearray gained support for the new isascii() method, which can be used to | | | test if a string or bytes contain only the ASCII characters | | +-----------------------------------------------------------------------------------------------------------------+----------------+ | ImportError now displays module name and module __file__ path when from ... import ... fails | | +-----------------------------------------------------------------------------------------------------------------+----------------+ | Circular imports involving absolute imports with binding a submodule to a name are now supported | | +-----------------------------------------------------------------------------------------------------------------+----------------+ | object.__format__(x, '') is now equivalent to str(x) rather than format(str(self), '') | | +-----------------------------------------------------------------------------------------------------------------+----------------+ | In order to better support dynamic creation of stack traces, types.TracebackType can now be | | | instantiated from Python code, and the tb_next attribute on tracebacks is now writable | | +-----------------------------------------------------------------------------------------------------------------+----------------+ | When using the -m switch, sys.path[0] is now eagerly expanded to the full starting directory path, | | | rather than being left as the empty directory (which allows imports from the current working directory | | | at the time when an import occurs) | | +-----------------------------------------------------------------------------------------------------------------+----------------+ | The new -X importtime option or the PYTHONPROFILEIMPORTTIME environment variable can be used to | | | show the timing of each module import | | +-----------------------------------------------------------------------------------------------------------------+----------------+

Changes to built-in modules:

.. table:: :widths: 90 10

+------------------------------------------------------------------------------------------------------------+----------------+ | asyncio <https://docs.python.org/3/whatsnew/3.7.html#asyncio>_ | | +------------------------------------------------------------------------------------------------------------+----------------+ | Too many to list | | +------------------------------------------------------------------------------------------------------------+----------------+ | gc <https://docs.python.org/3/whatsnew/3.7.html#gc>_ | | +------------------------------------------------------------------------------------------------------------+----------------+ | New features include gc.freeze(), gc.unfreeze(), gc-get_freeze_count | | +------------------------------------------------------------------------------------------------------------+----------------+ | math <https://docs.python.org/3/whatsnew/3.7.html#math>_ | | +------------------------------------------------------------------------------------------------------------+----------------+ | math.remainder() added to implement IEEE 754-style remainder | | +------------------------------------------------------------------------------------------------------------+----------------+ | re <https://docs.python.org/3/whatsnew/3.7.html#re>_ | | +------------------------------------------------------------------------------------------------------------+----------------+ | A number of tidy up features including better support for splitting on empty strings and copy support for | | | compiled expressions and match objects | | +------------------------------------------------------------------------------------------------------------+----------------+ | sys <https://docs.python.org/3/whatsnew/3.7.html#sys>_ | | +------------------------------------------------------------------------------------------------------------+----------------+ | sys.breakpointhook() added. sys.get(/set)coroutine_origin_tracking_depth() added | | +------------------------------------------------------------------------------------------------------------+----------------+ | time <https://docs.python.org/3/whatsnew/3.7.html#time> | | +------------------------------------------------------------------------------------------------------------+----------------+ | Mostly updates to support nanosecond resolution in PEP564, see above | | +------------------------------------------------------------------------------------------------------------+----------------+

.. rubric:: Notes

.. [#ftimenanosec] Only :func:time.time_ns is implemented.