当前位置: 首页 > 面试题库 >

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

曾骁
2023-03-14
问题内容

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

如果运行它们,我们将得到:

>>> 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种用法。

  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。保持一致。



 类似资料:
  • 问题内容: 函数内部的这两个语句之间有区别吗? 还有这个? 前者周围有括号。 问题答案: 从C 14开始,它们经常是。C 14增加了一种边缘情况,其中返回值周围的括号可能会改变语义。此代码段显示了要声明的两个函数。唯一的区别是在返回值两边加上括号。 在第一个中func1返回int,在第二个中func1返回int&。语义上的差异与周围的括号直接相关。 autoC 11中引入了最新形式的说明符。在C

  • 我有一个布尔语句,使用

  • 问题内容: 我只是在浏览一个论坛,有人问他们在网上找到的PHP文件。在代码中有几个这样的地方: 我一直认为,如果条件为真,则需要用括号括起来。还有其他选择吗,例如您是否不在同一行? 还有另一行是这样的: 我的本能是说这行不通,但是我也不知道它是否是过时的PHP文件并且它曾经可以工作? 问题答案: 您可以执行以下其他语句: 然后您还可以编写if-else的替代语法: 使用备用语法,您也可以退出解析模

  • 我正在将我的PHP代码从mysql更新到mysqli,但我似乎找不到这个问题的答案:mysqli更新查询是否返回结果? 使用mysql,我可以 即使该查询不返回任何行,也将为true。 现在,在mysqli代码中,我有如下内容(为了清晰起见,删除了错误处理): 结果是错误的。 对于记录来说,查询是有效的(忽略我可能在将其转录到stackoverflow中时犯的任何错别字),字段1在数据库中按预期正

  • 我的问题是:用“async”定义一个返回“promise”的函数(形式上)正确吗?是否容易出现“内存泄漏”? 对于那些喜欢用自然语言阅读我用js发布的内容的人。 我正在给一个知道JS是如何真正实现的人打电话,然后知道引擎是如何管理我提出的场景的:我们应该避免对返回“promise”的函数使用“async”吗? 我提出的问题不会改变任何人的生活,最终也不会影响表演。事实是,在编写代码时,我喜欢关注代

  • 问题内容: Java是否具有在hibernate状态下打开会话时可以使用的using语句? 在C#中,它类似于: 因此,对象超出范围并自动关闭。 问题答案: Java 7引入了自动资源块管理,该功能将该功能引入了Java平台。Java的早期版本没有任何相似之处。 例如,您可以使用以以下方式实现的任何变量: 由流实现的Java 接口自动扩展,因此您可以像在C#块中使用流一样使用块中的流。这等效于C#