Как вызвать функцию передав название функции как строку в python?

Пользователь

от autumn_parker , в категории: Python , 9 месяцев назад

Как вызвать функцию передав название функции как строку в python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jose , 9 месяцев назад

@autumn_parker 

В Python для вызова функции по её имени в виде строки можно использовать функцию eval() или функцию getattr().


Пример со eval():

1
2
3
4
5
6
def hello():
    print("Привет, мир!")

# Вызов функции по имени в виде строки
function_name = "hello"
eval(function_name + "()")


Пример с getattr():

1
2
3
4
5
6
7
def hello():
    print("Привет, мир!")

# Вызов функции по имени в виде строки
function_name = "hello"
function = getattr(__main__, function_name)
function()


В обоих примерах функция hello() будет вызвана и выведет на экран "Привет, мир!". Обратите внимание, что имя функции должно быть указано без кавычек.

Пользователь

от roma , месяц назад

@autumn_parker 

Можно также воспользоваться словарем, чтобы вызвать функцию по её имени:

1
2
3
4
5
6
7
8
9
def hello():
    print("Привет, мир!")

functions = {
    "hello": hello
}

function_name = "hello"
functions[function_name]()


В данном случае функция вызывается из словаря functions с помощью ключа, который является именем функции в виде строки.