擅长:python、mysql、java
<p>Python对函数作用域之外的变量的写入有一些奇怪的规则。避免这种情况的最简单方法就是确保递归函数在每个状态返回计数器值。我稍微重构了一下,使它更清楚地显示出发生了什么。你知道吗</p>
<pre><code>lst = [('apple', 'banana'), 'orange', 'lemon']
lst2 = ['apple2', 'banana2', 'orange2', 'lemon2']
lst3 = ['apple3', 'banana3', 'orange3', 'lemon3']
def generateMenu(*args):
outer_counter = 1
def recurse(l, inner_counter):
for i in l:
if isinstance(i, (list, tuple)):
inner_counter = recurse(i, inner_counter)
else:
print("{}. {}.".format(inner_counter, i))
inner_counter += 1
return inner_counter
for i in args:
outer_counter = recurse(i, outer_counter)
generateMenu(lst, lst2, lst3)
</code></pre>