区分Python中的内置函数和内置方法

问题描述

我在理解Python的内置函数方法方面有些挣扎。据我了解,函数返回有关某物的信息,而方法则改变某物。这是正确的吗?

对我来说还不清楚的是,为什么某些函数方法需要参数,而另一些则不需要。这种要求参数的质量是功能还是方法特有的?

最后,为什么这些内置函数/参数中的某些函数/参数仅简单地声明其名称,后跟参数(例如sorted(list)),而另一些内置函数/参数(例如list.sort())则使用句点? >

解决方法

方法是适用于某个类的函数,而该函数可以在任何有效的类中使用。类似于sort类的list方法对列表进行排序。可变类型的方法通常会更改项目,因此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,4,6],but does not modify list.
print(list1)     # Prints [4,2]
list1.sort()     # Returns None,but changes list.
print(list1)     # Prints [2,6]

使用方法时,请在变量后面放置一个句点,以表明该变量只能用于该特定类。为什么有些函数需要参数而有些方法不需要参数-例如sorted(list)需要list,但是list.sort()不需要参数,是因为当您在类上使用方法时,Python通过default传入一个名为self的参数,该参数是实际变量list。如果您使用过JavaScript,那么self类似于JS中的this关键字。

因此,当您输入list.sort()时,Python实际上正在sort类内运行函数list,并向其传递参数self