python常用得内置函数解析——int()函数


下面来详细解析 Python 中最常用的内置函数之一 int()。

1. 函数定义

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

  • 语法
    • int() - 返回 0
    • int(x) - 将 x 转换为整数
    • int(x, base=10) - 将基数为 base 的字符串 x 转换为十进制整数
  • 参数
    • x:要转换的对象(数字或字符串)
    • base:进制基数(2-36,0)
  • 返回值:整数对象

2. 基本用法示例

空参数

print(int())      # 输出: 0

从浮点数转换

print(int(3.14))   # 输出: 3 (向下取整)
print(int(9.99))   # 输出: 9
print(int(-2.7))   # 输出: -2 (向零取整)

从布尔值转换

print(int(True))   # 输出: 1
print(int(False))  # 输出: 0

从字符串转换(十进制)

print(int("123"))     # 输出: 123
print(int(" 45 "))    # 输出: 45 (自动去除空白字符)
print(int("-100"))    # 输出: -100
print(int("+50"))     # 输出: 50

3. 不同进制的转换

二进制(base=2)

print(int("1010", 2))     # 输出: 10
print(int("1111", 2))     # 输出: 15
print(int("0b1010", 2))   # 输出: 10 (可以带前缀)

八进制(base=8)

print(int("12", 8))       # 输出: 10
print(int("0o17", 8))     # 输出: 15 (可以带前缀)

十六进制(base=16)

print(int("A", 16))       # 输出: 10
print(int("FF", 16))      # 输出: 255
print(int("0x1F", 16))    # 输出: 31 (可以带前缀)

其他进制(2-36)

print(int("Z", 36))       # 输出: 35 (Z是36进制中的35)
print(int("10", 5))       # 输出: 5 (五进制的10)

base=0 的特殊情况

# base=0 时会根据字符串前缀自动判断进制
print(int("0b1010", 0))   # 输出: 10 (二进制)
print(int("0o12", 0))     # 输出: 10 (八进制)
print(int("0xA", 0))      # 输出: 10 (十六进制)
print(int("10", 0))       # 输出: 10 (十进制)

4. 错误处理示例

无效的字符串

try:
    print(int("abc"))     #  ValueError: invalid literal for int() with base 10: 'abc'
except ValueError as e:
    print(f"错误: {e}")

try:
    print(int("12.3"))    # ValueError: invalid literal for int() with base 10: '12.3'
except ValueError as e:
    print(f"错误: {e}")

进制不匹配

try:
    print(int("2", 2))    # ValueError: invalid literal for int() with base 2: '2'
except ValueError as e:
    print(f"错误: {e}")

try:
    print(int("G", 16))   # ValueError: invalid literal for int() with base 16: 'G'
except ValueError as e:
    print(f"错误: {e}")

5. 实际应用场景

场景1:用户输入处理

def get_integer_input(prompt):
    """安全获取用户输入的整数"""
    while True:
        user_input = input(prompt).strip()
        try:
            return int(user_input)
        except ValueError:
            print("请输入有效的整数!")

# age = get_integer_input("请输入年龄: ")

场景2:进制转换工具

def convert_base(number, from_base, to_base):
    """将数字从一个进制转换到另一个进制"""
    # 先转换为十进制整数
    decimal_num = int(str(number), from_base)
    # 然后转换为目标进制
    if to_base == 2:
        return bin(decimal_num)
    elif to_base == 8:
        return oct(decimal_num)
    elif to_base == 16:
        return hex(decimal_num)
    else:
        return str(decimal_num)

print(convert_base("1010", 2, 10))  # 输出: 10
print(convert_base("A", 16, 2))     # 输出: 0b1010

场景3:数据清洗

def clean_numeric_data(data):
    """清洗数值数据,转换为整数"""
    cleaned = []
    for item in data:
        try:
            # 尝试转换为整数
            cleaned.append(int(item))
        except (ValueError, TypeError):
            # 无法转换的保持原样或处理为None
            cleaned.append(None)
    return cleaned

data = ["123", "45.6", "abc", "789", "-100"]
print(clean_numeric_data(data))  # 输出: [123, None, None, 789, -100]

6. 与相关函数的比较

函数

用途

返回值

备注

int()

转换为整数

int

向下取整,支持多种进制

float()

转换为浮点数

float

保持小数部分

str()

转换为字符串

str

文本表示

round()

四舍五入

int/float

数学上的四舍五入

# 比较不同转换函数
num = 3.75

print(int(num))      # 输出: 3 (向下取整)
print(round(num))    # 输出: 4 (四舍五入)
print(float(num))    # 输出: 3.75 (保持不变)

7. 高级用法和技巧

使用__int__()方法自定义对象

class Temperature:
    def __init__(self, celsius):
        self.celsius = celsius
    
    def __int__(self):
        return int(self.celsius)
    
    def __repr__(self):
        return f"Temperature({self.celsius}°C)"

temp = Temperature(23.7)
print(int(temp))  # 输出: 23

处理大数字字符串

# Python 可以处理非常大的整数
big_num = int("123456789012345678901234567890")
print(big_num)  # 输出: 123456789012345678901234567890
print(type(big_num))  # 输出: <class 'int'>

结合异常处理的最佳实践

def safe_int_conversion(value, default=0):
    """安全地转换为整数,失败时返回默认值"""
    try:
        return int(value)
    except (ValueError, TypeError):
        return default

print(safe_int_conversion("123"))     # 输出: 123
print(safe_int_conversion("abc"))     # 输出: 0
print(safe_int_conversion("abc", -1)) # 输出: -1
print(safe_int_conversion(None))      # 输出: 0

8. 性能考虑

import timeit

# 比较不同转换方式的性能
setup = "num_str = '12345'"

stmt1 = "int(num_str)"
stmt2 = "float(num_str)"
stmt3 = "eval(num_str)"

print("int():", timeit.timeit(stmt1, setup, number=100000))
print("float():", timeit.timeit(stmt2, setup, number=100000))
print("eval():", timeit.timeit(stmt3, setup, number=100000))

# int() 通常是最快的,eval() 最慢且不安全

9. 注意事项

  1. 精度丢失:从浮点数转换时会丢失小数部分
  2. 进制限制:base 参数必须在 0 或 2-36 之间
  3. 字符串格式:字符串不能包含无关字符(除了前导空格和符号)
  4. 安全性:避免使用 eval(),优先使用 int()
# 危险的做法
user_input = "os.system('rm -rf /')"  # 恶意输入
# result = eval(user_input)  # 千万不要这样做!

# 安全的做法
user_input = "123"
result = int(user_input)  # 安全

总结

特性

描述

功能

将对象转换为整数

主要用途

类型转换、进制转换、数据清洗

参数形式

int(), int(x), int(x, base=10)

支持的进制

2-36,0(自动检测)

错误处理

无效输入抛出 ValueError

性能特点

高效、安全

适用场景

用户输入处理、数据转换、数值计算

int() 是 Python 中最基础且强大的函数之一,几乎在所有需要数值处理的场景中都会用到。掌握它的各种用法对于编写健壮的 Python 程序至关重要。

原文链接:,转发请注明来源!