Python 区分执行动作的函数和返回的函数
是否有一种简单的方法来确定/记住哪些函数返回新对象,哪些函数作用于现有对象。例如,Python 区分执行动作的函数和返回的函数,python,function,Python,Function,是否有一种简单的方法来确定/记住哪些函数返回新对象,哪些函数作用于现有对象。例如,list.append('new stuff')作用于该实际对象,而string.rstrip()返回需要分配到某个位置的新字符串 我总是要查找(或打开Python解释器快速检查)哪些函数起作用,哪些函数返回。据我所知,没有比您描述的更简单的方法了 大多数人(包括我!)学习的方式是做更多的编程,记住常用的函数,并检查那些你不知道的函数的手册:)据我所知,没有比你描述的更简单的方法了 大多数人(包括我!)学习的方式是
list.append('new stuff')
作用于该实际对象,而string.rstrip()
返回需要分配到某个位置的新字符串
我总是要查找(或打开Python解释器快速检查)哪些函数起作用,哪些函数返回。据我所知,没有比您描述的更简单的方法了
大多数人(包括我!)学习的方式是做更多的编程,记住常用的函数,并检查那些你不知道的函数的手册:)据我所知,没有比你描述的更简单的方法了
大多数人(包括我!)学习的方式是做更多的编程,记住常用的函数,并检查那些你不知道的函数的手册:)这是我通常做的,我打开python解释器,通过编写代码片段尝试不同的事情。但是,还有更强大的方法可以让元数据在您键入时显示,例如,您可以使用PyCharm提供给您,它将告诉您要访问的对象中可用的函数以及所需的参数并返回提示。我通常会这样做,我打开python解释器,通过编写代码片段尝试不同的事情。但是,有更强大的方法可以让元数据在键入时显示,例如,您可以使用PyCharm提供给您,这将告诉您要访问的对象中可用的函数以及所需的参数并返回提示。没有完全可靠的方法,但有一些很好的启发:
- 如果一个对象是不可变的,那么它的任何方法都不会对其进行变异,当然,即使是像
这样听起来确实是变异的方法str.replace
- 像
或sorted
这样的东西,加上形容词或名词名,通常会产生一个新的对象set.intersection
- 如果对象是可变的,则具有动词名称的方法通常会修改该对象。这类似于
或list.append
set.add
不幸的是,并不是每个人都选择好的名称,所以我们有这样的东西,它生成一个NumPy数组的排序副本,实际上应该被称为
NumPy.sorted
。最可靠的方法总是检查文档或在解释器会话中进行测试。没有完全可靠的方法,但有一些很好的启发:
- 如果一个对象是不可变的,那么它的任何方法都不会对其进行变异,当然,即使是像
这样听起来确实是变异的方法str.replace
- 像
或sorted
这样的东西,加上形容词或名词名,通常会产生一个新的对象set.intersection
- 如果对象是可变的,则具有动词名称的方法通常会修改该对象。这类似于
或list.append
set.add
不幸的是,并不是每个人都选择好的名称,所以我们有这样的东西,它生成一个NumPy数组的排序副本,实际上应该被称为
NumPy.sorted
。最可靠的方法总是检查文档或在解释器会话中进行测试。您需要查看手册才能确定。我认为您只需要记住哪些内容是可变的(列表、dict等),哪些内容是不可变的(字符串、元组等).@jornsharpe甚至可以将可变对象传递给返回新对象的函数,而不必对传递的对象进行变异。@EugeneSh。当然,这是真的,但是如果你想推断一个方法是否会改变一个对象,知道它是否是可变的是一个很好的开始。使用一个好的IDE,比如PyCharm,它可以让你快速跳转到定义,或者通过简单的鼠标/键组合显示函数的文档。你需要查看手册才能确定。我想你只需要记住哪些东西是可变的(列表、命令等等)和不可变的对象(字符串、元组等)。@jornsharpe即使是可变对象也可以传递给返回新对象的函数,而无需对传递的对象进行变异。@EugeneSh。当然,这是正确的,但是如果你想推断一个方法是否会改变一个对象,知道它是否是可变的是一个很好的开始。使用一个好的IDE,比如PyCharm,它可以让你快速跳转到定义,或者通过简单的鼠标/键组合显示函数的文档。