Python Academy · 课时

Click 库

使用装饰器创建 CLI

第 3 / 4 课13 个步骤

Click 库 是 CoddyKit 上的免费 Python Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Python Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Python Academy 课程共包含 4 节课。

什么是 Click?

Click是一个流行的第三方库,使用装饰器构建命令行界面。它只需很少的代码,就能处理解析、帮助文本、提示和颜色。请使用 pip install click安装。

import click

@click.command()
def hello():
    click.echo('Hello from Click')

# hello() would run when called as a script

click.echo

请使用 click.echo()代替 print。它可以处理编码问题,并且能够顺畅地配合 Click 的颜色和重定向功能。

import click

@click.command()
def greet():
    click.echo('Welcome!')

参数

@click.argument装饰器声明一个必需的位置参数,Click 会将其作为参数传给您的函数。

import click

@click.command()
@click.argument('name')
def hello(name):
    click.echo('Hello ' + name)

选项

@click.option定义可选标志。提供一个默认值后,Click 会自动生成帮助文本并处理类型。

import click

@click.command()
@click.option('--count', default=1, help='Number of greetings')
def hello(count):
    for _ in range(count):
        click.echo('Hi')

带类型的选项

Click 会根据默认值推断类型,也可以使用 type=int显式设置类型。无效输入会产生易于理解的错误信息。

import click

@click.command()
@click.option('--age', type=int, default=0)
def show(age):
    click.echo('Age is ' + str(age))

布尔标志

带有 is_flag=True的选项会变成一个开关,出现时值为 True,例如 --verbose。

import click

@click.command()
@click.option('--shout', is_flag=True)
@click.argument('text')
def say(shout, text):
    click.echo(text.upper() if shout else text)

交互式提示

设置 prompt=True后,如果用户没有在命令行中提供该选项,Click 就会以交互方式询问用户。

import click

@click.command()
@click.option('--name', prompt='Your name')
def hello(name):
    click.echo('Hello ' + name)

命令组

@click.group会创建一个保存子命令的父命令,相当于 argparse 中的子解析器。子命令通过 @cli.command()附加到父命令上。

import click

@click.group()
def cli():
    pass

@cli.command()
def start():
    click.echo('starting')

@cli.command()
def stop():
    click.echo('stopping')

彩色输出

click.style会为文本添加颜色和样式,click.secho则在一次调用中结合输出和样式处理。

import click

@click.command()
def status():
    click.secho('OK', fg='green', bold=True)
    click.secho('Error', fg='red')

确认与退出

click.confirm会提出是或否的问题,抛出 click.Abort或直接返回都可以干净地结束命令。

import click

@click.command()
def delete():
    if click.confirm('Are you sure?'):
        click.echo('deleted')
    else:
        click.echo('cancelled')

argparse 与 Click

argparse内置于 Python 中,非常适合简单工具。Click需要额外安装,但对于较大的 CLI,它开箱即提供更简洁的装饰器风格、嵌套命令组、交互式提示和颜色支持。

import click

@click.command()
@click.argument('items', nargs=-1)
def show(items):
    for item in items:
        click.echo(item)

快速检查

测试您对 Click 的理解。

回顾

您学会了Click 库:

  • 使用 @click.command、@click.argument和 @click.option装饰器定义 CLI。
  • click.echo和 click.secho用于输出,并可选择使用颜色。
  • @click.group用于构建嵌套子命令;提示和确认功能开箱即用。
  • 它是通过 pip 安装的外部依赖。

下一步:使用 rich 设置终端输出样式。

免费开始

用 AI 导师学习 Python — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
76
课程
320

常见问题解答

「Click 库」课时是免费的吗?

是的 — 「Click 库」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Python Academy 课程的其余内容,请升级到 CoddyKit PRO。 Python Academy 课程共包含 4 节课。

「Click 库」这节课中我会学到什么?

使用装饰器创建 CLI 你通过在浏览器中直接运行的动手代码来练习 Python Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Python Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Python Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「Click 库」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Python Academy 课中编写并运行代码吗?

能。每节 Python Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. argparse 基础
  2. 子命令与选项
  3. Click 库
  4. 丰富的终端输出
← 返回 Python Academy