Представим, написали мы функцию:

def super_function(server_name, host):
....print(server_name)
...........
....run_server(host)

Но вот беда, первый аргумент - имя сервера у вас уже есть. А второй, ip сервера, вы получите от пользователя, а функцию уже надо вызвать. Можно, конечно, дождаться когда будет два аргумента, тогда и запустить. А можно пойти по другому пути - воспользоваться механизмом каррирования - такое страшное слово.

Каррирование - преобразование функции от (предположим) двух аргументов в функцию от первого аргумента, возвращающую функцию, результат вызова которой со вторым агрументом эквивалентен вызову первоначальной функции с упомянутыми аргументами.

Мощный механизм, который нам и поможет. Пишем

from functools import partial

my_func = partial(super_function, 'My super server')
....
....
host = '127.0.0.1'
my_func(host)

https://docs.python.org/3.4/library/functools.html



Комментарии