Python 方法:修改原始对象与返回不同的对象

Lee*_*e88 3 python functional-programming conventions mutable immutability

我是 Python 和面向对象编程的新手,有一个非常基本的 101 问题:

我看到一些方法返回一个修改过的对象,并保留原来的:

In: x="hello"
In: x.upper()
Out: 'HELLO'
In: x
Out: 'hello'
Run Code Online (Sandbox Code Playgroud)

我看到其他方法修改和覆盖原始对象:

In: y=[1,2,3]
In: y.pop(0)
Out: 1
In: y
Out: [2, 3]
Run Code Online (Sandbox Code Playgroud)

这两个是常态吗?有没有办法知道我正在为给定的类和方法处理哪种情况?

cco*_*cco 5

您的示例显示了不可变的内置对象(例如,字符串和元组)和可变对象(例如,列表、字典和集合)之间的区别。

一般来说,如果一个类(对象)被描述为不可变的,你应该期待前者的行为,而后者是可变对象的行为。