- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 Python 中,一个变量或文字后跟一个逗号是一个单元组
:
1, # (1,)
...以及一系列以逗号分隔的变量/文字(无论它们后面是否带有逗号)也是一个元组
:
1,2, # (1,2)
1,2 # (1,2)
但是,在可调用函数/函数中,这种语法的处理方式有所不同,因为逗号用于分隔参数:
bool(5>6,) # False - 5>6 == False
bool((5>6,)) # True - (5>6,) is a non-empty tuple (always True - contents ignored)
第一行似乎完全忽略了悬挂的逗号。第二行创建一个 one-tuple
(如预期的那样)。这也适用于用户定义的函数(不知道为什么不会):
def f(arg):
pass
f(1,) # No Error
还请考虑 assert
的以下行为(这是一个语句,而不是一个函数):
assert 5>6 # AssertionError, as expected
assert(5>6) # AssertionError, as expected
assert 5>6, # SyntaxError: invalid syntax
assert(5>6,) # SyntaxWarning: assertion always true, perhaps remove parentheses?
assert 5>6, 'NOPE!' # AssertionError: NOPE!, as expected
因此我对悬挂逗号的处理解释如下:
tuple
对象的一部分我的问题:我对上述行为的解释是否正确? Python 解释器是否会简单地忽略参数列表中的悬挂逗号?这种行为是否因 Python 实现而异?最后:为什么在语句末尾(语法错误)和参数列表末尾(无语法错误)悬挂逗号的处理不一致?
编辑:阅读答案并仔细思考后,我的解释应修改如下:
元组
然而,这仍然留下了一个问题,为什么在为语句提供参数时不忽略悬挂逗号,而在为函数提供参数时忽略它们。
最佳答案
在任何以逗号分隔的列表(函数调用、列表/字典文字等)中,尾随逗号始终被忽略。您的assert
示例不是以逗号分隔的列表。
单元组需要尾随逗号的唯一原因是因为无法区分单元组和括号表达式。
关于python - 逗号语法 : rationale behind a hanging comma in a statement being a SyntaxError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30221984/
我对编程比较陌生,刚刚制作了一个相机应用程序,其预览窗口保存在表面 View 中,需要访问位置,显然还有相机。 但是,在显示一个权限的 requestPermissionRationale 并且用户同
我正在寻找更多指向邮件列表讨论等的链接,而不是猜测。 谁能帮我找出 CSS Selectors Level 3 中引用的错误处理规则背后的基本原理规范 User agents must observe
我只是想知道是否有人知道标准 Java 编码约定中此特定项目背后的基本原理。 Java coding conventions说在类型转换后面放一个空格,像这样: Object myObj = (Obj
我们有一个数据库表,我称之为 TIMES。它传统上看起来像这样: ID Blah1 Blah2 Blah3 Description 1 a b c Day 2
尽管我非常喜欢C和C++,但对于选择以空值结尾的字符串,我还是忍不住摸不着头脑:。其中有几件事比C更晚曝光,所以C不知道它们是有道理的。然而,有几个在C出现之前就已经很普通了。为什么选择以空值结尾的字
IDesign 编码标准声明“不提供公共(public)事件成员变量。改用事件访问器。” 我很欣赏事件访问器在某些情况下很有用(我认为 Control 使用字典来仅存储分配的事件以节省内存)。但强制此
来自 k&R C First, if either operand is long double, the other is converted to long double. Otherwise,
在 Python 中,一个变量或文字后跟一个逗号是一个单元组: 1, # (1,) ...以及一系列以逗号分隔的变量/文字(无论它们后面是否带有逗号)也是一个元组: 1,2, # (1,2) 1,2
CSS 2.1 specification, section 8.3.1关于崩溃的边距状态: Margins of elements that establish new block formatti
我是一名优秀的程序员,十分优秀!