Skip to main content
 首页 » 编程设计

python之python中从对象到函数的变量引用和操作

2025年05月04日14grandyang

我用python写了下面的代码

class check(object): 
    def __init__(self): 
        self.a = [1,2,3,4] 
        self.b = 5 
        appending(self.a, self.b) 
        print "a", self.a 
        print "b", self.b 
 
def appending(a,b): 
    a.append(5) 
    b +=1 

如果现在我运行 check() 函数,我得到如下输出:

a [1,2,3,4,5] [1,2,3,4,5] 
 
b 5 5 

所以,我有以下问题

  • 为什么更新了 list(a) 而没有更新 int(b)?

  • 这与我修改了a但是我在b中添加1时创建了新对象有关,简而言之,它是不可变或可变数据类型的区别。

  • 我在对象中定义了 self.a 和 self.b,我在函数中定义了 a,b,那么为什么我可以在对象中编写 print a 和 print b,得到与 self.a 和 self 相同的输出.b

请您参考如下方法:

self.b 是整数 5 的名称。整数是一个不可变的对象。

当您看似要改变 b 时,您实际上创建了一个新对象 6 并为其分配了 b 作为名称。这绝不会影响对象 5,self.b 是其名称。