Python 中这三个基础常用类型转换函数,你了解多少?

网安智编 厦门萤点网络科技 2025-09-24 00:05 72 0
这三个函数是中最基础也最常用的类型转换函数,用于在不同数据类型之间进行转换。让我们通过对比的方式来全面理解它们的特点和用法。 一、基本功能对比二、详细解析1. int()函数 功能:将数字或字符串转换为整数 特性: # 基本转换 print...

这三个函数是中最基础也最常用的类型转换函数,用于在不同数据类型之间进行转换。让我们通过对比的方式来全面理解它们的特点和用法。

一、基本功能对比二、详细解析1. int()函数

功能:将数字或字符串转换为整数

特性:

# 基本转换
print(int(3.99))    # 3 (截断)
print(int(-2.9))    # -2 (向零取整)
print(int("10"))    # 10
print(int(True))    # 1
# 进制转换
print(int("1010", 2))   # 10 (二进制)
print(int("FF", 16))    # 255 (十六进制)

2. float()函数

功能:将数字或字符串转换为浮点数

特性:

# 基本转换
print(float(3))       # 3.0
print(float("3.14"))  # 3.14
print(float("1e-3"))  # 0.001
# 特殊值
print(float("inf"))   # inf
print(float("nan"))   # nan
# 精度问题
print(0.1 + 0.2)      # 0.30000000000000004

3. str()函数

功能:将对象转换为字符串表示

特性:

# 基本转换
print(str(42))        # '42'
print(str(3.14))      # '3.14'
print(str([1,2,3]))   # '[1, 2, 3]'
# 自定义对象
class Point:
    def __str__(self):
        return "Point object"
print(str(Point()))   # 'Point object'
# 字节解码
print(str(b'hello', encoding='utf-8'))  # 'hello'

三、实际应用场景1. 用户输入处理

# 安全获取数字输入
def get_number(prompt, num_type=float):
    while True:
        try:
            return num_type(input(prompt))
        except ValueError:
            print("请输入有效的数字!")
age = get_number("请输入年龄(整数): ", int)
price = get_number("请输入价格: ", float)

2. 数据清洗

def clean_data(value):
    """统一清理各种数据格式"""
    if isinstance(value, str):
        value = value.strip()
        if value.replace('.', '', 1).isdigit():  # 检查是否是数字字符串
            return float(value) if '.' in value else int(value)
    return str(value)
print(clean_data(" 42 "))    # 42
print(clean_data("3.14"))    # 3.14
print(clean_data("abc"))     # 'abc'

3. 文件处理

# 读取CSV文件并转换类型
def read_csv(filepath):
    data = []
    with open(filepath) as f:
        for line in f:
            # 假设每行是: 名字,年龄,分数

Python类型转换函数对比_将字符串转化为对象_int()函数用法解析

name, age, score = line.strip().split(',') data.append((name, int(age), float(score))) return data

四、特殊用法与技巧1. 链式转换

# 字符串->浮点->整数
num = int(float("3.14"))  # 3
# 整数->字符串->浮点
num = float(str(42))      # 42.0

2. 类型转换与格式化

# 格式化输出
pi = 3.1415926
print(f"保留两位小数: {float(f'{pi:.2f}')}")  # 3.14
# 千分位格式化
big_num = 1234567
print("格式化:", "{:,}".format(int(big_num)))  # 1,234,567

3. 布尔值转换

# 布尔值与数字的转换关系
print(int(True))   # 1
print(float(True)) # 1.0
print(str(True))   # 'True'
# 反向转换
print(bool(1))     # True
print(bool(0))     # False
print(bool(""))    # False
print(bool("0"))   # True (非空字符串)

五、常见问题与解决方案1. 转换失败处理

def safe_convert(value, target_type):
    try:
        return target_type(value)
    except (ValueError, TypeError):
        return None
print(safe_convert("3.14", int))    # None
print(safe_convert("abc", float))   # None
print(safe_convert("[1,2]", str))   # '[1,2]' (永远不会失败)

2. 浮点数精度问题

from decimal import Decimal
# 精确计算
result = float(Decimal('0.1') + Decimal('0.2'))
print(result)  # 0.3
# 四舍五入处理
num = 3.1415926
rounded = round(num, 2)  # 3.14

3. 进制转换

# 十进制转其他进制
num = 255
print(bin(num))  # '0b11111111'
print(oct(num))  # '0o377'
print(hex(num))  # '0xff'
# 其他进制转十进制
print(int('0xff', 16))  # 255
print(int('1010', 2))   # 10

六、性能考虑转换速度:简单类型转换非常快,但大量数据转换时:

内存使用:最佳实践:

# 不好的做法:多次转换
for num in string_numbers:
    process(int(num))
# 好的做法:一次性转换
numbers = list(map(int, string_numbers))
for num in numbers:
    process(num)

七、总结对比表

掌握这三个类型转换函数,能够帮助您:

记住核心原则:

明确知道你要转换为什么类型始终处理可能的转换错误注意不同数据类型的特点和限制大量数据转换时考虑性能优化

加油多写多练