如何在Python中進行換行(換行)?

2021-10-01 11:18:19 字數 3803 閱讀 3966

我有一長行**,我想在多行中分解。 我使用什麼,語法是什麼?

例如,新增一串字串,

e = 'a' + 'b' + 'c' + 'd'
並分成兩行,如下所示:

e = 'a' + 'b' +

'c' + 'd'

您可以在括號和花括號之間打斷線。 此外,您可以將反斜槓字元\\附加到一行以顯式斷開它:

x = (tuples_first_value,

second_value)

y = 1 + \

2

這可能不是python的方式,但是我通常使用帶有join函式的列表來編寫長字串,例如sql查詢:

query = " ".join([

'select * from "tablename"',

'where "somecolumn1"=value',

'order by "somecolumn2"',

'limit 5;'

])

在行的末尾新增\\或將該語句括在括號中( .. )。 從ibm :

b = ((i1 < 20) and

(i2 < 30) and

(i3 < 40))

要麼

b = (i1 < 20) and \

(i2 < 30) and \

(i3 < 40)

a = dostuff(blahblah1, blahblah2, blahblah3, blahblah4, blahblah5, 

blahblah6, blahblah7)

否則,您可以執行以下操作:

if a == true and \

b == false

檢視樣式指南以獲取更多資訊。

從示例行中:

a = '1' + '2' + '3' + \

'4' + '5'

要麼:

a = ('1' + '2' + '3' +

'4' + '5')

請注意,樣式指南指出,最好使用帶括號的隱式連續符,但是在這種特殊情況下,僅在表示式周圍加上括號可能是錯誤的方法。

從馬口中: 顯式線連線

可以使用反斜槓字元(\\)將兩條或更多條物理行連線為邏輯行,如下所示:當一條物理行以不包含在字串文字或注釋中的反斜槓結尾時,將其與以下行合併成乙個邏輯行,刪除反斜槓和以下行尾字元。 例如:

if 1900 < year < 2100 and 1 <= month <= 12 \\ and 1 <= day <= 31 and 0 <= hour < 24 \\ and 0 <= minute < 60 and 0 <= second < 60: # looks like a valid date return 1
從pep 8-python**樣式指南

包裝長行的首選方法是在括號,方括號和花括號內使用python的隱含行連續性。通過將表示式包裝在括號中,可以將長行分成多行。 應優先使用這些,而不是使用反斜槓進行行連續。

有時反斜槓可能仍然合適。 例如,長的多個with語句不能使用隱式連續,因此反斜槓是可以接受的:

with open('/path/to/some/file/you/want/to/read') as file_1, \\ open('/path/to/some/file/being/written', 'w') as file_2: file_2.write(file_1.read())
另一種此類情況是使用assert語句。

確保適當縮排續行。 圍繞二進位制運算子的首選位置是運算子之後,而不是在運算子之前。 一些例子:

class rectangle(blob): def __init__(self, width, height, color='black', emphasis=none, highlight=0): if (width == 0 and height == 0 and color == 'red' and emphasis == 'strong' or highlight > 100): raise valueerror("sorry, you lose") if width == 0 and height == 0 and (color == 'red' or emphasis is none): raise valueerror("i don't think so -- values are %s, %s" % (width, height)) blob.__init__(self, width, height, color, emphasis, highlight)
現在,pep8建議數學家及其發布者使用相反的約定 (用於在二進位制運算中中斷),以提高可讀性。

唐納德·克努斯(donald knuth)二元運算子垂直對齊之前先斷後合的風格,從而在確定要新增和減去的項時減少了工作量。

從pep8:換行符應該在二進位制運算子之前還是之後?

唐納德·克努斯(donald knuth)在他的《計算機和排版》系列中解釋了傳統規則:「儘管段落中的公式總是在二進位制運算和關係之後中斷,但是顯示的公式總是在二進位制運算之前中斷」 [3]。

遵循數學的傳統通常會導致**更具可讀性:

# yes: easy to match operators with operands income = (gross_wages + taxable_interest + (dividends - qualified_dividends) - ira_deduction - student_loan_interest)
在python**中,只要約定在本地是一致的,就可以在二進位制運算子之前或之後中斷。 對於新**,建議使用knuth的樣式。

[3]:donald knuth的the texbook,第195和196頁

摘自《 the hitchhiker's guide to python( line continuation )》:

當邏輯**行長於可接受的限制時,您需要將其劃分為多條物理行。 如果該行的最後乙個字元是反斜槓,則python直譯器將連線連續的行。 在某些情況下這很有用,但由於其易碎性通常應避免使用:在反斜槓後的行末新增空格將破壞**並可能產生意外結果。

更好的解決方案是在元素周圍使用括號。在行尾留有未封閉的括號,python直譯器將加入下一行,直到括號被封閉。 花括號和方括號的行為相同。

但是,通常情況下,必須分開一條較長的邏輯線表明您正在嘗試同時執行太多操作,這可能會影響可讀性。

話雖如此,這是乙個考慮多次匯入的示例(當超出行限制時,在pep-8上定義 ),通常也適用於字串: )

使用反斜槓結束行的危險在於,如果在反斜槓之後新增空格(當然很難看到),則反斜槓將不再執行您原本的想法。

有關更多資訊,請參見python習語和反習語(對於python 2或python 3 )。

如何在FPGA中進行分頻

在設計動態掃瞄8位7段數碼管 時,由於同時要驅動8位數碼管,為了能持續看見數碼管 上面的顯示內容,必須對數碼管進行掃瞄,即依次並迴圈地點亮各個數碼管。利用人眼的視覺暫停效應,在一定的掃瞄頻率下,人眼就會看見好幾個數碼管 一起點亮。每個數碼管 的功耗較大,如果所有的數碼管 一起點亮,其功耗較大。利用掃...

如何在Struts中進行檔案上傳

下面是個簡單的例子 1.jsp網頁 選擇檔案 上傳 2.form bean 在這裡主要要做兩件事,第乙個當然是import相關的package。import org.apache.struts.upload.然後宣告乙個相對應的字段,並為該字段生成getter和setter方法 private fo...

如何在MS Project中進行掙值分析

如何在ms project中進行掙值分析 關於掙值分析 掙值分析是衡量專案績效的一種方法。它指明相應於到目前為止完成的工作量多少預算應該已經用掉以及對於該任務,分配或資源的比較基準成本。用於掙值分析的三個關鍵值是 計畫成本 bcws 根據專案計畫中的安排基於分配給任務的資源成本和任何與任務相關聯的固...