来自python Wiki
多元元组
在Python中,多元元组看起来像:
1,2,3
…
但是,再次定义元组的是逗号而不是括号。
真的吗?!
那么为什么:
>>> tuple((((((1, 2, 3)))))) # creates a valid tuple
# (1, 2, 3)
>>> tuple(1, 2, 3, ) # But not here
# TypeError: tuple() takes at most 1 argument (3 given)
更严重的是,我不明白为什么不选择括号而不是逗号?
因为我认为在以下情况下会产生悖论:
>>> 1, # is a valid tuple
# (1,)
>>> tuple([1]) # Or this
# (1,)
>>> tuple(1) # But not this one
# TypeError: 'int' object is not iterable
但是,如果您认为圆括号 总是 负责实例化a tuple
,那么tuple
用多个项目实例化的所有问题 都消失了。
例如在我的想象世界中:
>>> (1, 2, 3) # stay valid
# (1, 2, 3)
>>> (1) # is newly valid
# (1)
>>> () # stay valid
# ()
>>> 1,
# TypeError: int() takes exactly 1 argument (2 given)
我知道这是一个众所周知的功能,如果已经重复了,我已经很抱歉。我发现了很多有关元组如何工作的类似主题,但是都没有详细解释为什么如此创建此功能。
我也知道,可以基于观点关闭该主题,但是我对 技术原因 (如果有)或至少是 历史原因 非常感兴趣。
谢谢
这是语法的产物。
用逗号分隔的术语是元组,列表和集合的构建块,具体取决于它们是否被方括号,花括号或根本不包裹。
指定语法时的主要挑战是平衡相同字符的多种竞争使用。逗号分隔列表,元组,字典和集合的各个部分。逗号还在函数调用中分隔参数。两种用法都允许使用尾部逗号(长度为一的元组是必需的)。同样,括号有多种用途,包括函数调用和算术表达式分组。该句点用作小数点,并用作getattribute运算符。
在使用来自Java背景的Swift时,为什么要选择结构而不是类呢?似乎它们是一样的,结构提供的功能较少。那为什么选择它呢?
问题内容: 我倾向于用括号为numpy数组(矩阵)建立索引,但是当我想对数组(矩阵)进行切片时,我注意到我必须使用逗号表示法。为什么是这样?例如, 问题答案: 这个: 表示“沿第一个轴获取所有索引,但沿第二个轴仅获取索引1”。 这个: 意思是“沿第一个轴获取所有索引(所以的全部),然后沿结果的 第一个 轴获取索引1 ”。您将应用于错误的轴。 并且仅是等效的,因为使用整数对数组进行索引会将所有其余轴
问题内容: Python文档中函数签名的格式有些混乱。将逗号放在开括号而不是之前有什么意义?嵌套括号的意义是什么? 情况如何: 我期望以下之一: 问题答案: 方括号表示内容是可选的,但方括号之外的所有内容均为必填项。 使用您的符号: 我希望必须写: 嵌套是必需的,因为如果您提供第三个参数,那么即使它是可选参数,也必须提供第二个参数。以下非嵌套替代方案将是模棱两可的:
本文向大家介绍为什么选择茉莉而不是开玩笑是什么原因?,包括了为什么选择茉莉而不是开玩笑是什么原因?的使用技巧和注意事项,需要的朋友参考一下 没有充分的理由选择茉莉而不是开玩笑。两者都是优秀的库,已经存在了一段时间,并且以一种自以为是的方式来处理非常相似的事情。笑话是建立在茉莉花之上的。 选择茉莉而不是开玩笑的原因之一是它更快。(https://github.com/facebook/jest/is
问题内容: 使用代替或的优点是什么? 问题答案: Thread和Runnable是Java 1.0的一部分;他们和当时一样出色。 从那时起,新的并发类将提炼出关于多线程的所有知识(感谢您,Doug Lea和其他人)。编写多线程代码非常困难。包括SwingWorker在内的新的并发类都试图使其变得更容易。 首先请注意用于强类型键入的泛型。有内置的机制可以发布和处理最终结果和中间结果。 可以使用Thr