跨函数传递值不会产生任何输出
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 颜色。
我有下面的代码,我使用 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 颜色。