Курс Python → Вызов функций по строке в Python.

Для вызова функций или методов по строке в Python можно использовать несколько приемов. Один из лучших способов — это создание словаря, в котором ключами будут строки, а значениями — соответствующие функции или методы. Такой подход позволяет легко вызывать функции, даже если их названия не совпадают с передаваемой строкой. Например:


def function1():
    print("Function 1 called")

def function2():
    print("Function 2 called")

functions = {
    "func1": function1,
    "func2": function2
}

choice = "func1"
if choice in functions:
    functions[choice]()

Еще одним способом является использование встроенной функции getattr, которая позволяет получить объект по его имени. Например, если у нас есть класс с методами:


class MyClass:
    def method1(self):
        print("Method 1 called")

    def method2(self):
        print("Method 2 called")

obj = MyClass()
method_name = "method1"
getattr(obj, method_name)()

Также можно использовать функции locals или eval для вызова функций по строке, но данный подход не рекомендуется из-за потенциальных проблем с безопасностью и читаемостью кода. Например:


def my_function():
    print("My function called")

function_name = "my_function"
# Использование locals
locals()[function_name]()
# Использование eval
eval(function_name + "()")

В итоге, для вызова функций или методов по строке в Python рекомендуется использовать словарь с функциями или методами, либо функцию getattr. Эти методы обеспечивают безопасность и удобство в работе с вызовом функций по строке.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Работа с defaultdictами в Python
  2. Фильтрация списков с itertools
  3. Обработка ошибок ввода данных
  4. Изменение элемента списка
  5. Создание и использование ChainMap
  6. Работа с NumPy массивами
  7. Оптимизация гиперпараметров с Scikit Optimize
  8. Библиотека schedule: планировщик задач
  9. Улучшение читаемости кода в Python
  10. Поиск самого частого элемента
  11. Синтаксис переменных цикла в Python
  12. Прокачанный трейсинг ошибок
  13. Атрибуты класса и экземпляра
  14. Моржовый оператор в Python 3.8
  15. Генераторы словарей и множеств
  16. Генерация случайных чисел в Python
  17. Получение частей дроби
  18. JMESPath в Python
  19. Операторы Splat и splatty-splat
  20. Округление чисел с помощью round
  21. Обработка исключений в Python
  22. F-строки в Python 3.8
  23. Копирование словарей и списков в Python
  24. Транспонирование 2D-массива с помощью zip
  25. Профилирование кода
  26. Python itertools combinations() — группировка элементов
  27. Повторение элементов в Python
  28. Обновление ключей в Python
  29. Распаковка с оператором *
  30. Импорт модулей в Python 3.12
  31. Наследование в программировании
  32. Генерация строк с .join()
  33. Преобразование вложенного списка
  34. Объединение итераторов
  35. Управление виртуальными окружениями в Python
  36. Метод get для словаря
  37. Переопределение метода delitem в Python
  38. Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
  39. Группировка элементов Python
  40. Присоединение элементов коллекции
  41. Проверка подстроки в строке
  42. Проверка условий в Python
  43. Метод count() для списка

Marketello читают маркетологи из крутых компаний