from typing import Any, Optional, Tuple


def 切片(元组数据: Tuple[Any, ...], 开始索引: Optional[int] = None, 结束索引: Optional[int] = None, 步长: Optional[int] = None):
    """按给定范围对元组执行切片。

    Args:
        元组数据: 待切片的元组。
        开始索引: 切片开始索引，默认为 ``None``。
        结束索引: 切片结束索引，默认为 ``None``。
        步长: 切片步长，默认为 ``None``。

    Returns:
        成功时返回切片后的新元组；失败时返回空元组 ``()``。
    """
    try:
        if not isinstance(元组数据, tuple):
            return ()
        return 元组数据[slice(开始索引, 结束索引, 步长)]
    except Exception:
        return ()


if __name__ == "__main__":
    print("===== 示例1：基础切片 =====")
    数据 = (10, 20, 30, 40, 50)
    print("结果:", 切片(数据, 1, 4))

    print("\n===== 示例2：带步长切片 =====")
    数据 = (10, 20, 30, 40, 50, 60)
    print("结果:", 切片(数据, None, None, 2))

    print("\n===== 示例3：非法步长 =====")
    数据 = (1, 2, 3)
    print("结果:", 切片(数据, 0, 3, 0))

    print("\n===== 示例4：负索引切片 =====")
    数据 = (10, 20, 30, 40, 50)
    print("结果:", 切片(数据, -4, -1))

    print("\n===== 示例5：反向切片 =====")
    数据 = (10, 20, 30, 40, 50)
    print("结果:", 切片(数据, None, None, -1))

    print("\n===== 示例6：应用场景-分页取当前页数据 =====")
    全部记录 = ("订单1", "订单2", "订单3", "订单4", "订单5", "订单6", "订单7")
    每页数量 = 3
    当前页 = 2
    开始 = (当前页 - 1) * 每页数量
    结束 = 开始 + 每页数量
    print("结果:", 切片(全部记录, 开始, 结束))
