Существуют в python анонимные функции callback, lambda. Вы можете их использовать прямо внутри других функций. Они всегда возвращают результат. Они должны принимать данные для своих параметров. Посмотрите на пример. Тут callback - функции.
#!/usr/bin/python3
def function1(x) : return x ** 2
def function2(x) : return x ** 3
def function3(x) : return x ** 4
callback = [function1(2),function2(2),function3(2)]
print(list(callback))
"""
вывод:
[4, 8, 16]
"""
Функции lambda используют для различных задач: генерации списков, генерации множеств. Их используют для уменьшения объёма кода. С ними не просто работать, но оно того стоит.
#!/usr/bin/python3
# тут массив из 3 функций
callback = [lambda x : x ** 2, lambda x : x ** 3, lambda x : x ** 4]
# вывод в цикле
for function in callback : print('Result', function(3))
"""
вывод:
Result 9
Result 27
Result 81
"""
Функции lambda могут содержать массу параметров. В наше примере 3 параметра x, y, z.
#!/usr/bin/python3
getLambda = lambda x, y, z: x + y + z
print(getLambda(1,2,3))
print(getLambda(4,5,6))
"""
вывод:
6
15
"""
Посмотрите на пример ниже. Тут написана функция square. Она достаточно проста. Затем я просто переписал функцию, используя lambda-функцию. Обратите внимание на количество кода и отсутствия слова return.
#!/usr/bin/python3
def square(x):
return x**2
print(square(2))
square = lambda x : x ** 2
print(square(2))
"""
вывод:
4
4
"""