2017-02-21 109 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

只是假装你是一个Python解释器,并在同一时间执行它在一张纸上一行,跟踪所有变量和函数调用。 – DyZ

回答

2

评论都标有其exeuction的顺序,读他们的编号顺序在左侧

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)