2016-07-02 58 views
4

我有這行代碼:PEP8打破長字符串中斷言

assert 0 <= j <= self.n, "First edge needs to be between 0 and {}".format(self.n) 

我想PEP8快樂,但我不明白如何突破這條線。我試着打破逗號後語法無效。我試圖用How to break long string lines for PEP8 compliance?中的附加「」來打破字符串。 PEP8很高興,但主張只產生了信息的前半部分。

什麼是打破長斷言字符串的正確方法?

+7

歇PEP8代替。 – MatsLindh

+0

你可以在逗號後添加一個反斜槓,並將其餘的放在新行上。 – fenceop

+1

就個人而言,我會選擇一個*稍微*更可讀的版本:將失敗消息分配給一個變量,並在assert中使用該變量。 – SuperSaiyan

回答

3

使用括號:

assert 0 <= j <= self.n, ("First edge needs to be " 
          "between 0 and {}".format(self.n)) 

或者:

assert 0 <= j <= self.n, ("First edge needs to be between 0 and {}" 
          .format(self.n)) 

或者使用format功能的括號:

assert 0 <= j <= self.n, "First edge needs to be between 0 and {}".format(
    self.n) 
1

您可以強制突破到這樣一個新行:

assert 0 <= j <= self.n,\ 
     "print stuff" 

,每每讓行繼續,如果支架和這樣不會自動做這件事。如上所述,您可以將下一行縮進到最具可讀性的位置。

3

考慮assert語句可以在運行解釋剝離與-O選項,你可能會wa NT才能保持一個單獨的語句,並使用某種形式的字符串連接:

assert 0 <= j <= self.n, ("First edge needs to be between " 
          "0 and {}".format(self.n)) 

這就是說,把它分成兩個語句也將是PEP8兼容(和更易讀):

message = "First edge needs to be between 0 and {}".format(self.n) 
assert 0 <= j <= self.n, message