Python函数返回函数的命名惯例

6
Python中用于返回另一个函数的函数,是否有命名规范?

9
没有特定的方式,只要恰当地命名函数即可。 - Martijn Pieters
1
我很惊讶这个问题被关闭了。对我来说,这是一个精确而清晰的问题,可以得到明确、有用、非争议性的答案。我发现下面两个答案都很有用:(kzh) 没有约定俗成,和 (GShearer) 从Cocoa中借鉴的一个约定的想法。很高兴在这些答案出现之前这个问题没有被关闭! - ToolmakerSteve
2个回答

3

函数装饰器是返回函数的函数的示例。 在(链接的)示例部分中,似乎没有使用任何标准命名约定。 我认为没有惯例。 如果您认为应该有一个惯例,您可以提出PEP。 尽管如此,可能不应该存在标准。 只需合理地命名函数即可。


2
我认为为这个特定的用例引入一个命名约定的PEP实在是愚蠢。即使PEP8也没有被遵守 - 只需合理地命名即可。 - Jon Clements
这并不是一个特定的用例。就像我在我的答案中所说的那样,这适用于所有返回值的方法。只需在方法的第一个单词中使用类型,无论它是字符串/数字/方法等。然后,您始终知道从方法中获取什么,而无需阅读文档字符串或代码。 - G. Shearer
我同意。我不认为应该为此制定PEP,但我是在指向OP这些事情被规范的地方。 - kzh

1

正如@Martijn Pieters所说,Python没有这样的东西,就像@kzh所说,您可以引入PEP。当我在Python中遇到不符合PEP-8的情况时,我会参考Cocoa(苹果的框架)。

根据Cocoa的规定,方法名称应该准确地告诉我它的作用,并且如果它返回了某些内容,那么这个内容应该是选择器(方法名称)中的第一个单词。

例如,

基于其他参数返回字符串的方法应该这样写:

def stringForObjectNamed(anObjectName):

或者
def string_for_object_named(an_object_name):

在你的情况下,代码如下:
def function_for_param1_and_param2(param1, param2):

或者

def method_for_param1_and_param2(param1, param2):

给我一个类型,这样我就不需要检查方法来确定它应该给我什么。由于Python不是静态类型的,这非常有帮助。

3
我不同意把类型放在函数名中,我总是可以检查到。相反,请告诉我对象代表什么(例如def description_for_object_named(an_object_name):)。当Python具有命名参数时(description_for(object_name = an_object_name)),在函数中放置参数名称也是多余的。 - Eric
3
这个建议类似于匈牙利命名法。你可以使用它,但这不是Python的惯用方式。动态类型的一部分优势在于您可以使用同一个函数返回各种类型。另外,作为编程风格的一部分,Python程序员倾向于使用比您示例中不那么冗长的名称。 - John Y
@G 希望你不需要在九个月后回到这里并阅读所有这些评论 :) - askewchan
@G.Shearer:当一种语言和IDE无法使嵌入类型成为不必要的时,将类型嵌入名称中变得流行起来。从长远来看,Python 3类型注释将是解决这个问题的首选方式;然后IDE可以立即提供类型信息,名称可以保持简单。在那之前,我发现自己同意你的观点,尽管我讨厌这种混乱。 - ToolmakerSteve
1
实际上,考虑到我的编程风格,我不一定会把类型作为第一个单词。相反,我会选择最具描述性的单词(这种单词通常与类型相关)。例如,我会写 def name..(),而不是 def string_name..(),因为名称通常是字符串。在名称长度和描述性之间存在权衡。我的偏好在这种权衡中处于中间位置。我认为“将最基本的信息放入名称中,但尽量不要过长”。 - ToolmakerSteve
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接