The int() function
In the Python programming language, the int()
built-in function returns an integer (an instance of the int
class) in decimal number system. If the argument passed to the function cannot be converted to a decimal number, a ValueError
exception is thrown.
If you call the int()
function without arguments, it will return 0.
>>> int()
0
Most often, the int()
function is passed a single argument, which can be either a string or a number. Strings must be character representations of an integer, otherwise an exception will be thrown.
>>> int('4')
4
>>> int('3a')
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
int('3a')
ValueError: invalid literal for int() with base 10: '3a'
If you pass an integer to the function, it will return it. If you pass a real number (float
type), then it will be rounded to the nearest integer towards zero (i.e., the fractional part will be discarded).
>>> int(87)
87
>>> int(-103)
-103
>>> int(234.879)
234
>>> int(-0.3)
0
>>> int(-0.9)
0
An attempt to convert a string containing a float number to an integer using the int()
function causes an error.
>>> int('101.1')
Traceback (most recent call last):
File "<pyshell#37>", line 1, in <module>
int('101.1')
ValueError: invalid literal for int() with base 10: '101.1'
To convert a fractional number in string representation to an integer, you can first use the float()
function, then int()
.
>>> int(float('15.76'))
15
When a second argument is given to the int()
function, the first must always be a string. The second argument indicates the base of the number system of the first argument. The int()
function returns its value in decimal notation.
>>> int('12', 8)
10
>>> int('13h', 20)
477
>>> int('111001', 2)
57
The radix base must not exceed 36.
>>> int('w0y', 36)
41506
>>> int('w0y', 37)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: int() base must be >= 2 and <= 36, or 0
Prefixes can be used for binary, octal and hexadecimal number systems. If such a number representation is enclosed in quotations, then the second argument is required.
>>> int(0b11)
3
>>> int(0o10)
8
>>> int(0xA5)
165
>>> int('0b11')
Traceback (most recent call last):
File "<pyshell#48>", line 1, in <module>
int('0b11')
ValueError: invalid literal for int() with base 10: '0b11'
>>> int('0b11', 2)
3
In classes, the int()
function is overridden by the __int__()
, __index__()
, __trunc__()
methods.
>>> class A:
... a = 'H'
... def __int__(self):
... return ord(self.a)
...
>>> obj = A()
>>> int(obj)
72
>>> obj.a = '!'
>>> int(obj)
33