Ну основная проблема здесь заключается в том, что do(a(b))
будет проходить функцию b
в a
и в результате TypeError
.
Основной проблемой здесь является то, что все, что вы передаете функционировать do
должен быть вызываемым или иначе print(func(6))
выражение не будет по соответствующим причинам (отсутствие метода __call__
), поэтому я не думаю, что путь этот структурирована, соответствует тому, что вы пытаетесь сделать.
В качестве решения можно либо делать то, что предложила @Doorknob (в основном проходит в вызываемом) или рассмотреть возможность возвращение функции b
из функции a
, которая затем будет использоваться в функции do
.
Таким образом, если вы измените функцию a
, как так:
def do(func):
print (func(6))
def a(x):
x = x * 2
def b(y):
return x * (y * 3)
return b
do(a(2))
Вы получите хороший результат 72
. Хотя я не уверен, что это строго то, что вы подразумеваете под «вложенными» функциями.
'делать (лямбда-х: а (Ь (х)))' – Doorknob
Вы ищете [функция композиции] (https://mathieularose.com/function -композиция-в-питон /). – poke