return语句应该有括号吗?

2024-06-30 16:23:07 发布

您现在位置:Python中文网/ 问答频道 /正文

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

在这种情况下,每个函数都返回一个元组,但我的问题仍然是相同的。


Tags: 函数类型return定义def情况语句python3
3条回答

一般来说,惯例是不在返回语句中使用方括号,因为它不是函数。在这种情况下,解析器将完全忽略括号。

元组通常用括号来表示,以提高可读性,但它们不是必需的。

但最终,它们的功能都是相同的,这取决于偏好。

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

  1. 它的作用与大多数其他主流语言相同——它是一个强制计算优先级的构造,就像在数学公式中一样。这也意味着它只在必要时使用,比如你需要确保在乘法和除法之前先进行加法和减法。
  2. 它是一个构造,以与数学中类似的集合表示法相同的精神将不可变值组合在一起。在Python中我们称之为元组。元组也是一种基本类型。它是一种构造空元组并强制运算符优先级提升的结构。
  3. 它用于在import语句中将导入的名称组合在一起,这样就不必使用多行分隔符\。这主要是文体上的。
  4. 长时间的陈述

    decision = (is_female and under_30 and single
                or
                is_male and above_35 and single)

圆括号是一种替代语法,可以避免达到80列的限制,并且必须使用\来继续语句。

在任何其他情况下,比如在ifwhilefor谓词和return语句中,我强烈建议不要使用(),除非有必要或有助于可读性(由上面4点定义)。理解这一点的一种方法是,在数学中,(1)1的意思完全相同。在Python中也是如此。

来自C语言家族的人会稍微习惯一下,因为出于历史原因,这些语言中的控制流谓词需要()

对于return语句,如果只返回1个值,请省略()。但是如果返回多个值,那么可以使用(),因为现在返回的是一个分组,并且()可以直观地执行该分组。然而,最后一点是文体和受偏爱。记住,return关键字返回语句的结果。因此,如果只在多个赋值语句和元组构造中使用,,则省略(),但如果使用()进行值解包和元组构造,则在返回return中的多个值时使用()。保持一致。

return value是“正确”的方式-返回是语言构造,而不是函数。

如果要返回元组,请使用return your, values, here

不需要任何括号(元组是由,“操作符创建的,而不是()

相关问题 更多 >