Курс 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. Освоение Python
  2. Генераторы списков
  3. Вложенные функции в Python
  4. Преобразование строк в числа с плавающей запятой
  5. Функции map() и reduce() в Python
  6. Применение функции к каждому элементу списка
  7. Декораторы с @wraps
  8. Сортировка в Python
  9. Оценка точности модели
  10. Копирование в Python
  11. Работа с itertools
  12. Установка random seed в Python
  13. List Comprehension Tutorial
  14. Работа со строками в Python
  15. Перехват исключений в Python
  16. Работа с модулем bisect
  17. Метод сравнения объектов в Python
  18. Безопасные SQL-запросы в Python 3.11
  19. Работа с URL-адресами в Python
  20. Изменение регистра данных
  21. Декоратор защиты анонимных пользователей
  22. Участие в сообществе @selectel
  23. Метод radd для пользовательских чисел
  24. Построение графиков в Matplotlib
  25. Функции all() и any() в Python
  26. Удаление элемента из списка в Python
  27. IPython и Jupyter Notebook: руководство
  28. PEP-401: оператор
  29. Функция с **kwargs в Python
  30. Введение в Python
  31. Атрибуты класса и экземпляра в Python
  32. Перебор элементов списка в Python
  33. Получение списка кортежей из словаря
  34. Условные выражения в Python
  35. Пропуск строк в файле с itertools
  36. ROT13 Шифр Цезаря в Python
  37. Логирование с Logzero
  38. Создание GUI на Tkinter
  39. Повторение элементов в Python
  40. Работа с файлами в Python
  41. Логический оператор «and» в Python
  42. Метод __iand__ для пользовательских классов
  43. Создание GUI с Tkinter: Entry
  44. Работа с getopt
  45. Итерация по копии коллекции
  46. Функция с *args.
  47. Извлечение статей с newspaper3k

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