from typing import Any, Tuple


def 取连续区段(元组数据: Tuple[Any, ...], 开始索引: int, 长度: int):
    """按开始索引和长度提取连续区段。

    功能说明:
        - 这个函数用于按开始索引和长度提取连续区段。
        - 常用于从元组中读取某个成员、某一段数据，或者计算出一个统计结果。
        - 如果当前数据不适合处理，函数会返回约定好的结果，方便新手直接判断这次是否成功取到值。

    Args:
        元组数据: 待截取的元组。
        开始索引: 起始索引。
        长度: 连续区段长度。

    Returns:
        成功时返回连续区段元组；失败时返回空元组 ``()``。
    """
    try:
        if not isinstance(元组数据, tuple):
            return ()
        if not isinstance(开始索引, int) or not isinstance(长度, int) or 长度 < 0:
            return ()
        return 元组数据[开始索引:开始索引 + 长度]
    except Exception:
        return ()


if __name__ == "__main__":
    print("===== 示例1：基础连续区段 =====")
    数据 = (10, 20, 30, 40, 50)
    print("结果:", 取连续区段(数据, 1, 3))

    print("\n===== 示例2：长度超过剩余成员 =====")
    数据 = (10, 20, 30)
    print("结果:", 取连续区段(数据, 1, 10))

    print("\n===== 示例3：起始索引为负数 =====")
    数据 = (10, 20, 30, 40, 50)
    print("结果:", 取连续区段(数据, -3, 2))

    print("\n===== 示例4：长度为0 =====")
    数据 = (10, 20, 30)
    print("结果:", 取连续区段(数据, 1, 0))

    print("\n===== 示例5：长度非法 =====")
    数据 = (10, 20, 30)
    print("结果:", 取连续区段(数据, 1, -2))

    print("\n===== 示例6：应用场景-提取当前批次处理任务 =====")
    任务列表 = ("任务1", "任务2", "任务3", "任务4", "任务5", "任务6")
    print("结果:", 取连续区段(任务列表, 2, 3))



