In Python3, when tried to run "print(**0**9)", it is showing below error:

-----

File "<ipython-input-26-583eff382381>", line 7 print(09) ^ SyntaxError: invalid token

------

I googled and found that this leading causing octal represenation.. however I didn't get much info.

Isn't it uncommon behaviour of Python?

Feb 05 2018 10:41 AM

Hi Shivakant,

**In Python2:**

A number with prefix 0 means octal representation. But it is no longer in use in Python3.

**In Python3:**

A number with prefix,

- “0b” represents binary number - e.g.
**0b**0011 = 3 in decimal representation - “0o” represents octal number - e.g.
**0o**61 = 49 in decimal representation - “0x” represents hexadecimal number - e.g.
**0x**12 = 18 in decimal representation

Bin_num = 0b0011

print("Binary Number:", "0b0011", "\n" "Decimal equivalent:", Bin_num, "\n")

Oct_num = 0o61

print("Octal Number:", "0o61", "\n" "Decimal equivalent:", Oct_num,"\n")

Hex_num = 0x12

print("Hexadecimal Number:", "0x12","\n" "Decimal equivalent:", Hex_num, "\n")

**Reference documents: **

*From Python2 library document:*

Integer arguments are parsed as follows:

if the number starts with 0x, it is parsed as a hexadecimal number

if the number starts with 0, it is parsed as an octal number

if the number starts with 0b, it is parsed as a binary number

otherwise, the number is parsed as a decimal number

*Updates in Python3:*

Ref doc: https://www.python.org/dev/peps/pep-3127/

Refer "Removal of old octal syntax" Section in the document