>>> x=3
>>> x.to_bytes(2,"big")
b'\x00\x03'
>>> 3.to_bytes(2,"big")
File "<stdin>", line 1
3.to_bytes(2,"big")
^
SyntaxError: invalid syntax
>>> (3).to_bytes(2,"big")
b'\x00\x03'
为什么我不能省略括号3.to_bytes(2,"big")
?这个括号在这里有什么作用?
答案 0 :(得分:1)
因为3.
本身是十进制(浮点类型)数。因此3.to_bytes
被解析为(3.)to_bytes
无效。所以你需要说(3).to_bytes
给你想要的意思。
答案 1 :(得分:1)
如果没有括号,Python会尝试将3.to_bytes
解析为浮点数;也就是说,当您尝试访问没有点的3.<something>
时,它会尝试to_bytes
并且语法失败。
如果添加一个额外的点,它将完成float的解析并尝试访问该方法,该方法不存在:
>>> 3..to_bytes(2, "big")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'float' object has no attribute 'to_bytes'
如果你在括号中有它,因为它没有尝试制作浮点数。你也可以用空格来运行它来解决这个问题:
>>> 3 .to_bytes(2, "big")
b'\x00\x03'
>>> 3.to_bytes(2, "big")
File "<stdin>", line 1
3.to_bytes(2, "big")
^
SyntaxError: invalid syntax
当您将int
存储在变量中时,Python并不会尝试将其解析为float
,这就是为什么您也不会这样看待它使用x.to_bytes()
。