假设我们在Python 3.x(我猜想在Python 2.6和Python 2.7中)也有以下函数:
>>> def dbl_a(p): return p*2
>>> def dbl_b(p): return(p*2)
>>> def dbl_c(p): return (p*2)
Run Code Online (Sandbox Code Playgroud)
如果我们运行它们,我们得到:
>>> dbl_a(42)
84
>>> dbl_b(42)
84
>>> dbl_c(42)
84
Run Code Online (Sandbox Code Playgroud)
这三个函数提供相同的结果(值和类型),它们似乎是等价的.
但是哪一个有更正确的return陈述呢?
这些定义中是否有任何副作用?
同样的问题适用于返回多个值的以下情况:
>>> def dbl_triple_a(p): return p*2, p*3
>>> def dbl_triple_b(p): return(p*2, p*3)
>>> def dbl_triple_c(p): return (p*2, p*3)
>>> dbl_triple_a(42)
(84, 126)
>>> dbl_triple_b(42)
(84, 126)
>>> dbl_triple_c(42)
(84, 126)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,每个函数都返回一个元组,但我的问题仍然保持不变.
Thi*_*ter 35
return value 是"正确的"方式 - return是一种语言结构,而不是一种功能.
如果要返回元组,请使用 return your, values, here
不需要任何括号(元组由,"运算符" 创建,而不是())
Y.H*_*ong 26
()Python中的括号通常有4种用法.
\.这主要是风格.
decision = (is_female and under_30 and single
or
is_male and above_35 and single)
括号是一种替代语法,以避免达到80列限制并且必须使用\for语句continuation.
在任何其他情况下,如内部if,while,for谓词和return我强烈建议不要使用的语句(),除非必要或援助的可读性(由4个点以上定义).获得这一点的一种方法是在数学中,(1)只是1意味着完全相同的事情.在Python中也是如此.
来自C语言系列的人将需要一点点习惯,因为()出于历史原因,这些语言中的控制流谓词需要这些.
对于return语句的最后一个单词,如果只返回1个值,则省略().但是如果你要返回多个值,那么可以使用,()因为现在你正在返回一个分组,并且()可以直观地强制执行.然而,最后一点是风格的,并且受到偏好.请记住,return关键字返回语句的结果.因此,如果您只,在多个赋值语句和元组结构中使用,则省略(),但如果您使用()值解包和元组结构,()请在返回多个值时使用return.保持一致.
通常,惯例是不在return语句中使用括号,因为它不是函数.在这种情况下,解析器只是完全忽略括号.
元组通常用括号表示以增加可读性,但是它们不是必需的.
然而,最终,它们的功能完全相同,并且归结为偏好.