在Python中有一个就地功能的概念。例如,shuffle就位,因为它不返回任何内容。
如何判断某个功能是否就位?
from random import shuffle
print(type(shuffle))
<class 'method'>
所以我知道它是来自method
类的random
,但是有一个特殊的变量将一些函数定义为就地吗?
答案 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.`