翻转功能返回打印

时间:2019-08-25 09:36:58

标签: python printing return

可能我的手势不正确,但我不知道为什么会发生这种情况。

突破我试图编写的脚本,OS Windows 10,Visual Studio Code,Python 3.7

我写了一个带有函数的类,该类函数应该打印出控制台中的某些数据,并在.txt文件中将网页抓取的一些数据打印出来。

此功能:

def create_alimento(Componenti_principali):  
    for col1, col2 in zip(soup.select('#tblComponenti > tr.testonormale > td:nth-of-type(1)'), soup.select('#tblComponenti > tr.testonormale > td:nth-of-type(2)')):
        print('{: <70} {}'.format(col1.text, col2.text))

控制台的输出没有任何问题,它是自己的工作,对我来说似乎很清楚。 我不明白的是.txt输出,这是一个错误,恰恰是TypeError:write()参数必须是str,而不是None。

很明显,我要打印的Class(还包括上面的函数)是None类型,因此是主要对象。

现在,如果我翻转了,那就是:

print('{: <70} {}'.format(col1.text, col2.text))

与:

return('{: <70} {}'.format(col1.text, col2.text))

...功能对象类型为“字符串”,不再是NoneType。

我不会指出是否一切正常,显然,使用 return 代替 print 不会.txt输出。

有人知道这里会发生什么吗?以及在控制台和.txt文件中打印相同输出的任何建议?

预先感谢, MX

1 个答案:

答案 0 :(得分:2)

return从函数返回一个值,例如:

def f():
    return 7

seven = f()
# value of seven is now 7

打印不返回值,例如:

def f():
    print(7)  # at this point "7" is printed to the standard output

seven = f()
# value of seven is now None

如果您要同时打印一个值并返回一个值,则应执行此操作,例如:

def f():
    print(7)  # at this point "7" is printed to the standard output
    return 7

seven = f()
# value of seven is now 7

顺便说一句,只返回值将是一个更好的设计。您可以随时从外面打印它,即:

def f():
    return 7

seven = f()
# value of seven is now 7
print(seven)  # at this point "7" is printed to the standard output