方法是适用于某个类的函数,而函数可以在任何有效的类中使用。就像list 类的sort 方法对列表进行排序一样。可变类型的方法主要改变项目,所以list.sort 会将list 的值设置为list 的排序值并返回None。但是字符串等不可变类型的方法将返回该事物的新实例,如下所示。
question = "How is this?"
question.replace("How", "What") # Returns "What is this", but does not change question.
print(question) # Prints "How is this?"
print(question.replace("How", "What")) # Prints "What is this"
像sorted 这样的内置函数不会更改项目,它们会返回项目的新版本或实例。
list1 = [4,3,6,2]
sorted(list1) # Returns [2,3,4,6], but does not modify list.
print(list1) # Prints [4,3,6,2]
list1.sort() # Returns None, but changes list.
print(list1) # Prints [2,3,4,6]
当你使用一个方法时,你在变量后面加上一个句点来表明它只能用于那个特定的类。为什么有些函数需要参数而有些方法不需要——比如sorted(list) 需要list,而list.sort() 不需要参数,是因为当你在类上使用方法时,Python 默认会传入一个名为self,这是实际变量,在本例中为 list。如果您使用过 JavaScript,self 类似于 JS 中的 this 关键字。
所以当你输入list.sort() 时,Python 实际上是在list 类中运行函数sort,并传递了self 的参数。