Автор оригинала: Pankaj Kumar.
Что такое формальная функция Python?
Иногда функция принимает несколько параметров. Если есть ситуация, когда мы проходим один и тот же параметр к этому много раз, мы можем создать парциальную функцию Python. В частичной функции некоторые параметры исправлены. Это полезно для создания более значимого имени функции из существующей функции.
Как создать частичную функцию в Python?
Функция Python Functools Partial () используется для создания частичной функции. Модуль Functools предназначен для функций более высокого порядка. Частичный () синтаксис функции:
partial(func, /, *args, **keywords)
Это создает частичную функцию, которая ведет себя как звонить « Func » с фиксированным позиционным и ключевым словом. Нам нужно только передавать несколько аргументов, необходимых для вызова базовой функции. Другие аргументы уже предусмотрены в * args и ** Kwargs.
Пример частичной функции Python
Допустим, у нас есть функция умножения, как это:
def multiply(x, y): print(f'Arguments: {x}, {y}') return x * y
Мы хотим использовать эту функцию для умножения списка целых чисел с 4 и 5.
int_list = [1, 2, 3, 4] int_list_4x = [] for i in int_list: int_list_4x.append(multiply(i, 4)) print(int_list_4x) int_list_5x = [] for i in int_list: int_list_5x.append(multiply(i, 5)) print(int_list_5x)
Выход:
Arguments: 1, 4 Arguments: 2, 4 Arguments: 3, 4 Arguments: 4, 4 [4, 8, 12, 16] Arguments: 1, 5 Arguments: 2, 5 Arguments: 3, 5 Arguments: 4, 5 [5, 10, 15, 20]
Мы можем создать частичную функцию здесь, чтобы увеличить целое число с 4 и 5.
times_4 = partial(multiply, 4) times_5 = partial(multiply, 5)
Теперь обновленный код размножается список целых чисел с 4 и 5 будет таким:
int_list_4x = [] for i in int_list: int_list_4x.append(times_4(i)) print(int_list_4x) int_list_5x = [] for i in int_list: int_list_5x.append(times_5(i)) print(int_list_5x)
Мы можем дополнительно уменьшить размер кода, используя понимание списка.
int_list_4x = [times_4(x) for x in int_list] int_list_5x = [times_5(x) for x in int_list]
Выход, в этом случае будет такой:
Arguments: 4, 1 Arguments: 4, 2 Arguments: 4, 3 Arguments: 4, 4 [4, 8, 12, 16] Arguments: 5, 1 Arguments: 5, 2 Arguments: 5, 3 Arguments: 5, 4 [5, 10, 15, 20]
Python Частичная функция с аргументами ключевых слов
Если вы посмотрите на вышеуказанный выход, позиционный аргумент частичной функции всегда передается как первый параметр. В этом случае это не имеет значения. Но, если положение аргументов частичной функции имеет значение, то мы можем использовать аргументы ключевых слов.
times_4 = partial(multiply, y=4) int_list = [10, 20, 30] int_list_4x = [times_4(x) for x in int_list] print(int_list_4x)
Выход:
Arguments: 10, 4 Arguments: 20, 4 Arguments: 30, 4 [40, 80, 120]
Заключение
Парчатые функции Python полезны в создании отдельной функции, когда мы называем функцию несколько раз с некотором аргументом, одновременно одновременно.
Рекомендации
- Python Functools
- Functools Частичные () Python Docs