当前位置:首页>python>Python 内置函数系列:i开头系列函数

Python 内置函数系列:i开头系列函数

  • 2026-10-21 13:27:32
Python 内置函数系列:i开头系列函数

id():对象标识的"身份证"

1. 基础用法:获取对象内存地址

id()函数返回对象的唯一标识符(内存地址),在对象的生命周期内保持不变。

# 基本用法
x = 10
y = "hello"
print
(f"整数x的id: {id(x)}")
print
(f"字符串y的id: {id(y)}")

# 相同值的不同对象

a = [1, 2, 3]
b = [1, 2, 3]
print
(f"列表a的id: {id(a)}")
print
(f"列表b的id: {id(b)}")
print
(f"a和b是否是同一个对象: {a is b}")  # False

# 相同对象的引用

c = a
print
(f"c的id: {id(c)}")
print
(f"a和c是否是同一个对象: {a is c}")  # True

2. 实际应用:对象身份验证

class ObjectTracker:
    def
 __init__(self):
        self
.objects = {}

    def
 track_object(self, obj, name):
        """跟踪对象并记录其ID"""

        obj_id = id(obj)
        self
.objects[obj_id] = {'object': obj, 'name': name}
        return
 obj_id

    def
 verify_object(self, obj, expected_name):
        """验证对象身份"""

        obj_id = id(obj)
        if
 obj_id in self.objects:
            tracked_name = self.objects[obj_id]['name']
            return
 tracked_name == expected_name
        return
 False

# 使用示例

tracker = ObjectTracker()
data = [1, 2, 3]

obj_id = tracker.track_object(data, "重要数据")
print
(f"跟踪对象ID: {obj_id}")
print
(f"验证对象: {tracker.verify_object(data, '重要数据')}")

input():用户交互的"对话窗口"

1. 基础用法:获取用户输入

input()函数从标准输入读取一行文本,并可选择显示提示信息。

# 基本输入
name = input("请输入你的名字: ")
print
(f"你好, {name}!")

# 数值输入转换

age = int(input("请输入你的年龄: "))
print
(f"明年你就{age + 1}岁了")

# 多值输入

values = input("请输入多个数字(用空格分隔): ").split()
numbers = [int(x) for x in values]
print
(f"数字总和: {sum(numbers)}")

2. 实际应用:简单交互程序

def simple_calculator():
    """简单计算器"""

    print
("=== 简单计算器 ===")

    try
:
        num1 = float(input("请输入第一个数字: "))
        operator = input("请输入运算符 (+, -, *, /): ")
        num2 = float(input("请输入第二个数字: "))

        if
 operator == '+':
            result = num1 + num2
        elif
 operator == '-':
            result = num1 - num2
        elif
 operator == '*':
            result = num1 * num2
        elif
 operator == '/':
            result = num1 / num2 if num2 != 0 else "错误:除数不能为0"
        else
:
            result = "错误:不支持的运算符"

        print
(f"结果: {result}")

    except
 ValueError:
        print
("错误:请输入有效的数字")
    except
 Exception as e:
        print
(f"发生错误: {e}")

# 运行计算器

simple_calculator()

int():数值转换的"整形师"

1. 基础用法:创建整数对象

int()函数从数字或字符串创建整数,支持不同进制转换。

# 从浮点数转换
print
(f"浮点数转整数: {int(3.14)}")  # 输出: 3(向零截断)

# 从字符串转换

print
(f"字符串转整数: {int('123')}")  # 输出: 123
print
(f"带符号字符串: {int('  -12_345\\n')}")  # 输出: -12345

# 不同进制转换

print
(f"十六进制转十进制: {int('FACE', 16)}")  # 输出: 64206
print
(f"二进制转十进制: {int('01110011', 2)}")  # 输出: 115
print
(f"带前缀的十六进制: {int('0xface', 0)}")  # 输出: 64206

# 默认值

print
(f"无参数调用: {int()}")  # 输出: 0

2. 实际应用:安全数值转换

class SafeConverter:
    @staticmethod

    def
 safe_int_conversion(value, default=0, base=10):
        """安全转换为整数"""

        try
:
            return
 int(value, base)
        except
 (ValueError, TypeError):
            return
 default

    @staticmethod

    def
 parse_user_input(user_input):
        """解析用户输入的数值"""

        # 移除空白字符

        cleaned = user_input.strip()

        # 尝试直接转换

        try
:
            return
 int(cleaned)
        except
 ValueError:
            pass


        # 尝试处理常见格式

        if
 cleaned.lower() in ['true', 'yes', 'on']:
            return
 1
        elif
 cleaned.lower() in ['false', 'no', 'off']:
            return
 0
        else
:
            return
 None

# 使用示例

converter = SafeConverter()

test_values = ["123", "45.67", "hello", "1010", "True"]
for
 val in test_values:
    result = converter.safe_int_conversion(val)
    print
(f"'{val}' -> {result}")

# 二进制转换

binary_str = "1101"
decimal_val = converter.safe_int_conversion(binary_str, base=2)
print
(f"二进制 {binary_str} = 十进制 {decimal_val}")

isinstance():类型检查的"验明正身"

1. 基础用法:检查对象类型

isinstance()函数检查对象是否是指定类或元组中任意类的实例。

# 基本类型检查
num = 42
text = "hello"
data_list = [1, 2, 3]

print
(f"num是整数: {isinstance(num, int)}")  # True
print
(f"text是字符串: {isinstance(text, str)}")  # True
print
(f"data_list是列表: {isinstance(data_list, list)}")  # True

# 多类型检查

print
(f"num是数字类型: {isinstance(num, (int, float))}")  # True
print
(f"text是数字或字符串: {isinstance(text, (int, float, str))}")  # True

# 继承关系检查

class
 Animal:
    pass


class
 Dog(Animal):
    pass


my_dog = Dog()
print
(f"my_dog是Dog实例: {isinstance(my_dog, Dog)}")  # True
print
(f"my_dog是Animal实例: {isinstance(my_dog, Animal)}")  # True

2. 实际应用:类型安全函数

def type_safe_addition(a, b):
    """类型安全的加法函数"""

    if
 not isinstance(a, (int, float)):
        raise
 TypeError("第一个参数必须是数字")
    if
 not isinstance(b, (int, float)):
        raise
 TypeError("第二个参数必须是数字")

    return
 a + b

def
 process_data(data):
    """根据数据类型进行处理"""

    if
 isinstance(data, str):
        return
 f"字符串长度: {len(data)}"
    elif
 isinstance(data, (list, tuple)):
        return
 f"序列元素数量: {len(data)}"
    elif
 isinstance(data, dict):
        return
 f"字典键数量: {len(data)}"
    elif
 isinstance(data, (int, float)):
        return
 f"数字的平方: {data ** 2}"
    else
:
        return
 f"未知类型: {type(data).__name__}"

# 使用示例

print
(type_safe_addition(5, 3.14))  # 正常
try
:
    print
(type_safe_addition("hello", 5))  # 报错
except
 TypeError as e:
    print
(f"错误: {e}")

# 处理不同类型数据

test_data = ["hello", [1, 2, 3], {"a": 1, "b": 2}, 10]
for
 item in test_data:
    result = process_data(item)
    print
(f"{item} -> {result}")

issubclass():继承关系的"家族谱"

1. 基础用法:检查类继承关系

issubclass()函数检查一个类是否是另一个类的子类。

# 基础类定义
class
 Vehicle:
    pass


class
 Car(Vehicle):
    pass


class
 ElectricCar(Car):
    pass


class
 Bicycle(Vehicle):
    pass


# 继承关系检查

print
(f"Car是Vehicle的子类: {issubclass(Car, Vehicle)}")  # True
print
(f"ElectricCar是Car的子类: {issubclass(ElectricCar, Car)}")  # True
print
(f"ElectricCar是Vehicle的子类: {issubclass(ElectricCar, Vehicle)}")  # True
print
(f"Car是Bicycle的子类: {issubclass(Car, Bicycle)}")  # False

# 类被认为是自身的子类

print
(f"Vehicle是Vehicle的子类: {issubclass(Vehicle, Vehicle)}")  # True

# 多类检查

print
(f"ElectricCar是(Vehicle, Bicycle)的子类: {issubclass(ElectricCar, (Vehicle, Bicycle))}")  # True

2. 实际应用:插件系统验证

class PluginBase:
    """插件基类"""

    pass


class
 DatabasePlugin(PluginBase):
    """数据库插件"""

    pass


class
 UIPlugin(PluginBase):
    """UI插件"""

    pass


class
 CustomPlugin:
    """自定义插件(不继承基类)"""

    pass


class
 PluginManager:
    def
 __init__(self):
        self
.plugins = []

    def
 register_plugin(self, plugin_class):
        """注册插件类"""

        if
 not issubclass(plugin_class, PluginBase):
            raise
 ValueError("插件必须继承自PluginBase")

        self
.plugins.append(plugin_class)
        print
(f"插件注册成功: {plugin_class.__name__}")

    def
 validate_plugin_compatibility(self, plugin_classes):
        """验证插件兼容性"""

        valid_plugins = []
        invalid_plugins = []

        for
 plugin_class in plugin_classes:
            if
 issubclass(plugin_class, PluginBase):
                valid_plugins.append(plugin_class)
            else
:
                invalid_plugins.append(plugin_class.__name__)

        return
 valid_plugins, invalid_plugins

# 使用示例

manager = PluginManager()

# 注册有效插件

manager.register_plugin(DatabasePlugin)
manager.register_plugin(UIPlugin)

# 验证插件兼容性

plugin_list = [DatabasePlugin, UIPlugin, CustomPlugin]
valid, invalid = manager.validate_plugin_compatibility(plugin_list)
print
(f"有效插件: {[p.__name__ for p in valid]}")
print
(f"无效插件: {invalid}")

iter():迭代器创建的"生成器"

1. 基础用法:创建迭代器对象

iter()函数从可迭代对象创建迭代器,支持两种调用形式。

# 从可迭代对象创建
numbers = [1, 2, 3, 4, 5]
number_iterator = iter(numbers)
print
(f"迭代器类型: {type(number_iterator)}")

# 手动迭代

print
(f"第一个元素: {next(number_iterator)}")  # 1
print
(f"第二个元素: {next(number_iterator)}")  # 2

# 字符串迭代器

text = "hello"
char_iterator = iter(text)
print
(f"字符迭代: {list(char_iterator)}")  # ['h', 'e', 'l', 'l', 'o']

# 使用可调用对象和哨兵值

def
 counter():
    counter.i = 0
    def
 inner():
        counter.i += 1
        return
 counter.i
    return
 inner

count_func = counter()
count_iterator = iter(count_func, 5)  # 当返回5时停止
print
(f"计数迭代: {list(count_iterator)}")  # [1, 2, 3, 4]

2. 实际应用:自定义数据读取

class DataReader:
    def
 __init__(self, data_source):
        self
.data_source = data_source
        self
.position = 0

    def
 read_chunk(self, chunk_size=10):
        """读取数据块"""

        if
 self.position >= len(self.data_source):
            return
 b''  # 哨兵值

        chunk = self.data_source[self.position:self.position + chunk_size]
        self
.position += chunk_size
        return
 chunk

    def
 create_iterator(self, chunk_size=10):
        """创建数据块迭代器"""

        return
 iter(lambda: self.read_chunk(chunk_size), b'')

# 使用示例

# 模拟文件读取

sample_data = b"这是一段模拟的二进制数据" * 5
reader = DataReader(sample_data)

# 使用迭代器读取数据块

chunk_iterator = reader.create_iterator(chunk_size=15)

print
("分块读取数据:")
for
 i, chunk in enumerate(chunk_iterator):
    print
(f"块 {i+1}: {chunk}")

# 使用partial函数模拟文件读取(如文档示例)

from
 functools import partial

def
 simulate_file_reading():
    """模拟文件读取的迭代器用法"""

    data = b"模拟文件内容" * 10
    data_pointer = 0

    def
 read_block(size):
        nonlocal
 data_pointer
        if
 data_pointer >= len(data):
            return
 b''
        block = data[data_pointer:data_pointer + size]
        data_pointer += size
        return
 block

    # 创建迭代器,读取4字节的块,直到遇到空字节串

    block_iterator = iter(partial(read_block, 4), b'')

    print
("\n模拟文件块读取:")
    for
 j, block in enumerate(block_iterator):
        print
(f"块 {j+1}: {block}")

simulate_file_reading()

总结

通过本文的解析,我们深入了解了Python中六个重要的内置函数:

  1. 1. id() - 对象标识的身份证,对象身份验证、内存调试
  2. 2. input() - 用户交互的对话窗口,命令行工具、交互式程序
  3. 3. int() - 数值转换的整形师,数据清洗、进制转换、用户输入处理
  4. 4. isinstance() - 类型检查的验明正身,类型检查、多态实现、API验证
  5. 5. issubclass() - 继承关系的家族谱,插件系统、框架开发、继承验证
  6. 6. iter() - 迭代器创建的生成器,数据流处理、文件读取、自定义迭代

关键知识点总结:

  • • id(object)返回对象的内存地址,用于身份比较
  • • input([prompt])读取用户输入,支持提示信息
  • • int(x[, base])转换为整数,支持不同进制
  • • isinstance(object, classinfo)检查对象类型
  • • issubclass(class, classinfo)检查类继承关系
  • • iter(iterable)或 iter(callable, sentinel)创建迭代器

阅读推荐:

Python 内置函数系列:h开头系列函数

Python 内置函数系列:g开头系列函数

Python 内置函数系列:f开头系列函数


✨关注我,获取更多Python学习资源、实战项目和行业动态!在公众号后台回复"python学习",获取Python学习电子书籍!

最新文章

随机文章