我正在编写在csv文件中准备数据的函数。我想知道它应该返回什么。我认为以字符串形式提供给用户的信息是个好主意,但是我应该怎么做?
return print('Some info')
或者只是
return 'Some info'
关于异常,我的意思是如上所述。当异常结束功能的工作时,我应该返回print('Some info')还是仅返回'Some info'?
答案 0 :(得分:4)
否,return
应该从函数返回结果,而不是print
的值(无论如何总是返回None
)。
通常,函数根本不打印任何内容。为了使程序模块化和可重用,您希望在调用代码中保留所有用户交互。
例如,
def fibonacci(n):
fib = some calculation ...
print(fib)
return fib
fibonacci(33)
此功能具有打印计算值的副作用。但这意味着您不能在不打印的情况下计算值。函数式编程的一个常见设计原则是,函数无论如何都不应产生副作用。更好的设计是
def fibonacci(n):
fib = some calculation ...
return fib
print(fibonacci(33))
异常适用于代码无法执行请求的功能的情况。例如,您不能计算负的斐波那契数:
def fibonacci(n):
if n < 0:
raise ValueError('Cannot calculate negative Fibonacci number')
fib = some calculation ...
return fib
您可以在任意用户输入下调用它;
while True:
number = input('Give me a number: ')
try:
print('Fibonacci: ', fibonacci(int(number))
except ValueError as e:
print('Oops, try again; ', e)
请注意except
实际上如何处理多种错误情况:如果use输入根本不是数字,int(number)
也会引发ValueError
异常。
答案 1 :(得分:0)
听起来像是您第一次学习Python。我建议阅读文档以了解I / O和函数返回语句的工作方式:
https://docs.python.org/3/tutorial/inputoutput.html
https://www.w3schools.com/python/python_functions.asp
如果要在函数中返回字符串,请使用return 'Some Info'
。
要将某些内容打印到控制台以供用户查看,只需使用print('Some Info')
。对于您的目的,将两者结合起来似乎毫无用处。