Python 2.7 Python全局变量在函数的第二作用域级别内不可访问

Python 2.7 Python全局变量在函数的第二作用域级别内不可访问,python-2.7,scoping,Python 2.7,Scoping,可能重复: 一般来说,考虑到其他语言的作用域规则,我认为Python的作用域规则对于全局变量是类似的,直到我在下面的代码中遇到了变量count的问题: count=1 def intPermute(fix,var): if len(var) ==2: #import pdb #pdb.set_trace() print ("%d: %s%c%c" % (count, str(fix),var[0],var[1])) c

可能重复:

一般来说,考虑到其他语言的作用域规则,我认为Python的作用域规则对于全局变量是类似的,直到我在下面的代码中遇到了变量count的问题:

count=1

def intPermute(fix,var):

    if len(var) ==2:
        #import pdb
        #pdb.set_trace()
        print ("%d: %s%c%c" % (count, str(fix),var[0],var[1]))
        count+=1
        print ("%d: %s%c%c" % (count, str(fix),var[1],var[0]))
        count+=1

    else:
        for i in range(len(var)):
            intPermute(fix+var[i],var[:i]+var[i+1:])



def permuteStr(string):
    # permute a string for nPn combinations basically n!
    if string =="" or len(string) <=0:
        return;
    if len(string) <2:
        print "%d: %s" % (count, str(string))

    intPermute("",string)
现在,全局的这个含义对我来说并不明显,我认为全局关键字是“导出”全局范围内的局部变量

因此,有两个问题: 1) 为什么Python不允许在函数intPermute的第二级作用域中查看全局变量计数?虽然它在函数的第一级范围内是可访问的? 2) 为什么全局关键字可以解决这个问题?它是否总是适用于解析1级全局变量

谢谢。

这是“设计”,请参阅:

def intPermute(fix,var):

    global count
    if len(var) ==2:
        #import pdb
        #pdb.set_trace()
        print ("%d: %s%c%c" % (count, str(fix),var[0],var[1]))
        count+=1
        print ("%d: %s%c%c" % (count, str(fix),var[1],var[0]))
        count+=1

    else:
        for i in range(len(var)):
            intPermute(fix+var[i],var[:i]+var[i+1:])