Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么“float.is_integer”中有下划线,而“str.isnumeric”中没有下划线?_Python_Naming Conventions_Pep8 - Fatal编程技术网

Python 为什么“float.is_integer”中有下划线,而“str.isnumeric”中没有下划线?

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 有什么线索说明原因吗 到目前为止,我希望所有这些名称都包含下划线。但是实用性胜过纯洁性(),所以在常用的短名称中省略下划线是有意义的。但是,这两种

在Python的内置类型中,这似乎是唯一一个名称中带有下划线的“is”方法。包括下划线:
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
也可能被重命名,我相信在标准类型中会发现更多的情况。