本系列将会陆续整理分享一些的Python内置函数。
-
通过百度网盘获取:
链接:https://pan.baidu.com/s/11x9_wCZ3yiYOe5nVcRk2CQ?pwd=mnsj
提取码:mnsj
-
前往GitHub获取:
https://github.com/returu/Python_built-in_functions
int(number=0, /)
int(string, /, base=10)
-
x:需要转换的数字,如果 x
是浮点数,转换时会去掉小数部分; -
string:需要转换的字符串; -
base:表示进制数,当输入为字符串时,base 参数才有效。默认值为 10,表示十进制。可以取值为 2 到 36,或者 0。如果 base 是 0,那么字符串前缀 0x 或 0X 表示十六进制,前缀 0o 或 0O 表示八进制,前缀 0b 或 0B 表示二进制,如果没有前缀,则默认是十进制。
返回值:
下面是一些使用 int() 函数的示例:
-
示例 1:基本使用
当 x 为整数时,int(x) 直接返回该整数本身,因为已经是整数类型了
当 x 为浮点数时,会将其转换为整数,即截断小数部分,只保留整数部分
-
以
+
或-
开头(中间不能有空格),表示正数或负数; -
可以有前导零,但在 base 为 0 时不允许前导零;
-
可以被空白字符包围;
-
数字之间可以有单个下划线分隔。
# 整数
num_int = 123
print(int(num_int)) # 输出: 123
# 浮点数
num_float = 123.45
print(int(num_float)) # 输出: 123
# 字符串
# 有负号的数字字符串
num_str = "-123"
print(int(num_str)) # 输出: -123
# 有下划线分隔的数字字符串
num_str = "1_0_0"
print(int(num_str)) # 输出: 100
# 指定进制
# 二进制字符串转换为整数
num_bin = "0b1010"
print(int(num_bin, 2)) # 输出: 10
# 八进制字符串转换为整数
num_oct = "0o12"
print(int(num_oct, 8)) # 输出: 10
# 十六进制字符串转换为整数
num_hex = "0xA"
print(int(num_hex, 16)) # 输出: 10
# 自动检测进制(前缀)
num_auto_hex = "0xFF"
num_auto_oct = "0o755"
num_auto_bin = "0b1101"
print(int(num_auto_hex, 0)) # 输出: 255
print(int(num_auto_oct, 0)) # 输出: 493
print(int(num_auto_bin, 0)) # 输出: 13
-
示例 2:特殊方法调用
-
__int__() 方法示例:
如果参数对象定义了 __int__() 方法,int(x) 会调用 x.__int__() 并返回其结果。例如,对于一些自定义的数值类,可以通过实现 __int__() 方法来定义其转换为整数的行为,int() 函数就会使用这个方法来进行转换。
Python 中的整数类型已经定义了 __int__() 方法。当你对一个整数使用 int() 函数时,实际上是在调用该整数的 __int__() 方法,返回值就是该整数本身。
# 使用内置的整数类型
int_num = 123
print(int(int_num)) # 输出:123
print(int_num.__int__()) # 输出:123
也可以在自定义类中实现 __int__() 方法。
# 自定义类实现 __int__() 方法
class MyClass:
def __int__(self):
return 123
obj = MyClass()
print(int(obj)) # 输出:123
-
__index__() 方法示例:
如果参数对象定义了 __index__() 方法,int(x) 会调用 x.__index__() 并返回其结果。这个方法通常用于那些可以作为序列索引的对象,确保其转换为整数后可以用于索引操作。
Python 中的整数类型已经定义了 __index__() 方法。
# 使用内置的整数类型
int_num = 123
print(int(int_num)) # 输出:123
print(int_num.__index__()) # 输出:123
也可以在自定义类中实现 __index__() 方法。
class MyIndexClass:
def __index__(self):
return 123
obj = MyIndexClass()
print(int(obj)) # 输出:123
-
__trunc__() 方法示例:
当参数对象定义了 __trunc__() 方法时,int(x) 会调用 x.__trunc__() 并返回其结果。这个方法通常用于数值类型,尤其是浮点数,其作用是截断小数部分,向零方向取整。
Python 中的浮点数类型已经定义了 __trunc__() 方法。当你对一个浮点数使用 int() 函数时,实际上是在调用该浮点数的 __trunc__() 方法,从而实现向零方向的截断。
# 使用内置的浮点数类型
# Python 中的浮点数类型已经定义了 __trunc__() 方法
# 正浮点数
float_num1 = 3.999
print(int(float_num1)) # 输出:3
print(float_num1.__trunc__()) # 输出:3
# 负浮点数
float_num2 = -2.718
print(int(float_num2)) # 输出:-2
print(float_num2.__trunc__()) # 输出:-2
也可以在自定义类中实现 __trunc__() 方法,这样当该类的实例被 int() 函数处理时,就会按照你定义的逻辑进行截断处理。
# 自定义类实现 __trunc__() 方法
class MyNumber:
def __init__(self, value):
self.value = value
def __trunc__(self):
# 实现向零方向截断的逻辑
if self.value >= 0:
return int(self.value)
else:
return -int(-self.value)-1
# 创建实例
num1 = MyNumber(3.999)
num2 = MyNumber(-2.718)
# 使用 int() 函数
print(int(num1)) # 输出:3
print(int(num2)) # 输出:-3
# 直接调用 __trunc__() 方法
print(num1.__trunc__()) # 输出:3
print(num2.__trunc__()) # 输出:-3


本篇文章来源于微信公众号: 码农设计师