Курс 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. Тип данных TypeVarTuple
  2. Измерение времени выполнения кода
  3. Конкатенация строк в Python
  4. Метод __call__ в Python
  5. Получение атрибутов и методов класса
  6. Оператор объединения словарей
  7. Копирование файлов с shutil()
  8. Отладка кода
  9. Многострочные комментарии в Python
  10. Удаление дубликатов из списка
  11. Работа со словарями с defaultdict из collections
  12. Декоратор Ajax required
  13. Структуры данных в Python
  14. Изменение IP-адреса в Python
  15. Работа с кортежами в Python
  16. Bootle — простой веб-фреймворк
  17. Получение текущей директории
  18. Python Ellipsis использование
  19. Область видимости переменных
  20. Преобразование Word в PDF с Spire.Doc
  21. Упрощение работы с JSON-данными в Python
  22. Асинхронное выполнение задач в Python
  23. Перевернуть список в Python
  24. Определение относительного пути
  25. Метод classmethod
  26. Настройка Cron
  27. Работа с zip()
  28. Оценка точности модели
  29. Функция count() в Python
  30. Прокачанный трейсинг ошибок
  31. Python и Юникод: работа с цифрами
  32. Необязательные аргументы в Python
  33. Проверка вхождения подстроки
  34. Объединение Python и Shell
  35. Мониторинг памяти с Pympler
  36. Оператор walrus в Python
  37. Магические методы в Python
  38. JSON в Python: модуль, dump, dumps, load
  39. Пустой оператор pass в Python
  40. Генераторы в Python
  41. Отладка утечек памяти в Python
  42. Декоратор Ajax required
  43. Разработка игры Pong с turtle
  44. Получение комбинаций в Python
  45. Преобразование чисел в Python
  46. Кортеж в Python: создание, доступ, изменение

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