Синтаксис Python: *args, **kwargs

При написании кода не всегда хочется явно прописывать все аргументы. Например - на вход программы подается набор аргументов:

def run_program(config_folder, config_name, split_symbol, verbose=False):
    pass

Появляется новая опция - добавляй аргумент и явно указывай при вызове функции

run_program('/tmp', 'config_1.yaml', '#####', True)

Но в какой-то момент появляются опциональные аргументы. В этот момент приходит на помощь *args и **kwargs.

Примечание: символы , * применяются ...

more ...

Синтаксис Python: lambda-функции

Python поддерживает интересный синтаксис, позволяющий определять небольшие однострочные функции на лету. Позаимствованные из Lisp, так называемые lambda-функции могут быть использованы везде, где требуется функция.

Небольшой пример

def func(x, y):
    return x**2 + y**2

func = lambda x, y: x**2 + y**2

С одной стороны "прикольно", вместо 2 строк - одна, но сложные конструкции на lambda функциях не напишешь - плохо ...

more ...

Генераторы списков

Если вы использовали Python достаточно долго, вы должны были хотя бы слышать о понятии «list comprehensions». Это способ уместить цикл for, блок if и присваивание в одну строку.

Генератор списков - яркий пример «синтаксического сахара». То есть конструкции, без которой легко можно обойтись, но с ней намного лучше :) Генераторы списков, как это не странно, предназначены для удобной обработки списков, к которой ...

more ...