Найти - Пользователи
Полная версия: Вызов функций по значению переменной
Начало » Python для новичков » Вызов функций по значению переменной
1
MEOW
Добрый рабочий. Не знаю как реализовать одну штуку. Надо чтобы по значению переменной, использовалась та или иная функция. например если переменная b = 1, то используется функция Quest_1, а если значение переменной b = 5, то используется функция Quest_5. Как реализовать?
rami
Как обычно:
 def Quest_1():
    print('Выполняем функцию "Quest_1"')
    
def Quest_2():
    print('Выполняем функцию "Quest_2"')
    
def Quest_3():
    print('Выполняем функцию "Quest_3"')
    
def Quest_4():
    print('Выполняем функцию "Quest_4"')
    
def Quest_5():
    print('Выполняем функцию "Quest_5"')
    
b = 5      #меняем значения переменной
    
if b == 1:
    Quest_1()
elif b == 2:
    Quest_2()
elif b == 3:
    Quest_3()
elif b == 4:
    Quest_4()
elif b == 5:
    Quest_5()
else:
    print('Нет такой функции')
MEOW
Спасибо конечно, весьма оригинально. Но у меня таких функций 58 и хотелось бы узнать, существует ли более оптимальный и сжатый вариант?
Rodegast
 s = {
            1: Quest_1,
            2: Quest_2,
            3: Quest_3, .....
}
res = s[b]()
py.user.next
  
>>> def quest_1():
...     print('выполняем функцию "quest_1"')
... 
>>> def quest_2():
...     print('выполняем функцию "quest_2"')
... 
>>> def quest_3():
...     print('выполняем функцию "quest_3"')
... 
>>> def quest_4():
...     print('выполняем функцию "quest_4"')
... 
>>> def quest_5():
...     print('выполняем функцию "quest_5"')
... 
>>> funcs = (quest_1, quest_2, quest_3, quest_4, quest_5)
>>> 
>>> for i in range(5):
...     funcs[i]()
... 
выполняем функцию "quest_1"
выполняем функцию "quest_2"
выполняем функцию "quest_3"
выполняем функцию "quest_4"
выполняем функцию "quest_5"
>>>
MEOW
Спасибо!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB