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
里面的list
class给它传递了一个参数self
.
我在理解 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
里面的list
class给它传递了一个参数self
.