Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70% Забронировать скидку
07 Июл 2023
1 мин
91

Вызов функции модуля по её имени (строке)

Существует ситуация, когда необходимо вызвать функцию модуля по её имени, переданному в виде строки. Это часто бывает полезно, когда имя функции или

Существует ситуация, когда необходимо вызвать функцию модуля по её имени, переданному в виде строки. Это часто бывает полезно, когда имя функции или метода нужно динамически определить во время выполнения программы, и вызвать соответствующую функцию. Например:

import math
func_name = "sqrt"
# Необходимо вызвать функцию math.sqrt

Итак, как же реализовать вызов функции по её имени в строке?

Использование getattr

В Python есть встроенная функция getattr(), которая возвращает значение атрибута объекта. Эта функция принимает два аргумента: объект и имя атрибута в виде строки.

import math
func_name = "sqrt"
func = getattr(math, func_name)
print(func(16))  # выводит 4.0

В этом примере getattr() возвращает функцию sqrt() из модуля math, и эта функция затем вызывается с аргументом 16.

Использование словаря

Ещё одним способом является использование словаря, в котором ключами являются имена функций, а значениями — сами функции.

import math
func_dict = {"sqrt": math.sqrt, "pow": math.pow}
func_name = "sqrt"
print(func_dict[func_name](16))  # выводит 4.0

Здесь func_dict[func_name] возвращает функцию sqrt() из модуля math, которая затем вызывается с аргументом 16.

Таким образом, можно вызвать функцию модуля по её имени, переданному в виде строки, используя либо функцию getattr(), либо словарь.

Добавить комментарий

Подарок
Забрать подарок