跨函数传递值不会产生任何输出

passing values across functions yields no output

我有下面的代码,我使用 python 包 click 从用户那里获取一些输入。然后我将用户输入传递给一个函数,该函数具有加载预训练模型的代码。我 return 传递给第二个函数的值列表,该函数使用模型和其他值生成文本。但是,值不会从第一个函数传递到第二个函数,因为当我尝试打印列表时,我什么也得不到。谁能指出我做错了什么,非常感谢!!

@click.argument('email_template', nargs=1)
def load_model(email_template):
    ## code block here
    list1 = [email_template, value1, value2]
    return list1


def generate_text(value2):
    # code block here
    return result

if __name__ == '__main__':
    list1 = load_model()
    list2 = generate_text(list1)
    print(list2)

您缺少 @click.command() 装饰器。使用 @click.argument() 是不够的,然后期望它能工作。 @click.command() 装饰函数成为脚本的 入口点 ,不应被视为 return 用户选项。

此外,如果 email_template 是您的脚本采用的唯一选项并且它只需要一个值,则使用 nargs=1.

没有意义

所以这样做:

import click

@click.command()
@click.argument('email_template')
def load_model(email_template):
    ## code block here
    # This is your *main script function*.

    list1 = [email_template, value1, value2]

    # don't return, continue the work you need doing from here
    list2 = text_generator(list1)
    print(list2)

def generate_text(result):
    # code block here
    return value2

if __name__ == '__main__':
    load_model()

load_model 退出时,您的脚本也会退出。

此外,考虑使用 click.echo() 而不是使用 print(),尤其是当您需要打印使用 [​​=32=] 个字符并需要在各种平台上工作的文本时,或者如果您想在输出中包含 ANSI 颜色。