打印功能返回两个值

时间:2017-11-08 09:23:32

标签: python

我创建了一个函数来打印出一个标记化文本的统计信息:

def print_statistics(text):
    print("\nThe total number of tokens is " +str(number_of_tokens(ny))+".")
    return ???

这个函数给了我两个输出(第二个是"无")。但是我想让函数给我打印输出。知道我怎么能这样做吗?

4 个答案:

答案 0 :(得分:2)

该函数可以返回要打印的字符串:

def get_statistics_string(text):
    return "\nThe total number of tokens is " + str(number_of_tokens(ny)) + "."

或打印统计信息:

def print_statistics(text):
    print("\nThe total number of tokens is " + str(number_of_tokens(ny)) + ".")
    # note that it will still return None)

通常一个好主意是决定一个函数要么做某事,要么返回一些东西,而不是两者。

答案 1 :(得分:1)

如果您希望函数为print所需的输出,请执行以下操作:

def print_statistics(text):
    print("\nThe total number of tokens is " +str(number_of_tokens(ny))+".")
    return

否则,如果您希望函数为return所需的输出,请执行以下操作:

def print_statistics(text):
    return "\nThe total number of tokens is " +str(number_of_tokens(ny))+"."

答案 2 :(得分:1)

  

这个函数给了我两个输出(第二个是"无")。

您正在Python shell(内置的,IPython或其他)中执行该功能。 Python shell始终显示您评估的最后一个表达式的结果。由于你的函数没有明确地返回任何东西,它(隐含地)返回None,这是你的第二个输出" - 第一个"输出"是打印到sys.stdout的功能。如果从脚本执行此功能,则只能看到该功能打印的内容。

你是什么意思"我希望这个功能能给我打印输出"目前还不清楚。如果您希望将功能打印到sys.stdout,那么它就完成了,您无需更改。如果您希望它将格式化字符串(当前打印的字符串)作为Python变量返回,则将print('yourstringhere')替换为return 'yourstringhere'

作为旁注:学会使用正确的字符串格式,它更容易阅读和维护:

nb_tokens = number_of_tokens(ny)
msg = "\nThe total number of tokens is {}.".format(nb_tokens) 
# then either `print(msg)` or `return msg`

答案 3 :(得分:0)

你可以让函数返回输出,如:

def print_statistics(text):
    return "\nThe total number of tokens is " +str(number_of_tokens(ny))+"."