Typer 教程:参数类型与数值范围验证

Typer 教程:参数类型与数值范围验证

typer Typer是一款基于Python类型提示构建的库,用于轻松编写高质量命令行接口(CLI)程序。 typer 项目地址: https://gitcode.com/gh_mirrors/ty/typer

在命令行应用开发中,参数验证是一个非常重要的环节。Typer 作为一个强大的 Python 命令行应用构建工具,提供了丰富的参数类型和验证功能。本文将重点介绍如何使用 Typer 进行数值类型的参数验证。

数值参数的基本使用

Typer 支持两种主要的参数类型:位置参数(Argument)和可选参数(Option)。对于数值类型的参数,我们可以指定其类型为 intfloat

import typer

def main(
    id: int = typer.Argument(..., min=0, max=1000),
    age: int = typer.Option(20, min=18),
    score: float = typer.Option(0, max=100),
):
    print(f"ID is {id}")
    print(f"--age is {age}")
    print(f"--score is {score}")

if __name__ == "__main__":
    typer.run(main)

参数验证详解

1. 位置参数验证

示例中的 id 参数是一个位置参数,使用了 typer.Argument 定义:

id: int = typer.Argument(..., min=0, max=1000)
  • ... 表示这是一个必需参数,用户必须提供
  • min=0 设置最小值为 0
  • max=1000 设置最大值为 1000

如果用户输入的值不在这个范围内,Typer 会自动显示错误信息。

2. 可选参数验证

示例中包含了两个可选参数:

age: int = typer.Option(20, min=18)
score: float = typer.Option(0, max=100)
  • age 参数:

    • 默认值为 20
    • 最小值为 18(用户输入必须 ≥18)
  • score 参数:

    • 默认值为 0
    • 最大值为 100(用户输入必须 ≤100)

3. 浮点数参数

score 参数使用了 float 类型,这允许用户输入小数:

score: float = typer.Option(0, max=100)

实际应用场景

这种数值验证在实际应用中非常有用,例如:

  1. 用户管理系统:验证用户年龄必须大于等于18岁
  2. 评分系统:确保分数在0-100的合理范围内
  3. ID系统:保证ID在数据库的有效范围内

错误处理

当用户输入不符合要求的数值时,Typer 会自动生成友好的错误信息。例如:

  • 如果输入 --age 15,会提示年龄必须 ≥18
  • 如果输入 --score 150,会提示分数必须 ≤100
  • 如果省略必需的 id 参数,会提示缺少参数

最佳实践

  1. 合理设置默认值:为可选参数设置合理的默认值,提升用户体验
  2. 明确范围限制:对于有明确范围要求的参数,一定要设置 minmax
  3. 类型明确:根据实际需要选择 intfloat 类型
  4. 必需参数标记:使用 ... 明确标记必需参数

通过合理使用 Typer 的数值参数验证功能,可以大大减少命令行应用的输入错误,提高应用的健壮性和用户体验。

typer Typer是一款基于Python类型提示构建的库,用于轻松编写高质量命令行接口(CLI)程序。 typer 项目地址: https://gitcode.com/gh_mirrors/ty/typer

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尤歌泽Vigour

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值