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):
            return ()
        return 元组数据[开始索引:结束索引]
    except Exception:
        return ()


if __name__ == "__main__":
    print("===== 示例1：基础区间截取 =====")
    数据 = (10, 20, 30, 40, 50)
    print("结果:", 取指定索引区间(数据, 1, 4))

    print("\n===== 示例2：起止相同 =====")
    数据 = (10, 20, 30)
    print("结果:", 取指定索引区间(数据, 1, 1))

    print("\n===== 示例3：负索引区间 =====")
    数据 = (10, 20, 30, 40, 50)
    print("结果:", 取指定索引区间(数据, -4, -1))

    print("\n===== 示例4：开始大于结束 =====")
    数据 = (10, 20, 30, 40)
    print("结果:", 取指定索引区间(数据, 3, 1))

    print("\n===== 示例5：参数类型错误 =====")
    数据 = (10, 20, 30)
    print("结果:", 取指定索引区间(数据, "1", 2))

    print("\n===== 示例6：应用场景-截取当前页显示范围 =====")
    全部订单 = ("ORD-001", "ORD-002", "ORD-003", "ORD-004", "ORD-005", "ORD-006")
    print("结果:", 取指定索引区间(全部订单, 2, 5))



