Python文檔中函數簽名的格式有點混亂。在逗號後面加逗號而非之前的意義是什麼?嵌套括號的意義是什麼?爲什麼Python函數文檔在可選參數的括號之後包含逗號?
他們是如何:
RegexObject.match(string[, pos[, endpos]])
我希望執行下列操作之一:
RegexObject.match(string, [pos], [endpos])
RegexObject.match(string[, pos][, endpos])
Python文檔中函數簽名的格式有點混亂。在逗號後面加逗號而非之前的意義是什麼?嵌套括號的意義是什麼?爲什麼Python函數文檔在可選參數的括號之後包含逗號?
他們是如何:
RegexObject.match(string[, pos[, endpos]])
我希望執行下列操作之一:
RegexObject.match(string, [pos], [endpos])
RegexObject.match(string[, pos][, endpos])
方括號表示內容是可選的,但方括號外的一切都是強制性的。
有了您的符號:
RegexObject.match(string, [pos], [endpos])
我希望有寫:
r.match("foo",,)
嵌套是必需的,因爲如果你提供的第三個參數則必須同時甚至提供第二個參數儘管它是一個可選參數。以下非嵌套替代方案可能不明確:
RegexObject.match(string[, pos][, endpos])
打開的括號指示可選參數。如果逗號在括號外,即使您不想使用pos
參數(例如),也必須鍵入該逗號。
因爲否則,即使您忽略參數,正確的語法也會包含逗號。方括號內的部分是可選的,所以通過將逗號移出方括號,它們不再是可選的。例如,只有一個字符串調用該函數如下:
RegexObject.match(string, [pos], [endpos])
我必須做的:
RegexObject.match("foobar",,)
但是,這是不是很優雅。
如果你想一下包圍參數列表中所有可選組件的括號,它就更有意義了。基本上,括號內的任何內容都可以由用戶自行決定。
括號表示您可以忽略它們之間的部分。因此,如果文檔將按照您的建議書寫,這意味着您可以通過將所有內容都放在括號中來編寫RegexObject.match(string ,,)。或者通過忽略第二個,RegexObject.match(string,endpos)。但你不能。如果你遺漏了endpos,你還必須在它之前省略逗號。如果你離開pos,你必須在它和endpos之前留下逗號。所以它的寫法是明確的。