运行@ click.command时程序停止

时间:2019-04-19 07:08:25

标签: python python-3.x

我正在使用@ 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()函数完成程序后立即停止。我要做什么才能保持程序运行并运行print('End function')

1 个答案:

答案 0 :(得分:3)

这是因为默认行为是在独立模式下调用脚本。然后,Click将处理异常并将其转换为错误消息,该函数将永远不会返回,但会关闭解释器。 -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