Skip to content Skip to sidebar Skip to footer

Why The Bracket Can't Be Omitted In Int.to_bytes?

>>> x=3 >>> x.to_bytes(2,'big') b'\x00\x03' >>> 3.to_bytes(2,'big') File '', line 1 3.to_bytes(2,'big') ^ SyntaxError: in

Solution 1:

Without the brackets, Python is attempting to parse 3.to_bytes as a floating point number; that is, it's trying to make 3.<something> and there's a syntax failure when you try to access to_bytes without the dot.

If you add an extra dot, it finishes the parsing of the float and attempts to access the method, which doesn't exist:

>>>3..to_bytes(2, "big")
Traceback (most recent calllast):
File "<stdin>", line 1, in<module>
AttributeError: 'float' object has no attribute 'to_bytes'

If you have it in the brackets it passes because it doesn't try to make the floating point number. You can also run it with a space to get around this:

>>> 3 .to_bytes(2, "big")
b'\x00\x03'>>> 3.to_bytes(2, "big")
  File "<stdin>", line 13.to_bytes(2, "big")
             ^
SyntaxError: invalid syntax

When you store the int in a variable, Python doesn't attempt to parse it as a float, which is why you don't see it that way as well when using x.to_bytes().

Solution 2:

Because 3. by itself is a decimal (float type) number. So 3.to_bytes is parsed as (3.)to_bytes which is invalid. So you need to say (3).to_bytes to give the dot the meaning you intended.

Post a Comment for "Why The Bracket Can't Be Omitted In Int.to_bytes?"