为什么在`float.is_integer`中使用下划线,而不是在`str.isnumeric`中使用下划线?

时间:2017-08-27 09:10:13

标签: python naming-conventions pep8

似乎float.is_integer是唯一的“is”方法,其名称中的下划线在Python中的内置类型中。 Examples that don't包括下划线:str.isalnumstr.isalphastr.isdecimalstr.isdigitstr.isidentifierstr.islowerstr.isnumericstr.isprintablestr.isspacestr.istitlestr.isupper

有关原因的任何线索?

PEP 8,我希望所有这些名称都包含下划线。但实用性胜过纯度(PEP 20),因此省略常用和短名称中的下划线是有道理的。但是,这两个命名约定似乎都是向后兼容的结果(使用logging模块作为规范示例。)

1 个答案:

答案 0 :(得分:2)

Python bug跟踪器上已询问similar question

  

isinstanceissubclassisloweris_integeris_fifois_enabled进行比较。在Python 3.6中,在标准库中以is开头的所有名称中,我使用下划线计数69个名称,而不使用91。选择一种方式或另一种方式似乎更好并坚持下去。我建议使用下划线,以便易读。

答案(来自R. David Murray,Python核心开发人员)有:

  是的,那会很好。但随着时间的推移,Python已经发展,我们必须保持向后兼容性。名字就是它们的名字。

考虑到问题中的数字,似乎is_integer不是唯一带下划线的方法。