Python中int()函数的使用方法

一、int () 函数的核心定义

 
int() 是 Python 内置函数,用于将指定对象转换为整数类型(int),语法格式如下:
 
python
 
运行
 
 
 
 
int(x=0, base=10)
 
 
参数 说明 是否必传
x 待转换的对象(可以是数字、字符串、布尔值等;省略时默认返回0
base 进制数(仅当x是字符串时有效),取值范围2~36,默认10(十进制)
 

二、int () 函数的基础用法(无 base 参数)

 
这是最常用的场景,主要用于数值 / 布尔值 / 字符串(十进制)转整数
 

1. 无参数调用

 
省略所有参数时,直接返回整数0
 
python
 
运行
 
 
 
 
print(int())  # 输出:0
 
 

2. 数值类型转整数

 
  • 浮点数转整数:直接截断小数部分(不是四舍五入!),只保留整数位;
  • 布尔值转整数True1False0
  • 复数转整数:报错(复数无法直接转整数,需先取实部 / 虚部)。
 
python
 
运行
 
 
 
 
# 1. 浮点数转整数(截断特性)
print(int(3.999))   # 输出:3(不是4!仅截断小数)
print(int(-2.5))    # 输出:-2(负数同样截断,不是-3)
print(int(100.0))   # 输出:100(小数位为0时正常转换)

# 2. 布尔值转整数
print(int(True))    # 输出:1
print(int(False))   # 输出:0

# 3. 复数转整数(错误示例)
# print(int(3+4j))  # 报错:TypeError: can't convert complex to int
# 正确做法:取实部/虚部后转换
c = 3 + 4j
print(int(c.real))  # 取实部转整数,输出:3
print(int(c.imag))  # 取虚部转整数,输出:4
 
 

3. 字符串转整数(十进制)

 
仅当字符串是纯十进制数字格式(可带正负号)时才能转换,否则报错:
 
python
 
运行
 
 
 
 
# 合法场景
print(int("123"))   # 输出:123(纯数字字符串)
print(int("-456"))  # 输出:-456(带负号)
print(int("+789"))  # 输出:789(带正号)

# 非法场景(报错示例)
# print(int("123.45"))  # 报错:含小数点
# print(int("123a"))    # 报错:含非数字字符
# print(int(" 123 "))   # 报错:含首尾空格(需先strip())
# 修正:先清理字符串
s = "  123  "
print(int(s.strip()))  # 输出:123
 
 

三、int () 函数的进阶用法(带 base 参数)

 
base参数仅对字符串类型的 x有效,用于指定字符串的原始进制,转换后返回十进制整数。
 
核心规则:base取值2~36(0 表示自动识别进制),且字符串必须符合对应进制的格式。
 

1. 常见进制转换(二进制 / 八进制 / 十六进制)

 
python
 
运行
 
 
 
 
# 1. 二进制字符串转十进制(base=2)
print(int("1010", base=2))  # 输出:10(二进制1010=十进制10)
print(int("-110", base=2))  # 输出:-6(带负号的二进制)

# 2. 八进制字符串转十进制(base=8)
print(int("12", base=8))    # 输出:10(八进制12=十进制10)

# 3. 十六进制字符串转十进制(base=16)
print(int("A", base=16))    # 输出:10(十六进制A=十进制10)
print(int("FF", base=16))   # 输出:255(十六进制FF=十进制255)
print(int("0xFF", base=16)) # 输出:255(带0x前缀也支持)

# 4. 高进制(如base=16,支持a-z/A-Z表示10-35)
print(int("z", base=36))    # 输出:35(36进制z=十进制35)
 
 

2. base=0:自动识别进制

 
base=0时,int()会根据字符串前缀自动判断进制:
 
  • 0b/0B → 二进制;
  • 0o/0O → 八进制;
  • 0x/0X → 十六进制;
  • 无前缀 → 十进制。
 
python
 
运行
 
 
 
 
print(int("0b1010", base=0))  # 识别二进制,输出:10
print(int("0o12", base=0))    # 识别八进制,输出:10
print(int("0xA", base=0))     # 识别十六进制,输出:10
print(int("10", base=0))      # 识别十进制,输出:10
 
 

四、特殊场景与边界情况

 

1. 空对象 / 空字符串

 
  • 空字符串""直接转换报错,需避免;
  • 可迭代对象(如列表、元组)无法直接转整数,需先处理。
 
python
 
运行
 
 
 
 
# 错误示例
# print(int(""))  # 报错:ValueError: invalid literal for int() with base 10: ''

# 可迭代对象转换(错误→正确)
# print(int([1,2,3]))  # 报错:TypeError: int() argument must be a string, a bytes-like object or a real number, not 'list'
# 修正:需先转字符串/数值
nums = [1,2,3]
print(int("".join(map(str, nums))))  # 转成"123"再转整数,输出:123
 
 

2. 自定义对象转整数

 
如果想让自定义类的实例能被int()转换,需实现__int__()方法:
 
python
 
运行
 
 
 
 
class MyNumber:
    def __init__(self, value):
        self.value = value
    
    def __int__(self):
        return int(self.value)  # 定义转换规则

num = MyNumber(3.9)
print(int(num))  # 输出:3(遵循自定义的转换规则)
 
 

五、常见坑点与避坑方案

 
坑点 示例 避坑方案
浮点数转整数四舍五入误区 int(3.9)得到 3 而非 4 如需四舍五入,用round(3.9) → 4
带空格的字符串转换 int(" 123 ")报错 先调用strip()清理空格:int(" 123 ".strip())
进制不匹配 int("10", base=2)输入 "12" 确保字符串符合指定进制(二进制仅含 0/1)
复数直接转换 int(3+4j)报错 先取实部 / 虚部:int((3+4j).real)
 

总结

 
  1. int()核心语法是int(x=0, base=10)base仅对字符串有效,取值2~36(0 为自动识别);
  2. 浮点数转整数是截断小数而非四舍五入,字符串转整数需保证格式纯数字(或符合指定进制);
  3. 常见避坑点:清理字符串空格、区分进制格式、复数需先取实 / 虚部、避免空字符串转换。
posted @ 2026-01-08 17:27  Python也不过如此  阅读(2)  评论(0)    收藏  举报