python - 如何命名一个以对象 `A` 和集合 `{A, B}` 作为参数,然后返回 `B` 的函数?

标签 python function naming-conventions naming

以下函数(用 Python 实现)的好名称是什么?

def a_function(element, a_set):
    if a_set[0] == element:
        return a_set[1]
    if a_set[1] == element:
        return a_set[0]

assert 'A' == a_function('B', ['A', 'B'])

最佳答案

我会使用不同的函数名称、不同的参数名称和文档字符串来清楚地说明发生了什么,例如:

def get_other(current, both):
    """Return the element from 'both' that is not 'current'."""
    ...

请注意both暗示一对没有任何冗长的内容,并且不指定 type必填。

您可以使用您自己的实现或 Joel 的实现;只要函数按照它所说的去做,它的实现方式并不重要(除非性能问题、边缘情况等)。

但是,要使用不可索引的容器(例如 setdict 的键),无需显式测试 both 的内容。是的,我可能会选择:

def get_other(current, both):
    """Return the element from 'both' that is not 'current'."""
    for item in both:
        if item != current:
            return item

确实,如果 len(both) > 2 ,这只会返回其中第一个不等于 current 的项目- 如果这不是所需的行为,您可以为此添加检查。

关于python - 如何命名一个以对象 `A` 和集合 `{A, B}` 作为参数,然后返回 `B` 的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23179672/

相关文章:

function - Haskell 中的别名函数

javascript - 如何使用 DOM 生成小计金额

python - 如何将元组作为参数并返回由参数的前三个和后三个元素组成的元组

r - 我看到了,但我不相信。 R 中的合法名称、管道操作和点

python - Polars API 注册和类型检查器

python - 如何将 stdout 重定向到 Tkinter Text 小部件

java - 使用Java包命名约定时,如果您不再拥有域名会发生什么

c# - 将 C# 属性完全按照属性类型命名还是使用更短的字符串更好?

python - pyodbc 失败且没有错误

python - 将字符串转换为列表 Python