>>> 1_000_000_000 == 1000000000
True
>>> 1_00_00_00_00_0
>>> '{:_}'.format(1000000)
'1_000_000'
>>> name = 'Julio'
>>> f'My name is {name}'
My name is Julio
>>> def f():
... name = 'Julio'
... print('My name is {name}'.format(**locals()))
all(list(print(f'{i} bottle{"s" if i != 1 else ""} of '
f'beer on the wall, {str(i).lower()} '
f'bottle{"s" if i != 1 else ""} of beer.\n{"Take one '
f'down pass it around" if str(i).lower() == str(i) '
f'else "Go to the store and buy some more"}, '
f'{i-1 if i not in [1, "No more"] else "no more" '
f'if i == 1 else 99} bottles of beer on the wall.\n') \
for i in list(range(99, 0, -1))+['No more'])) \
or ""
Só pra lembrar...
>>> def(name: str) -> str:
... return 'Hello ' + name
Não signfica que o CPython valida o parâmetro ou o retorno.
>>> captain: str # mas continua como undefined
>>> values: List[int] = [1, 2, 4]
Essas informações podem ser extraídas de __annotations__
(assim como docstrings podem ser extraídas de __doc__
).
Nova biblioteca para geração de números randômicos "fortes", utilizados para criptografia.
>>> token_hex(16)
'f9bf78b9a18ce6d46a0cd2b0b86df9da'
Novo tipo auto
para gerar número automaticamente.
>>> from enum import Enum, auto
>>> class Color(Enum):
... red = auto()
... blue = auto()
... green = auto()
...
>>> list(Color)
[<<Color.red: 1>, <Color.blue: 2>, <Color.green: 3>]
Ao tentar importar um módulo que não existe, será gerado
ModuleNotFoundError
ao invés de
ImportError
.
Representação de um caminho qualquer no sistema de arquivos.
>>> import pathlib
>>> with open(pathlib.Path("README")) as f:
... contents = f.read()
...
>>> import os.path
>>> os.path.splitext(pat)
('some_file', '.txt')
Nova função para tornar objetos Path-like: __fspath()__
dict
agora é mais compacto.
Efeito colateral: agora são ordenados em CPython, mas não no spec da linguagem Python.
**kwargs
agora são ordenados.__dict__
agora é ordenado.asyncio
agora é oficial.
async def ticker(delay, to):
"""Yield numbers from 0 to *to* every *delay* seconds."""
for i in range(to):
yield i
await asyncio.sleep(delay)
result = [i async for i in aiter() if i % 2]
result = [await fun() for fun in funcs if await condition()]
__init_subclass__()
;tracemalloc
;typing
com novidades;os.urandom()
vai bloquear até que haja entropia suficiente
para gerar um número;hashlib
;