Python

Python is a programming language.

Snippets

*args & **kwargs?

>>> def hello(*args, **kwargs):
...     gretting = kwargs.pop('gretting', 'Hello')
...
...     print(f"""{gretting} {' '.join(args)}!""")
...
>>>
>>> hello("Laura", "Dang", gretting="Hi")
Hi Laura Dang!

Bare asterisk (*) in function argument

In Python 3 you can specify * in the argument list:

Parameters after "*" or "*identifier" are keyword-only parameters and may only be passed used keyword arguments.

Python 3.5 Documentation

>>> def is_birthday(*, birthday):
...     today = datetime.date.today()
...     if birthday.month == today.month and birthday.day == today.day:
...         print(f"Yes it's their birthday.")
...     else:
...         print(f"No it's not their birthday.")
...
>>>
>>> is_birthday(datetime.date(1986, 9, 19))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: is_birthday() takes exactly 1 positional argument (1 given)
>>>
>>> is_birthday(birthday=datetime.date(1986, 9, 19))
No it's not their birthday.
>>>

Coerce to NamedTuple

from typing import Any, Dict, NamedTuple, Type


class AlbumTuple(NamedTuple):
    """Album Tuple Class."""
    name: str
    artist: str
    length: float


def coerce_to_namedtuple(d: Dict[str, Any], T: Type):
    """Create a NamedTuple from a dict, ignoring extra keys in the dict"""
    return T(**{k: v for k, v in d.items() if k in T._fields})


album = dict(name="Liar", artist="Fake Shark - Real Zombie!", length=47.15)
print(coerce_to_namedtuple(d, AlbumTuple))
# output: AlbumTuple(name="Liar", artist="Fake Shark - Real Zombie!", length=47.15)

Libraries

  • Camelot - PDF Table Extraction for Humans - :megaphone:

  • cleanco - Cleans companies names by stripping away terms indicating organization type -

  • Datafiles - a file-based ORM for dataclasses -

  • dataset - Databases for lazy people. -

  • lab_getting_started.py - Lets you organize TensorFlow machine learning projects

  • py-spy - sampling profiler for Python programs

  • tartiflette - Tartiflette is a GraphQL Engine, built on top of Python 3.6 and above. Focused on building GraphQL APIs using the awesome Schema Definition Language. -

  • yaps - a surface language for programming Stan models using python syntax -

  • Typer - Typer is library to build CLI applications that users will love using and developers will love creating. -

Data Science

  • datacompy - Pandas and Spark DataFrame comparison for humans -

  • intake - A plugin system for loading your data and making data catalogs -

  • locopy - Loading/Unloading to Amazon Redshift -

  • Luigi - a Python module that helps you build complex pipelines of batch jobs -

  • Vaex - visualize and explore big tabular data at a billion rows per second - :megaphone:

Templates

Last updated