You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用@click.command后程序执行完veg()即终止,如何执行后续代码?

解决click.command执行后程序终止的问题

嘿,这个问题我之前也碰到过!原因其实是@click.command()装饰器的默认行为在搞鬼——当你的veg()函数执行完之后,click会自动调用sys.exit()来终止整个程序,所以后面的print('End function')根本没机会运行。

最简单的解决方案

只需要修改主程序里调用函数的方式,使用veg.main(standalone_mode=False)替代直接调用veg()即可。standalone_mode=False会告诉click不要接管程序的退出流程,函数执行完毕后会回到主逻辑继续运行后续代码。

修改后的完整代码如下:

import click
import random

@click.command()
@click.option('--total', default=3, help='Number of vegetables to output.')
def veg(total):
    """ Basic method will return a random vegetable"""
    for number in range(total):
        print(random.choice(['Carrot', 'Potato', 'Turnip', 'Parsnip']))

if __name__ == '__main__':
    veg.main(standalone_mode=False)
    print('End function')

补充说明

如果你的场景需要在命令执行前后做更多统一的收尾工作,还可以考虑用click的钩子函数(比如@click.pass_context配合上下文回调),但对于你的需求来说,设置standalone_mode=False已经足够简单直接。

内容的提问来源于stack exchange,提问作者Pythoner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:26:12