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. 数值类型转整数
- 浮点数转整数:直接截断小数部分(不是四舍五入!),只保留整数位;
- 布尔值转整数:
True→1,False→0; - 复数转整数:报错(复数无法直接转整数,需先取实部 / 虚部)。
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) |
总结
int()核心语法是int(x=0, base=10),base仅对字符串有效,取值2~36(0 为自动识别);- 浮点数转整数是截断小数而非四舍五入,字符串转整数需保证格式纯数字(或符合指定进制);
- 常见避坑点:清理字符串空格、区分进制格式、复数需先取实 / 虚部、避免空字符串转换。

浙公网安备 33010602011771号