Python 命名约定:指示函数是否改变参数
Python naming convention: indicating if function alters arguments
我想知道是否有适当的 Python 约定来区分原地更改参数的函数或保留参数的函数和 return 更改后的副本。例如,考虑应用某些排列的两个函数。函数 f
接受一个列表作为参数并打乱周围的元素,而函数 g
接受一个列表,复制它,应用 f
然后 return 修改后的副本。
上面的例子,我想f
可以叫permute(x)
,而g
可以叫permutation(x)
,用动词和名词来区分。但是,这并不总是真正的最佳选择,并且在某些情况下,它可能会导致混淆是否会在此过程中更改参数 - 特别是如果 f
对 [=26= 具有其他值].
有没有标准的方法来处理这个问题?
没有方便的命名约定,无论如何都没有写在 PEP-8 之类的地方。
Python 标准库确实在一定程度上使用了这样的约定。比较:
listobj.sort()
listobj.reverse()
和
sorted_listobj = sorted(listobj)
reversed_iterator = reversed(listobj)
直接作用于对象时使用动词,返回新对象时使用形容词。
约定不一致。枚举可迭代对象时,使用 enumerate()
,而不是 enumerated()
。 filter()
不会改变输入顺序。 round()
没有触及输入数字对象。 compile()
生成一个新的字节码对象。等等,但是 none 这些操作在 Python 标准库 无论如何 中都有就地等价物,我不知道在输入的地方使用形容词已就地更改。
我想知道是否有适当的 Python 约定来区分原地更改参数的函数或保留参数的函数和 return 更改后的副本。例如,考虑应用某些排列的两个函数。函数 f
接受一个列表作为参数并打乱周围的元素,而函数 g
接受一个列表,复制它,应用 f
然后 return 修改后的副本。
上面的例子,我想f
可以叫permute(x)
,而g
可以叫permutation(x)
,用动词和名词来区分。但是,这并不总是真正的最佳选择,并且在某些情况下,它可能会导致混淆是否会在此过程中更改参数 - 特别是如果 f
对 [=26= 具有其他值].
有没有标准的方法来处理这个问题?
没有方便的命名约定,无论如何都没有写在 PEP-8 之类的地方。
Python 标准库确实在一定程度上使用了这样的约定。比较:
listobj.sort()
listobj.reverse()
和
sorted_listobj = sorted(listobj)
reversed_iterator = reversed(listobj)
直接作用于对象时使用动词,返回新对象时使用形容词。
约定不一致。枚举可迭代对象时,使用 enumerate()
,而不是 enumerated()
。 filter()
不会改变输入顺序。 round()
没有触及输入数字对象。 compile()
生成一个新的字节码对象。等等,但是 none 这些操作在 Python 标准库 无论如何 中都有就地等价物,我不知道在输入的地方使用形容词已就地更改。