Python 命名约定 : indicating if function alters arguments

标签 python coding-style naming-conventions pep8

我想知道是否有适当的 Python 约定来区分在适当位置更改参数的函数或保留参数并返回更改副本的函数。例如,考虑应用某些排列的两个函数。函数 f 接受一个列表作为参数并打乱周围的元素,而函数 g 接受一个列表,复制它,应用 f 然后返回修改后的副本。

对于上面的例子,我认为f可以叫做permute(x),而g可以是permutation( x),用动词和名词来区分。但是,这并不总是真正的最佳选择,并且在某些情况下,它可能会导致混淆是否会在此过程中更改参数 - 特别是如果 f 要返回一些其他值.

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

最佳答案

没有方便的命名约定,无论如何都没有写在 PEP-8 之类的地方。

Python 标准库确实在一定程度上使用了这样的约定。比较:

listobj.sort()
listobj.reverse()

sorted_listobj = sorted(listobj)
reversed_iterator = reversed(listobj)

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

约定不一致。枚举可迭代对象时,使用 enumerate(),而不是 enumerated()filter() 不会就地改变输入序列。 round() 不接触输入数字对象。 compile() 生成一个新的字节码对象。等等。但这些操作在 Python 标准库中都没有就地等效项无论如何,而且我不知道在输入被就地更改的情况下使用形容词。

关于Python 命名约定 : indicating if function alters arguments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30392289/

相关文章:

python - 如何使用 Python pandas 有效地将每小时数据转换为一年中每一天的日期和时间?

python - 使用 Django 模型创建子类别

c - 使用 `int x = x;` 表达式(C 语言)可能是什么情况?

api - API 路径应该使用复数名词而不是单数名词,有什么理由吗?

c# - 我是否应该使用与 .NET BCL 的名称冲突的(否则是最佳的)类名称?

python - 使用 F 引用 2 个表来更新 python

python - 如果没有传递参数,如何使参数默认?

ruby - 一行 `if` return 语句有两个 Action

java - 大型项目代码格式化的最佳实践

matlab - 在 Matlab 中打印变量名