Slide 1

Slide 1 text

Cool new features in Python 3.5

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

Unpacking >>> a,b,c = [1,2,3] >>> print(a) 1 >>> print(b) 2 >>> print(c) 3

Slide 4

Slide 4 text

Unpacking: LEVELED >>> a = [1,2,3] >>> b = [4,5,6] >>> print([*a, *b]) [1,2,3,4,5,6] PEP 448

Slide 5

Slide 5 text

Build Dictionaries >>> defaults = {"database": "mysql"} >>> my_config = {"database": "sqlite", "password": "cats"} PEP 448

Slide 6

Slide 6 text

Build Dictionaries >>> defaults.update(my_config) >>> print defaults {"database": "sqlite", "password": "cats"} PEP 448

Slide 7

Slide 7 text

Build Dictionaries >>> print {**defaults, **my_config} {"database": "sqlite", "password": "cats"} PEP 448

Slide 8

Slide 8 text

Call Functions with Unpacking >>> connect(**defaults, **my_config) PEP 448

Slide 9

Slide 9 text

math.isclose() >>> a = 1.0 >>> b = 1.00000000001 >>> math.isclose(a,b) True >>> math.isclose(1.0, 1.1) False >>> math.isclose(1.0, 1.01, abs_tol=.1) True PEP 485

Slide 10

Slide 10 text

>>> import math >>> math.pow(a, 2) + math.pow(b, 2) == math.pow(c,2)

Slide 11

Slide 11 text

>>> a**2 + b**2 == c**2

Slide 12

Slide 12 text

import numpy as np from numpy.linalg import inv, solve # Using dot function: S = np.dot((np.dot(H, beta) - r).T, np.dot(inv(np.dot(np.dot(H, V), H.T)), np.dot(H, beta) - r))

Slide 13

Slide 13 text

@ matrix multiplication operator @ >>> S = (H @ beta - r).T @ \ inv(H @ V @ H.T) @ (H @ beta - r) PEP 465

Slide 14

Slide 14 text

os.scandir() PEP 471

Slide 15

Slide 15 text

yield from (python 3.4) @asyncio.coroutine def view(request): data = yield from db_query(request.q) more = yield from db_query(request.p) return yield from render(data, more) PEP 380

Slide 16

Slide 16 text

async and await async def view(request): data = await db_query(request.q) more = await db_query(request.p) return await render(data, more) PEP 492

Slide 17

Slide 17 text

type annotations def hello(name: str) -> str: return "hello, {}".format(name) PEP 484

Slide 18

Slide 18 text

type annotations def hello(name: str) -> str: return "hello, {}".format(name) def greet(name): print greeting(name) PEP 484 types!

Slide 19

Slide 19 text

gradual typing def hello(name: str) -> str: return "hello, {}".format(name) def greet(name): print(greeting(name)) types! no types! PEP 484

Slide 20

Slide 20 text

import typing from typing import List def combine(input: List[str]) -> int: return input.join() PEP 484

Slide 21

Slide 21 text

much, much more! PEP 461, 479… • subprocess.run() • collections.OrderedDict 4-100 times faster • bytes % args, bytearray % args • functools.lru_cache() 10-25x faster • StopIteration handling inside generators better • A new installer for Windows

Slide 22

Slide 22 text

Thanks! https://docs.python.org/3/whatsnew/3.5.html