«промежуточный итог» уже вызывает menu (), поэтому я не уверен, что вы спрашиваете, поскольку вы уже вызываете одну функцию внутри другой.
Кроме того, я не вижу, что ваша программа должна делать - если ваши имена функций будут глаголами (print_menu, get_menu, set_menu, throw_menu_on_moon, Calculate_subtotal, ...), было бы лучше понять для людей.
Кроме того, имена, которые вы используете (в правой части =) внутри функции, должны быть известны там, например,
def menu():
count=gearboxes
не имеет смысла (потому что "коробки передач" неизвестны - с другой стороны, "count" в порядке, поскольку он определяет новую переменную - поскольку он находится слева от =) ...
Обратите внимание, что переменные известны только в функции, в которой вы их определили, поэтому
def f():
gearboxes = 2
def menu():
count=gearboxes
тоже не имеет смысла.
Но
def f():
return 2
def menu():
gearboxes=f()
count=gearboxes
будет иметь смысл.
Прочитайте
def calculate_subtotal(gearbox_count):
как «для вычисления промежуточного итога подсчета коробки передач».
Если вы потом скажете где-нибудь снаружи:
calculate_subtotal(5)
^^^^^^^^^^^^^^^^^^^^^
тогда подчеркнутая часть будет заменена возвращенным результатом.
В противном случае в Python строки (в блоке) выполняются одна за другой - если вы хотите выполнить несколько операций последовательно, вы можете просто написать их по одной строке, одну за другой.
«return» - это не «goto», «return» возвращает результат - и контроль - вызывающей функции. Затем результат помещается в программу «вместо вызова».