q=0
def digui(n , m):
if(m>13):
return
if(n==13):
if(m==13):
q=q+1
return
for a in range(5):
digui(n+1,m+a)
def main():
digui(0,0)
print(q)
这个里面q应该是全局变量吧,但是digui函数里面的q=q+1报错,变成了局部q,这是为什么?
def digui(n,m):
global q
...
这个里面q应该是全局变量吧,但是digui函数里面的q=q+1报错,变成了局部q,这是为什么?
因为函数定义了本地作用域,而模块定义的是全局作用域。如果想要在函数内定义全局作用域,需要加上global修饰符。
在函数内定义全局变量,需要加上global修饰符。题主上面所写在函数外声明,然后函数内这样直接使用是不可以的。因为这样写法不符合python语言作用域的相关规则。
解决方案:
在函数digui(n , m)内添加一句 global q 进行修饰声明即可。
以上仅供参考,希望对题主有所帮助!