Python命名约定:指示函数是否改变参数

Joo*_*ost 4 python coding-style pep8 naming-conventions

我想知道是否有一个适当的Python约定来区分改变其参数的函数或者保留其参数的函数并返回修改后的副本.例如,考虑两个应用某些排列的函数.函数f将列表作为参数并对元素进行混洗,而函数g采用列表,复制,应用f然后返回更改的副本.

对于上面的例子,我想,f可以被称为permute(x),而g可以是permutation(x),使用动词和名词来区分.然而,这并不总是最佳的,并且在某些情况下,它可能会导致关于参数是否会在此过程中发生变化的混淆 - 特别是如果f要返回其他值.

有没有一种标准的方法来处理这个问题?

Mar*_*ers 6

没有方便的命名约定,也没有在PEP-8这样的地方写下来.

Python标准库确实在某种程度上使用了这样的约定.相比:

listobj.sort()
listobj.reverse()
Run Code Online (Sandbox Code Playgroud)

sorted_listobj = sorted(listobj)
reversed_iterator = reversed(listobj)
Run Code Online (Sandbox Code Playgroud)

在直接作用于对象时使用动词,在返回新对象时使用形容词.

惯例不一致.枚举可迭代时,您使用enumerate(),而不是enumerated().filter()不会改变输入顺序.round()不接触输入数字对象. compile()生成一个新的字节码对象.等等,但这些操作都没有在原地等同于Python标准库反正,我不知道有任何使用的形容词,其中输入被就地改变的.