问题描述
我在理解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
。