为何含下划线的字符串'123_2307_7'可被Python转换为整数?
Python中int()函数支持下划线分隔数字的细节
Python 3.6及以上版本的int()函数允许数字字符串里用下划线作为数字分组分隔符,目的是提升大数字的可读性,转换时会自动忽略这些下划线,所以'123_2307_7'会被成功转成整数12323077,而不是触发ValueError。
关于这个特性的细节:
- 下划线只能放在数字字符之间,不能在字符串开头、结尾,也不能连续出现(比如
'123__456'这种格式会触发ValueError) - 不仅十进制数字支持,其他进制(比如二进制
'0b1000_0000'、十六进制'0xff_ee')也支持这种下划线分隔格式
如果要让带下划线的字符串进入你的字符串处理分支,可以在转换前先判断字符串是否包含下划线,修改后的函数示例:
def make_int(arg): if '_' in arg: str_value = arg else: try: int_value = int(arg) except ValueError: str_value = arg
内容的提问来源于stack exchange,提问作者user422005
相关产品推荐
相关产品推荐

