代码之家  ›  专栏  ›  技术社区  ›  JGFMK

python 3是否可以从内部循环的外部引用变量(没有全局变量)?

  •  1
  • JGFMK  · 技术社区  · 7 年前
    def test():
        i = 0
        for e in range(5):
            i=+1
            print('i in for loop {}'.format(i))
            while True:
                print ('i in while {}'.format(i))
                break
    test()
    

    尝试了字典:

    def test():
        ns = {}
        ns['i'] = 0
        for e in range(5):
            ns['i']=+1
            print('i in for loop {}'.format(ns['i']))
            while True:
                print ('i in while {}'.format(ns['i']))
                break
    test()
    

    定义一个空类:

    class Namespace:pass
    def test():
        ns = Namespace()
        ns.i = 0
        for e in range(5):
            ns.i =+1
            print('i in for loop {}'.format(ns.i))
            while True:
                print ('i in while {}'.format(ns,i))
                break
    test()
    

    得到这个输出:

    i in for loop 1
    i in while 1
    i in for loop 1
    i in while 1
    i in for loop 1
    i in while 1
    i in for loop 1
    i in while 1
    i in for loop 1
    i in while 1
    

    通缉:

    i in for loop 1
    i in while 1
    i in for loop 2
    i in while 2
    i in for loop 3
    i in while 3
    i in for loop 4
    i in while 4
    i in for loop 5
    i in while 5
    

    是否有解决办法,而不诉诸于 global 所以引用的“i”不是每个循环作用域的局部?

    2 回复  |  直到 7 年前
        1
  •  3
  •   jedzej    7 年前

    只要把i=+1改成i+=1,你就可以走了:)

        2
  •  0
  •   Olivier Sohn    7 年前

    我认为在你的代码中你是想写 += 但是写道 =+ 相当于 = .