2016-12-15 45 views
0

现在我知道全局声明了,并且还可以计算为什么会出现错误(count在函数中被引用,稍后我会调用它),但不能想出任何方法来规避它。为什么count给出错误,即使我在定义变量后调用函数f?我如何重写这段代码片段? 感谢您的帮助!变量引用错误:我如何完成这项工作?

def f(x): 
    if count < x: 
     <some irrelevvant code> 

for i in range(10): 
    count = 1 
    f(3) 
    <some more irrelevant code> 

我的歉意,我想我的原始问题是有点不清楚。该“无关代码”我提到的实际上可能是相关的,所以我上传我的全部代码:

def ways(l, h): 
    if count2 < h: 
     for v in A: #A is a globally defined list 
      if u != v: 
       if check(t, v): 
        count2 += 1 
        t = v 
        ways(l, h) 
    else: 
     count1 += 1 

count1 = 0 
for u in A: 
    count2 = 1 
    t = u 
    ways(9, 3) 

现在因为我递归调用函数ways,我不能有count2定义为ways函数的参数。每次运行u for循环时,必须将Count2重置为1,但不是每当调用ways时。

+1

您明确地将'count'传递给'f'。 – jonrsharpe

+0

在循环中,+ f(3,count) –

+1

在定义f(x)之前,你可以执行'count = 1',它会起作用,但是你不这么做,最好把'count'传递给'f '明确地说,因为'显式比隐式更好。'# –

回答

1
def f(x,count): 
    if count < x: 
     <some irrelevant code> 

for i in range(10): 
    count = 1 
    f(3,count) 
    <some more irrelevant code> 

使函数中的“count”为local。如果你通过计数功能f,没有必要使其全球化,它应该工作得很好。

+0

我在问题中增加了更多细节。我不认为这种方法会起作用,因为函数是递归调用的。 – Sphener

相关问题