python - 返回值的方法会更改原始数据类型

标签 python python-3.x methods

在了解了不同的数据类型之后,我了解到一旦创建了给定类型的对象,它就具有可以执行“操作”的固有方法。 经过尝试,我注意到,虽然有些方法返回一个值,但其他方法会更改存储的原始数据。

对于这两种类型的方法是否有任何特定术语,对于哪些方法返回值以及哪些方法进行更改是否有任何直觉或逻辑?

例如:

abc= "something"

defg= [12,34,11,45,132,1]

abc.capitalise()   #this returns a value

defg.sort()        #this changes the orignal list

最佳答案

Is there any specific term for these two types of methods

改变对象状态的方法(即list.sort())通常称为“更改器(mutator)”(它“变异”对象)。返回值的方法没有通用名称 - 它们可以是“getters”(不带参数并返回对象状态的一部分的方法)、替代构造函数(在类本身上调用的方法,并提供另一种构造方法)类的实例),或者只是接受一些参数的方法,根据参数和对象的状态进行一些计算并返回结果,或者实际上只是做任何事情(进行一些计算并更改对象的状态并返回一个值) .

is there any intuition or logic as to which methods return a value and which make changes?

一些 Python 对象是不可变的(字符串、数字、元组等),因此当您处理其中一种类型时,您知道您不会有任何更改器(mutator)。除了这种特殊情况,不,你必须检查文档。这里唯一的命名约定是,名称以“set_”开头且采用一个参数的方法将根据其参数更改对象的状态(并且通常不返回任何内容),而名称以“get_”开头且不采用任何参数的方法将根据其参数更改对象的状态(并且通常不返回任何内容)。返回有关对象状态的信息并且不进行任何更改(您经常会看到前者名为“setter”,后者名为“getters”),但与任何约定一样,它仅被遵循它的人遵循,IOW 并不认为因为方法名称以“get_”或“set_”开头,它确实会按预期运行。

关于python - 返回值的方法会更改原始数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51421621/

相关文章:

python - Python 中的可变迭代器?

java - 矩阵中的最大值

Ruby - 在类方法中引用 self

python - Tkinter 神秘的绑定(bind)问题

python - 在内联标记内进行替换,同时转义空白

python - 当未使用 Colorama 显式指定颜色时,无法以默认颜色打印日志

python - 在 Python Asyncio 中限制异步函数

python - 如何在 Python (cuPy/Numpy) 中将行与相应的列相乘?

java - Java是否需要时间来调用方法?

Python:type() 给出空白结果