使用十六进制,八进制或二进制整数作为Python的str.format()方法
简单使用Python的str.format()方法:
十六进制,八进制和二进制文字不起作用:
但是,根据replacement field grammar,他们应该:
integer grammar如下:
我是否误解了文档,或者Python的行为不像宣传的那样? (我使用的是Python 2.7.) 最佳答案
这看起来像语法中的错误.文本没有什么可澄清的;它只是将其描述为“一个数字或一个标识符”,并讨论如何解释一个数字.
测试它,该字段显然不被视为整数:
查看代码,它不会从Python解析器借用来解析格式字符串;它使用自定义解析,并且将arg_spec解释为数字的代码使用 PEP 3101表明这是故意的:
它没有具体说它不能太接近最大指数值,也不能说不能使用负指数.但是大多数其他怪癖可以通过使用“有效的基数10整数”描述而不仅仅是“整数”来解释.事实上,只是将其描述为数字而不是整数将解决所有的怪癖. element_index的解析方式与arg_name完全相同. #8985故意说element_index“…对整数索引使用最窄的可能定义,以便将所有其他字符串传递给映射.”对于arg_name是否也是故意的,或者是否是使用相同代码的意外后果,我不确定. 文档在3.4中保持不变,并且代码在current trunk中实际上没有变化. 我建议搜索bug tracker和python-dev档案,看看之前是否已经提出过.如果没有,请确定您是否认为应该更改文档或代码,提交错误,并理想地提交补丁. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |