函数应该在Python中返回print吗?

时间:2019-02-09 17:12:54

标签: python python-3.x

我正在编写在csv文件中准备数据的函数。我想知道它应该返回什么。我认为以字符串形式提供给用户的信息是个好主意,但是我应该怎么做?

return print('Some info')

或者只是

return 'Some info'

关于异常,我的意思是如上所述。当异常结束功能的工作时,我应该返回print('Some info')还是仅返回'Some info'?

2 个答案:

答案 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')。对于您的目的,将两者结合起来似乎毫无用处。