3 回答

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊
使用逗號(hào)標(biāo)記將表達(dá)式的組合以創(chuàng)建元組稱為expression_list。運(yùn)算符優(yōu)先級(jí)規(guī)則不涵蓋表達(dá)式列表;這是因?yàn)楸磉_(dá)式列表本身不是表達(dá)式;當(dāng)用括號(hào)括起來時(shí),它們成為表達(dá)式。
所以,一個(gè)未封閉expression_list在Python允許任何地方,它是具體由語言的語法允許的,但不是在那里的expression,需要這樣。
例如,if語句的語法如下:
if_stmt ::= "if" expression ":" suite
( "elif" expression ":" suite )*
["else" ":" suite]
因?yàn)閑xpression引用了生產(chǎn),expression_list所以不允許將未封閉的s作為if語句的主題。但是,for語句接受expression_list:
for_stmt ::= "for" target_list "in" expression_list ":" suite
["else" ":" suite]
因此,允許以下內(nèi)容:
for x in 1, 2, 3:
print(x)

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊
在允許使用該expression_list術(shù)語的任何地方,都無需使用括號(hào)。
該if語句需要一個(gè)expression,不支持expression_list。
允許的語法示例expression_list:
該return聲明
yield 表達(dá)
作業(yè) (包括擴(kuò)充作業(yè))
該for聲明。
掌握Expressions,Simple和Compound語句文檔expression_list將告訴您expression_listPython語法中使用的所有位置。

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
當(dāng)您想避免歧義時(shí),也需要加上括號(hào)。
以下是兩個(gè)不同的表達(dá)式...僅僅因?yàn)槟承〇|西是“表達(dá)式列表”,不會(huì)導(dǎo)致您可能期望的表達(dá)式列表:)
(1, 2, 3) + (4, 5) # results in (1, 2, 3, 4, 5) because + does sequence.extend on the tuples
1, 2, 3 + 4, 5 # this results in (1, 2, 7, 5) because + adds the elements, since there were no parentheses to protect the separate tuples
添加回答
舉報(bào)