python中的各种作用域[duplicate]

问题描述 投票:0回答:1

嗨,为什么python中int和list的作用域不同。以下是我的示例

#!/usr/bin/python

class Foo:
    def method(self):
        l = []
        i = 0
        def method1():
            l.append(1)
            i =  i + 1 <<<<<< Throws exception
        method1()
    Foo().method()

在上面的示例中,我可以在method1函数内部访问列表l,但不能访问整数i。有任何可能的解释吗?

我引用了下面的链接,但对以上情况没有解释

Short description of the scoping rules?

python scope global-variables
1个回答
0
投票

由于@khelwood已在评论部分回答,这是作业。您引用列表,但分配一个整数。如果您引用int,它也可以用作列表:

class Foo:
    def method(self):
        l = []
        i = 0
        def method1():
            l.append(1)
            m = i + 1
            print(m)
        method1()
Foo().method()
© www.soinside.com 2019 - 2024. All rights reserved.