如何用Python传递姓名和年龄参数?

在Python中处理命令行参数是开发命令行工具的基础功能,能提升脚本的灵活性和用户体验,以下是几种主流方法及详细实现:


使用 sys.argv(基础场景)

适用于简单参数解析,直接读取命令行输入:

import sys
if len(sys.argv) == 3:
    name = sys.argv[1]  # 获取第一个参数 -> "Alice"
    age = sys.argv[2]   # 获取第二个参数 -> "25"
    print(f"Name: {name}, Age: {age}")
else:
    print("Usage: python script.py <name> <age>")

特点

  • 无需额外库,但需手动验证参数数量和类型
  • 无自动帮助文档生成

使用 argparse(推荐方案)

Python标准库,支持复杂参数规则,自动生成帮助文档:

import argparse
# 初始化解析器
parser = argparse.ArgumentParser(description="用户信息录入")
# 添加参数规则
parser.add_argument("name", type=str, help="用户姓名")  # 必选位置参数
parser.add_argument("--age", type=int, default=18, help="用户年龄(默认18)")  # 可选参数
parser.add_argument("-v", "--verbose", action="store_true", help="显示详细输出")  # 布尔标志
# 解析参数
args = parser.parse_args()
# 使用参数
if args.verbose:
    print(f"详细信息:{args.name},{args.age}岁")
else:
    print(f"{args.name}: {args.age}")

关键方法

  • add_argument() 参数详解:
    • type:指定数据类型(如 int/str
    • default:设置默认值
    • required=True:强制要求可选参数(如 --age 变为必填)
    • choices=[18,20,25]:限制参数可选值
    • action="store_true":无需值的布尔标志
  • 自动生成帮助文档:
    $ python script.py -h
    usage: script.py [-h] [--age AGE] [-v] name

使用 getopt(类C风格)

兼容传统C语言风格的参数解析:

import sys, getopt
# 示例命令: python script.py -n Alice -a 25 --verbose
try:
    opts, args = getopt.getopt(sys.argv[1:], "n:a:v", ["name=", "age=", "verbose"])
except getopt.GetoptError:
    sys.exit(2)
name = age = None
verbose = False
for opt, arg in opts:
    if opt in ("-n", "--name"):
        name = arg
    elif opt in ("-a", "--age"):
        age = arg
    elif opt in ("-v", "--verbose"):
        verbose = True
print(f"Name: {name}, Age: {age}, Verbose: {verbose}")

适用场景

  • 需要兼容POSIX命令行传统规范时
  • 相比 argparse 更底层,代码量较大

第三方库推荐(高级需求)

  1. click:通过装饰器简化参数定义
    import click
    @click.command()
    @click.option("--name", prompt="Your name", help="用户姓名")
    @click.option("--age", default=18, help="用户年龄")
    def greet(name, age):
        click.echo(f"Hello {name}, age {age}")
  2. fire:自动将函数/类转为命令行接口
    import fire
    def calculate(x, y=10):
        return x * y
    if __name__ == '__main__':
        fire.Fire(calculate)  # 直接支持命令: python script.py 5 --y=3

方法 适用场景 优势
sys.argv 1-2个简单参数 无需导入库
argparse 大多数标准CLI工具 功能全面、文档自动生成
click 复杂交互式工具 优雅的链式语法
fire 快速原型开发 零参数解析代码

关键建议

  • 生产环境优先使用 argparse(标准库兼容性好)
  • 需要更简洁语法时选 click
  • 避免手动解析 sys.argv(易出错且难维护)

引用说明:

  • Python官方文档:argparse, getopt
  • click 库文档:https://click.palletsprojects.com/
  • Google fire 项目:https://github.com/google/python-fire

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8736.html

(0)
酷番叔酷番叔
上一篇 2025年7月26日 14:36
下一篇 2025年7月26日 14:44

相关推荐

  • 国内云服务器搭建代理,哪种方法最安全高效?

    推荐VLESS+XTLS或Trojan协议,二者加密强、抗干扰,兼顾安全与传输效率,是目前优选方案。

    2026年2月14日
    4900
  • 为保障核心数据安全,你知道该如何选择高安全性的云服务器吗?

    在数字化浪潮席卷全球的今天,企业将核心业务和数据迁移至云端已成为不可逆转的趋势,云服务器凭借其弹性、成本效益和高可用性等优势,成为了支撑现代应用的基石,随着其普及度的提升,安全性问题也日益凸显,成为企业在选型和使用时最为关切的核心要素,一台真正“安全性高”的云服务器,并非单一功能的堆砌,而是一个涵盖物理、网络……

    2025年11月20日
    9100
  • 怎样查看当前目录文件?

    在Ubuntu中运行命令行主要通过终端(Terminal)实现,这是与系统交互的核心工具,以下是详细操作指南:打开终端的4种方法快捷键启动Ctrl + Alt + T:适用于所有Ubuntu版本(桌面版),秒开终端窗口,图形化菜单点击屏幕左下角 “显示应用程序”(Ubuntu Dock)搜索 “Terminal……

    2025年8月7日
    13600
  • 如何快速掌握Vim高效操作?

    Vim的三种核心模式普通模式(Normal Mode)启动Vim后的默认模式,用于导航和操作文本,按 Esc 键从其他模式返回,插入模式(Insert Mode)用于输入文本,通过以下命令进入:i(光标前插入)a(光标后插入)o(下方新行插入)I(行首插入)A(行尾插入)命令模式(Command Mode)按……

    2025年6月24日
    16600
  • AutoJS如何实现自动点赞?

    在移动应用自动化领域,AutoJS凭借其基于JavaScript的脚本编写能力和无需Root的便捷性,成为许多用户提升效率的工具,“点赞”功能作为社交平台常见的交互行为,通过AutoJS实现自动化操作,既能节省重复时间,又能探索自动化脚本的设计逻辑,本文将围绕AutoJS点赞功能展开,从基础原理、实现步骤、注意……

    2025年12月10日
    9800

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信