假设我们在Python3.x中(我猜在Python2.6和Python2.7中也有)有以下函数:
>>> def dbl_a(p): return p*2
>>> def dbl_b(p): return(p*2)
>>> def dbl_c(p): return (p*2)
如果我们运行它们,我们会得到:
>>> dbl_a(42)
84
>>> dbl_b(42)
84
>>> dbl_c(42)
84
这三个函数提供相同的结果(值和类型),它们似乎是等价的。
但哪一个有更正确的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)
在这种情况下,每个函数都返回一个元组,但我的问题仍然是相同的。
一般来说,惯例是不在返回语句中使用方括号,因为它不是函数。在这种情况下,解析器将完全忽略括号。
元组通常用括号来表示,以提高可读性,但它们不是必需的。
但最终,它们的功能都是相同的,这取决于偏好。
Python中括号
()
通常有4种用法。它是一个构造,以与数学中类似的集合表示法相同的精神将不可变值组合在一起。在Python中我们称之为元组。元组也是一种基本类型。它是一种构造空元组并强制运算符优先级提升的结构。\
。这主要是文体上的。圆括号是一种替代语法,可以避免达到80列的限制,并且必须使用
\
来继续语句。在任何其他情况下,比如在
if
、while
、for
谓词和return
语句中,我强烈建议不要使用()
,除非有必要或有助于可读性(由上面4点定义)。理解这一点的一种方法是,在数学中,(1)
和1
的意思完全相同。在Python中也是如此。来自C语言家族的人会稍微习惯一下,因为出于历史原因,这些语言中的控制流谓词需要
()
。对于
return
语句,如果只返回1个值,请省略()
。但是如果返回多个值,那么可以使用()
,因为现在返回的是一个分组,并且()
可以直观地执行该分组。然而,最后一点是文体和受偏爱。记住,return
关键字返回语句的结果。因此,如果只在多个赋值语句和元组构造中使用,
,则省略()
,但如果使用()
进行值解包和元组构造,则在返回return
中的多个值时使用()
。保持一致。return value
是“正确”的方式-返回是语言构造,而不是函数。如果要返回元组,请使用
return your, values, here
不需要任何括号(元组是由
,
“操作符创建的,而不是()
)相关问题 更多 >
编程相关推荐