1,==(1) - 语法错误:无效的语法

问题描述 投票:0回答:1
>>> 1, == (1,)
  File "<ipython-input-34-bddb0dd08d2c>", line 1
    1, == (1,)
        ^
SyntaxError: invalid syntax

为什么我得到一个SyntaxError?在控制台指向比较操作“==”就行了。我试图比较2元组。是的,(1,) == (1,)工作。

这是与此相关的...?

    1,

Out[1]: (1,)
,1
Traceback (most recent call last):
File "<ipython-input-2-d73977cd7b2e>", line 1, in <module>
1("")
TypeError: 'int' object is not callable
def h():
print("hello from h")
h
Out[4]: <function __main__.h>
h()
hello from h
,h
Traceback (most recent call last):
File "<ipython-input-6-89db5d24b531>", line 1, in <module>
h("")
TypeError: h() takes 0 positional arguments but 1 was given
def h(""):
print("hello from h")
File "<ipython-input-7-e4606aaf3740>", line 1
def h(""):
^
SyntaxError: invalid syntax
def h(a):
print("hello from h")
,h
hello from h

我好笑找到它 - 的Python 3.6.3,不上2.7或3.5发生...

,ord A
Out[112]: 65

这是有点难看。刚刚尝试新的IDE - Pycharm与Python 3.6.3。控制台使我对语法错误“ ORD A”,但Spyder的3.3.1没有。这是与IPython的? 7.2给出了 “ORD A” >> 65相同的结果。

好吧,2月5日2019年我似乎已经陷入了一个黑洞。一个IPython的黑洞。好像我是越来越被另一个子语言IPython的是控制台使用什么混淆。 %自动呼叫在IPython的“使可调用函数,而不必键入括号”。虽然%自动呼叫设置为0,似乎仍然启用此行为。

python syntax tuples
1个回答
6
投票

这是无效的语法。 Python看到从表达式1== (1,)创建2个值的元组。后者是一个不完整的表达,所以你得到一个错误只是一部分。

看到Operator precedence table,元组显示器具有最高的优先级,所以逗号之间的表达式从结果创建的元组对象之前被执行。

所以,是的,你可以创建只有逗号元组,但随后各组成部分必须是一个完整的表达。如果没有你想要的元组是一个更大的表达式的一部分使用括号不能创建一个元组。

这是因为对于不使用括号但不包含逗号的表达式,逗号将导致从之前的逗号(带是可选的到来后的部分)之后躺在子表达式创建一个元组。用括号来改变什么Python看到作为一个完整的表达。所以,如果你想比较两个不同的元组,则必须使用括号deliniate两元组,所以使用(1,) == (1,)。只要你下降任一组括号的要创建包含较大的表达式一个元组(例如(1,) == 1,创建从(1,) == 1相等测试的单元组元素,导致(False,))。

© www.soinside.com 2019 - 2024. All rights reserved.