当 运行 @click.command 时程序停止

Program stops when running @click.command

我正在使用 @click.command 对我的代码做一些事情。但是,在此之前,我尝试了代码:

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()
    print('End function')

我不明白为什么程序在完成 veg() 函数后立即停止。我需要做什么才能保留程序 运行ning 和 运行 print('End function')?

那是因为默认行为是在独立模式下调用脚本。然后 Click 将处理异常并将它们转换为错误消息,该函数永远不会 return 但会关闭解释器。 - docs.

standalone_mode 设置为 False 以更改它:

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')

Turnip
Carrot
Carrot
End function