йКак последовательно вывести функции?
Нужна помощь в такой загадки как вывести две и более функции последовательно?Как можно заменить функцию без изменения кода когда функция повторяетца раз 20 в коде?
def r():
q ='wrrewr'
print(q)
def e():
q = " iee"
print(q)
def g():
i = 3
print(i)
e() # надо чтоб е менялось на r при этом код выполнял последовательно.Как зделать?После выполнения е выполнялся r?
u = 'jervmnofvndoivsb'
r = u.split()[-5]
print(r)
t = len(q)
print(t)
while True:
g()
sleep(4600)
Ответы (1 шт):
В питоне можно всё. Можно переменной, в которой лежит ссылка на функцию присвоить ссылку на другую функцию. Примерно так:
def func_a():
print('func_a')
def func_b():
print('func_b')
def func_test():
func_a()
func_test()
def func_fun():
print('func_fun')
func_a_old()
func_b()
func_a_old = func_a
func_a = func_fun
func_test()
Вывод при первом запуске func_test(), запустилась исходная функция func_a:
func_a
Вывод при втором запуске func_test(), вместо прописанной в ней функции func_a запустилась функция func_fun, которая запустила старую версию func_a и следом func_b:
func_fun
func_a
func_b
Тут важно заметить, что из функции с подменой func_fun нельзя запускать текущую func_a, потому что иначе в итоге func_fun будет вызывать сама себя рекурсивно.