Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 区分执行动作的函数和返回的函数_Python_Function - Fatal编程技术网

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,它可以让你快速跳转到定义,或者通过简单的鼠标/键组合显示函数的文档。