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)
    print("结果:", 取子元组(数据, 1, -2))

    print("\n===== 示例4：起始索引为负数 =====")
    数据 = (10, 20, 30, 40, 50)
    print("结果:", 取子元组(数据, -3, 2))

    print("\n===== 示例5：数量为0 =====")
    数据 = (10, 20, 30)
    print("结果:", 取子元组(数据, 1, 0))

    print("\n===== 示例6：应用场景-从批量任务中截取当前处理批次 =====")
    全部任务 = ("任务1", "任务2", "任务3", "任务4", "任务5", "任务6")
    print("结果:", 取子元组(全部任务, 2, 2))
