Курс 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. Создание списка через итерацию
  2. Объединение коллекций в Python
  3. Блок else в циклах Python
  4. Метод classmethod
  5. Работа с множествами в Python
  6. Замена подстроки
  7. Работа с индексами списков
  8. Сравнение def и lambda-функций
  9. Хеши в Python
  10. f-строки в формате строк
  11. Solidity для DeFi Ethereum
  12. Возврат нескольких значений из функции
  13. Методы в Python
  14. Ускорение выполнения кода в Python
  15. Показ всплывающих окон Tkinter
  16. Возврат нескольких значений
  17. Переопределение метода
  18. Поиск всех индексов подстроки
  19. Просмотр атрибутов и методов класса
  20. Работа с географическими данными.
  21. Роль object и type в Python
  22. Профилирование кода на Python
  23. Многопроцессорное программирование в Python
  24. Получение обратного списка чисел
  25. Функции классификации комплексных чисел
  26. Фильтрация списка чисел
  27. Применение функций в Python
  28. Проверка типа данных
  29. Измерение времени выполнения кода
  30. Декораторы классов
  31. Управление контекстом выполнения кода
  32. Приоритет операций в Python
  33. Поиск повторов в списке
  34. Создание GUI с Tkinter: Entry
  35. Метод repr() в Python
  36. Генераторы в Python
  37. Функции map() и reduce() в Python
  38. Дизассемблирование Python кода
  39. kwargs в Python
  40. Моржовый оператор в Python 3.8
  41. Метод pos в Python
  42. Переопределение метода __floordiv__
  43. Установка и использование Logzero
  44. Удаление пробелов методом translate()
  45. Оптимизация параметров в Python

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