Python 为什么“float.is_integer”中有下划线,而“str.isnumeric”中没有下划线?
在Python的内置类型中,这似乎是唯一一个名称中带有下划线的“is”方法。包括下划线:Python 为什么“float.is_integer”中有下划线,而“str.isnumeric”中没有下划线?,python,naming-conventions,pep8,Python,Naming Conventions,Pep8,在Python的内置类型中,这似乎是唯一一个名称中带有下划线的“is”方法。包括下划线:str.isalnum,str.isalpha,str.isdecimal,str.isdigit,str.isidentifier,str.isnumeric,str.isprintable,str.isspace,str.istitle,str.isupper 有什么线索说明原因吗 到目前为止,我希望所有这些名称都包含下划线。但是实用性胜过纯洁性(),所以在常用的短名称中省略下划线是有意义的。但是,这两种
str.isalnum
,str.isalpha
,str.isdecimal
,str.isdigit
,str.isidentifier
,str.isnumeric
,str.isprintable
,str.isspace
,str.istitle
,str.isupper
有什么线索说明原因吗
到目前为止,我希望所有这些名称都包含下划线。但是实用性胜过纯洁性(),所以在常用的短名称中省略下划线是有意义的。但是,这两种命名约定同时似乎是向后兼容的结果(以日志记录
模块为典型示例)。a已在Python bug跟踪器上询问:
比较isinstance
、issubclass
和islower
与是整数
、是先进先出
和是启用的
。在Python3.6中,在标准库中以开头的所有名称中,我统计了69个带下划线的名称,91个不带下划线的名称。选择一种或另一种方式并坚持下去似乎更好。为了便于阅读,我建议使用下划线
答案(来自Python核心开发人员R.David Murray)是:
是的,那太好了。但是Python是随着时间的推移而发展的,我们必须保持向后兼容性。这些名字就是它们
考虑到问题中的数字,is\u integer
似乎不是唯一带下划线的方法。可能是因为float。is\u integer
是在PEP8建立很久之后的最新加法(从2.6开始)?str
api可能从一开始就存在,并且由于兼容性原因没有更改(尽管它可能在3中有)float.fromhex
也可能被重命名,我相信在标准类型中会发现更多的情况。