首页Python【Python内置函数】i...

【Python内置函数】int()函数

Python 提供了许多内置函数,这些函数是Python语言的一部分,可以直接在Python程序中使用而无需导入任何模块。

本系列将会陆续整理分享一些的Python内置函数。

文章配套代码获取有以下两种途径:
  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/11x9_wCZ3yiYOe5nVcRk2CQ?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/Python_built-in_functions





01
简介

int() 函数用于将一个字符串或数字转换为整数。

int() 函数的基本语法如下:

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() 函数返回转换后的整数。

02
使用

下面是一些使用 int() 函数的示例:

  • 示例 1:基本使用

当 x 为整数时,int(x) 直接返回该整数本身,因为已经是整数类型了

当 x 为浮点数时,会将其转换为整数,即截断小数部分,只保留整数部分

当 x 为字符串时,字符串必须表示一个合法的数字,且如果指定了 base 参数,字符串必须符合该进制的表示规则。字符串可以有以下可选格式:
  • 以 + 或 - 开头(中间不能有空格),表示正数或负数;

  • 可以有前导零,但在 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


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

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments