Однострочники

В этой главе я продемонстрирую несколько однострочных команд, которые могут быть очень полезны.

Простой веб-сервер

Когда-нибудь хотели быстро передать файл по сети? Тогда вам повезло. В Python есть такая возможность. Перейдите в директорию, которую хотите расшарить по сети, и наберите следующую команду в терминале:

# Python 2
python -m SimpleHTTPServer

# Python 3
python -m http.server

Аккуратный вывод в консоль

Вы можете выводить списки и словари аккуратно отформатированными в консоль. Вот нужный код:

from pprint import pprint

my_dict = {'name': 'Yasoob', 'age': 'undefined', 'personality': 'awesome'}
print(dir(my_dict))
# ['__add__', '__class__', '__contains__', '__delattr__', ..., 'sort']

pprint(dir(my_dict))
# ['__add__',
#  '__class__',
#  '__contains__',
#  '__delattr__',
#  '__delitem__',
#  ...
#  'sort']

Это особенно удобно для вложенных словарей. Помимо этого, если вам нужно вывести содержимое JSON файла в терминал в удобочитаемом формате, то:

cat file.json | python -m json.tool

Профилирование скрипта

Это может быть очень полезно для определения узких мест производительности ваших программ:

python -m cProfile my_script.py

Примечание: cProfile это ускоренная реализация profile, написанная на C.

CSV в JSON

Выполните следующую команду:

python -c "import csv,json;print json.dumps(list(csv.reader(open('csv_file.csv'))))"

Не забудьте заменить csv_file.csv на желаемое имя файла.

Сглаживание списка

Вы можете легко и просто сгладить список, содержащий вложенные списки с помощью itertools.chain.from_iterable из пакета itertools. Вот простой пример:

a_list = [[1, 2], [3, 4], [5, 6]]
print(list(itertools.chain.from_iterable(a_list)))
# Вывод: [1, 2, 3, 4, 5, 6]

# или
print(list(itertools.chain(*a_list)))
# Вывод: [1, 2, 3, 4, 5, 6]

Однострочные конструкторы

Позволяют избежать больших кусков повторяющегося кода при инициализации класса:

class A(object):
    def __init__(self, a, b, c, d, e, f):
        self.__dict__.update({k: v for k, v in locals().items() if k != 'self'})

Другие подобные однострочники можно найти на официальном сайте.

Last updated