プログラミング初心者なのですが今回Python3を使って関数間の引数を渡すことについて質問させていただきます。
今回行いたい処理はmain関数にある変数aをcalc1関数に渡し足し算処理をした後、main関数を経由せずにcalc2関数に渡して掛け算をし、最後にmain関数に渡すという処理です

def calc2(b):
    return b * 2

def calc1(a):
    b = 0
    b = a + 2
    return b

def main():
    a = 1
    print(calc2(b))

main()

このように書くと変数bは定義されてないと言われます。

下のようにmain関数を通せば動いたのですが(この表現が正しいかわからなかったので)

def calc2(c):
    return c * 2

def calc1(a):
    b = 0
    b = a + 2
    return b

def main():
    a = 1
    c = calc1(a)
    print(calc2(c))

main()