2017-02-21 1 views
0
def f(x,b): 
    global a 
    print(x,a-b) 
    a = 3 
def g(a,b): 
    f(b,a) 
    print(a,b) 
a = 1 
b = 2 
g(2,a) 
print(a,b) 

私はかなり新しいPythonです。私はすぐに試験を受けます。私たちの先生はコードをトレースする必要があり、成功した場合は、これが最高レベルの難易度であるため、試験で何かをトレースすることができます。誰かがこの機能が何を印刷し、どうやってそこに行ったのか説明してくれたら教えてください。ありがとうございました。Pythonでのコードのトレース

+2

に番号順にそれらを読んで、exeuctionの順序で標識されていますすべての変数と関数呼び出しを追跡します。 – DyZ

答えて

2

コメントはちょうどあなたがPythonインタプリタあるふりをし、一度に紙1行の作品にそれを実行左

def f(x,b): #4. We get called with (1,2) 
    global a #5. Any changes to a will be reflected globally 
    print(x,a-b) #6. prints: 1, -1 (1-2)=-1 
    a = 3 #change a=3 globally 
def g(a,b): #2. this gets called once with g(2,1) 
    f(b,a) #3. so we call f with (1,2) 
    print(a,b) #7. prints:(2,1) 
a = 1 
b = 2 
g(2,a) #1. Go to g(a,b) 
print(a,b) #8. A was changed to 3 in f(x,b), prints(3,2) 

#final output in order: 
#1,-1 (from #6) 
#2,1 (from #7) 
#3,2 (from #8) 
関連する問題