簡體   English   中英

1,==(1,)-SyntaxError:語法無效

[英]1, == (1,) - SyntaxError: invalid syntax

>>> 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上給出相同的結果。

好的,2019年2月5日。我似乎陷入了一個黑洞。 一個IPython黑洞。 好像我對控制台使用的另一種子語言IPython感到困惑。 IPython中的%Autocall'使函數可以調用而不必鍵入括號'。 盡管將%Autocall設置為0似乎仍然可以啟用此行為。

這是無效的語法。 Python看到一個元組,其中有兩個值是根據表達式1== (1,) 后者是一個不完整的表達式,因此只針對該部分會出現錯誤。

請參閱運算符優先級元組顯示具有最高優先級,因此在從結果創建元組對象之前執行逗號之間的表達式。

所以是的,您可以只用逗號創建元組,但是每個組成部分都必須是一個完整的表達。 如果希望元組成為較大表達式的一部分,則不能不使用括號創建元組。

這是因為對於任何不使用括號但包含逗號的表達式,逗號將導致從逗號前后的子表達式創建元組(該部分在可選之后)。 使用括號可以更改Python視為完整表達式的內容。 因此,如果要比較兩個不同的元組,則必須使用括號來定義兩個元組,因此請使用(1,) == (1,) 放下任一括號后,您將創建一個包含較大表達式的單元組(例如(1,) == 1,(1,) == 1等式測試中創建一個單元素元組,結果為(False,) )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM