【问题标题】:Functions that share names with methods与方法共享名称的函数
【发布时间】:2014-01-26 17:36:43
【问题描述】:

声明一个与方法同名的函数是不是一个坏主意?

在这个例子中,集合有 union 方法,我还声明了一个名为 union 的函数:

def union(*lists):
    '''returns a list containing all unique values from input lists'''

    if len(lists) == 0:
        return lists[0]

    result = lists[0]
    for item in range(1, len(lists)):
        result = set(result).union(set(lists[item]))

    return list(result)    

a=[1,2,4]
b=[4,5,1]
c=[9,7,5]

print union(a, b, c)

我查看了PEP8,发现methods and functions have the same naming rules,但是给他们取相同的名字可以吗?

【问题讨论】:

  • 除非它不会让你自己(或你的团队成员)感到困惑,否则没关系。
  • 谢谢。我正在检查是否有任何我错过的最佳实践。

标签: python naming-conventions pep8


【解决方案1】:

在某些对象上使用也用作方法的名称没有问题。不同的命名空间不会冲突。

您唯一需要担心的是在 same 命名空间中屏蔽名称;内置函数是全局的,全局变量在本地命名空间中可见,因此您不想屏蔽内置名称。

但是对象上的方法只对该范围可见;您需要使用someset.union() 限定该方法,它永远不会与您的union() 函数冲突。

如果您确实必须将您的名称限制为 Python 标准库中的方法尚未采用的任何名称,那么您将几乎没有任何名称可供使用。

【讨论】:

  • 感谢 Martijn,这真的很有帮助。
猜你喜欢
  • 2014-10-05
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
  • 2015-02-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-01
  • 1970-01-01
相关资源
最近更新 更多