返回语句是否应该有括号?

Cha*_*nor 35 python

假设我们在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

不需要任何括号(元组由,"运算符" 创建,而不是())

  • 但是如果`,'"运算符"创建元组为什么`>>>"我们是Dioscuri:%s和%s"%'Castor','Pollux'不起作用?虽然`>>>"我们是Dioscuri:%s和%s"%('Castor','Pollux')`按预期工作. (4认同)
  • 运算符优先级/绑定强度 (2认同)

Y.H*_*ong 26

()Python中的括号通常有4种用法.

  1. 它的行为与大多数其他主流语言的行为方式相同 - 它是一种强制评估优先级的结构,就像在数学公式中一样.这也意味着它只在必要时使用,比如需要确保在乘法和除法之前首先发生加法和减法.
  2. 它是一个将不可变值组合在一起的构造,其精神与数学中类似的集合符号相同.我们称之为Python中的元组.元组也是一种基本类型.它是一个构造来创建一个空元组和强制运算符优先级提升.
  3. 它用于在导入语句中将导入的名称组合在一起,因此您不必使用多行分隔符\.这主要是风格.
  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.保持一致.

  • Nitpicker 的角落:上面的 #2 是错误的。唯一用partheses 构造的元组是一个空元组。 (2认同)
  • 从语法上讲,您是正确的,但实际上它在元组构造中非常普遍,如果您已经一贯地这样做(并且您可能已经这样做了),您不妨将其视为元组文字语法的一部分。原因在于旧式字符串格式,例如 "%s, %s" % "foo", "bar" 和 "%s, %s" % ("foo", "bar") 实际上意味着不同的东西. 也可以只使用 () 使所有元组保持一致。但这当然是一种风格选择。 (2认同)

Jam*_*ies 7

通常,惯例是不在return语句中使用括号,因为它不是函数.在这种情况下,解析器只是完全忽略括号.

元组通常用括号表示以增加可读性,但是它们不是必需的.

然而,最终,它们的功能完全相同,并且归结为偏好.