Python int()

时间:2020-02-23 14:42:50  来源:igfitidea点击:

Python int()函数从指定的输入返回一个整数对象。
返回的int对象将始终以10为底。

Python int()

Python int()函数语法为:

class int(x=0, base=10)

int()函数的一些重要点是:

  • 如果未提供任何参数,则int()函数将返回0。

  • 如果提供整数文字参数,则不应提供base。
    即使参数为十六进制,二进制或者任何其他基数,返回的int对象也将为十进制。

  • 对于浮点参数,小数点将被截断,并且将返回int值。
    不会进行四舍五入。

  • 如果参数为字符串,则将其转换为int。
    如果字符串参数不在10以底,则必须提供base。

  • 只能为字符串,字节和字节数组参数提供基本参数。
    允许值为0和2至36。

  • 我们也可以将int()与自定义对象一起使用,在这种情况下,将调用对象__int __()函数。
    如果未定义__int __()函数,则将调用__trunc __()函数。
    如果它们都没有定义,那么将抛出" TypeError"。

让我们看一下具有不同类型输入参数的int()函数示例。

Python int()与数字

x = int()
print(type(x))
print(x)

print(int(0xF))
print(int(0b111))

输出:

<class 'int'>
0
15
7

带有浮点数的Python int()

x = int(10.043)
print(x)

x = int(10.8901)
print(x)

输出:

10
10

请注意,返回浮点数的整数部分,不进行舍入。

带有字符串的Python int()

x = int("5")
print(x)

x = int("-0xf", base=16)
print(x)

x = int("0b111", base=2)
print(x)

输出:

5
-15
7

带有字节和字节数组的Python int()

x = int(bytes("-0xf", "utf-8"), 16)
print(x)

x = int(bytearray("-20", "utf-8"))
print(x)

输出:

-15
-20

带有自定义对象的Python int()

class Emp:
  id = 0

  def __int__(self):
      print('__int__ function called')
      return self.id

  def __trunc__(self):
      print('__trunc__ function called')
      return self.id

x = Emp()
x.id = 100
print(int(x))

输出:

__int__ function called
100

如果我们注释__int__函数,那么输出将是:

__trunc__ function called
100

如果我们同时注释__int__和__trunc__函数,则会得到以下错误。

TypeError: int() argument must be a string, a bytes-like object or a number, not 'Emp'