Python中的Inplace函数

时间:2016-10-19 08:47:17

标签: python function python-3.x

在Python中有一个就地功能的概念。例如,shuffle就位,因为它不返回任何内容。

如何判断某个功能是否就位?

from random import shuffle

print(type(shuffle))

<class 'method'>

所以我知道它是来自method类的random,但是有一个特殊的变量将一些函数定义为就地吗?

2 个答案:

答案 0 :(得分:4)

您无法获得有关给定功能的操作的基本知识。您需要查看源代码并推断出此信息,或者检查文档字符串,并希望开发人员记录此行为。

例如,在list.sort

help(list.sort)
Help on method_descriptor:

sort(...)
    L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*

对于在某些类型上运行的函数,它们的可变性通常可以让您提取有关操作的一些知识。例如,您可以确定所有在字符串上运行的函数最终都会返回一个新函数,这意味着它们无法执行就地操作。这是因为您应该知道Python中的字符串是不可变对象。

答案 1 :(得分:2)

我认为没有特殊变量将某个函数定义为就地,但标准函数应该有一个文档字符串,表明它是就地的并且不返回任何值。例如:

>>> print(shuffle.__doc__)

Shuffle list x in place, and return None.

    `Optional argument random is a 0-argument function returning a
    random float in [0.0, 1.0); if it is the default None, the
    standard random.random will be used.`