Python:全局变量与带有前缀"self."的变量与本地变量之间的区别是什么?

Chu*_*sta 2 python variables

多年来,我已经接触过类似C/C++/Java的语法,而Python变量的定义方式让我感到困惑.任何人都可以描述q中提到的三个差异吗?

Bry*_*ley 6

全局变量就是 - 全局可访问的变量.局部变量是仅可由当前范围访问的变量,例如单个函数定义中使用的临时变量.实例变量(例如:使用self.前缀时)是与对象的特定实例相关联的数据.当然,您还可以通过使用object.xwhere object对该对象的引用来引用对象外部的实例对象.

如果变量带有前缀self,则既不是本地变量也不是全局变量.它是对象的特定实例的构成的一部分.粗略地说,实例变量表示特定对象的属性.

在以下示例中,lx是一个局部变量,是方法的本地变量greet.gx是一个可在模块中的任何位置访问的全局变量,ix是一个实例变量,可以为该对象的每个实例提供唯一值.在对象定义内部引用时,您将ix使用前缀引用self,并在具有对象引用前缀的对象外部引用.

gx = "hello"
class Foo:
    def __init__(self, who):
        self.ix = who
    def greet(self):
        lx = "%s, %s" % (gx, self.ix)
        return lx

foo = Foo("world")
print foo.greet()
print foo.ix
Run Code Online (Sandbox Code Playgroud)