Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python 3.4

Python 3.4

Used for a lightning talk at Pražské Pyvo and a full talk at Brněnské Pyvo, both March 2014

Avatar for Petr Viktorin

Petr Viktorin

July 23, 2014
Tweet

More Decks by Petr Viktorin

Other Decks in Programming

Transcript

  1. yield from → asyncio "WSGI for event loops" twisted, tornado,

    gevent event loop, tasks, calbacks, futures/deferreds networking IO
  2. enum >>> from enum import Enum >>> class Color(Enum): ...

    red = 1 ... green = 2 ... blue = 3 >>> for c in Color: ... print(c) Color.red Color.green Color.blue
  3. pathlib >>> from pathlib import Path >>> p = Path('.')

    >>> p.isdir() True >>> p / 'slides.tex' PosixPath('./slides.tex') >>> (p / 'slides.tex').open().readline() '\\documentclass[20pt]{beamer}\n'
  4. statistics >>> data = [1e30, 1, 3, -1e30] >>> sum(data)

    / len(data) 0.0 >>> from statistics import mean >>> mean(data) 1.0
  5. inspect CLI $ python -m inspect re:search def search(pattern, string,

    flags=0): """Scan through string looking for a match to the pattern, returning a match object, or None if no match was found.""" return _compile(pattern, flags).search(string)
  6. with with what? with contextlib.suppress: with contextlib.redirect_stdout: with unittest.TestCase.subTest(): with

    unittest.TestCase.assertLogs(): with aifc.open(...): with sunau.open(...): with select.epoll(...): with dbm.open(...): with wave.open(...):
  7. functools.partialmethod import functools class A: def greet(self, greeting, subject): print('{},

    {}!'.format(greeting, subject)) say_hello = functools.partialmethod(greet, 'Hello') A().say_hello('world') # --> Hello, world!
  8. functools.singledispatch from functools import singledispatch from collections.abc import Iterable @singledispatch

    def upper(arg): raise NotImplementedError() @upper.register(str) def _(arg): return arg.upper() @upper.register(Iterable) def _(arg): return [upper(a) for a in arg] print(upper('abc')) # --> ABC print(upper(['a', 'b', 'c'])) # --> ['A', 'B', 'C']
  9. docs.python.org/3.4/whatsnew asyncio ensurepip enum pathlib statistics pickle 4 inspect CLI

    re.fullmatch textwrap.shorten with signature support functools.partialmethod functools.singledispatch weakref.WeakMethod CPython improvements ... and more!