Курс 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"
- Работа с defaultdictами в Python
- Фильтрация списков с itertools
- Обработка ошибок ввода данных
- Изменение элемента списка
- Создание и использование ChainMap
- Работа с NumPy массивами
- Оптимизация гиперпараметров с Scikit Optimize
- Библиотека schedule: планировщик задач
- Улучшение читаемости кода в Python
- Поиск самого частого элемента
- Синтаксис переменных цикла в Python
- Прокачанный трейсинг ошибок
- Атрибуты класса и экземпляра
- Моржовый оператор в Python 3.8
- Генераторы словарей и множеств
- Генерация случайных чисел в Python
- Получение частей дроби
- JMESPath в Python
- Операторы Splat и splatty-splat
- Округление чисел с помощью round
- Обработка исключений в Python
- F-строки в Python 3.8
- Копирование словарей и списков в Python
- Транспонирование 2D-массива с помощью zip
- Профилирование кода
- Python itertools combinations() — группировка элементов
- Повторение элементов в Python
- Обновление ключей в Python
- Распаковка с оператором *
- Импорт модулей в Python 3.12
- Наследование в программировании
- Генерация строк с .join()
- Преобразование вложенного списка
- Объединение итераторов
- Управление виртуальными окружениями в Python
- Метод get для словаря
- Переопределение метода delitem в Python
- Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
- Группировка элементов Python
- Присоединение элементов коллекции
- Проверка подстроки в строке
- Проверка условий в Python
- Метод count() для списка















