可能我的手势不正确,但我不知道为什么会发生这种情况。
突破我试图编写的脚本,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
答案 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