Python 中内置函数与内置方法的区别

Differentiating between built-in functions vs built-in methods in Python

我在理解 Python 的内置函数和方法时遇到了一些困难。据我了解,功能 return 有关某事的信息,而方法会改变某事。这是正确的吗?

我还不清楚为什么有些函数和方法需要参数而有些则不需要。这是特定于函数或方法的要求参数质量吗?

最后,为什么这些内置 functions/parameters 中的一些只是简单地声明其名称后跟参数(例如 sorted(list)),而其他一些(例如 list.sort())在其名称中使用句点语法?

方法是适用于某个class的函数,而函数可以在任何有效的class中使用。与 list class 的 sort 方法一样,对列表进行排序。可变类型的方法主要更改项目,因此 list.sort 会将 list 的值设置为 list 和 return None 的排序值。但是像字符串这样的不可变类型的方法将 return 一个新的实例,如下所示。

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 这样的内置函数不会更改项目,它们 return 它的新版本或实例。

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]

当你使用一个方法时,你在变量后面放一个句号来表明它只能用于那个特定的class。为什么有些函数需要参数而有些方法不需要——比如 sorted(list) 需要 list,但 list.sort() 不需要参数,是因为当你在 [=39= 上使用方法时], Python 默认传入一个名为 self 的参数,这是实际变量,在本例中为 list 。如果你使用过 JavaScript,self 类似于 JS 中的 this 关键字。

所以当你输入list.sort()的时候,Python实际上是运行函数sort里面的listclass给它传递了一个参数self.