假设我们在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种用法。
\
。这主要是风格。decision = (is_female and under_30 and single
or
is_male and above_35 and single)
圆括号是一种替代语法,可以避免达到80列的限制,而不必\
用于语句继续。
在任何其他情况下,如内部if
,while
,for
谓词和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#