我正在编写一个 Python 脚本,它需要打印一行到控制台。很简单,但我不记得(或决定)公认的做法是否是在函数中打印,例如:
def exclaim(a):
print (a + '!')
或者让它返回一个字符串,例如:
def exclaim(a):
return (a + '!')
,然后在主脚本中打印。我可以为任何一种方法提出论据。是否有一种普遍接受的方法可以做到这一点,还是取决于偏好?
编辑:澄清一下,这不是我正在使用的功能。我觉得在这里发布代码不舒服,所以我把这些函数写成一个过于简化的例子。
通常,函数应该生成并返回其输出,并让调用者决定如何处理它。
如果直接在函数中打印结果,则很难重用该函数来执行其他操作,并且很难进行测试,因为您必须拦截stdout而不仅仅是测试返回值。
然而,在这个微不足道的例子中,似乎几乎没有必要重用或测试函数,甚至根本不需要拥有函数。
我最欣赏Python的一点是它鼓励适当的关注点分离。将任务拆分为其原子组件几乎没有摩擦。
计算值和显示值是两回事,它们不应该混在一起。
要记住的一件事是,如果你打印它,你的函数将不返回任何内容,所以如果你打算使用你想写的行,你应该返回它。
如果您确定该函数无法重用,并且您形成该函数只是为了增强代码的可读性,则可以在函数中打印它。
否则,如果以后有任何方法可以以任何方式重用它,则应返回该值。首选第二种方法,因为函数的目的之一是重用。
没有真正的开销。
,函数应该返回值。
两种方式混合,但我认为它可以像这样归结为:
如果整个函数的唯一目的是输出到终端(向用户打印消息),那么函数应该打印。或者,您可以使用一些返回值作为错误状态或布尔值,但作为旁注。通常,打印的字符串/消息在程序流中没有其他用途,因为用户收到了消息,并且字符串变量已被使用,可以被垃圾回收。
如果函数实际执行某些操作,从而返回一个实际值(即使此值是字符串),并且您想在终端上检查该值,则调用该函数并将其结果打印到另一个语句中。在调试的情况下,您只需删除或注释该 print 语句,但该函数将继续以静默方式执行。只是为了比较,如果 print 语句在函数内部,则需要修改函数本身。
作为最后一个考虑因素,这两种方法在某种程度上是等效的,但对于任何阅读代码的人(甚至是一段时间后你自己),它的布局方式有助于从可读性的角度捕捉代码的意图。
希望这有帮助
如果一个函数计算值,然后立即打印它们,我经常发现我最终会想要在不同的位置或以不同的方式显示或使用值。
我将决定将结果写入文件,将它们作为网页的一部分发送出去,将它们用作其他函数的部分值,以不同的方式显示它们排序或过滤,等等。
在原型设计时让函数立即打印计算值是可以的,或者如果函数非常简单......但迟早,如果一个程序成长为更大、更有价值的东西,你需要将简单的"只需打印它!"函数转换为更纯粹的计算和返回函数。
因此,我尝试从返回结果,稍后打印它们的编码风格开始。它看起来更干净,通常可以节省我以后的时间。但就像所有风格一样,这是一个判断电话,YMMV。