python 定义函数为什么有个长线_关于格式化:如何在Python中打破这条长线?
如何設置這樣的長行格式?我想讓它的寬度不超過80個字符:
logger.info("Skipping {0} because its thumbnail was already in our system as {1}.".format(line[indexes['url']], video.title))
這是我最好的選擇嗎?
url ="Skipping {0} because its thumbnail was already in our system as {1}."
logger.info(url.format(line[indexes['url']], video.title))
似乎是個不錯的選擇。你不喜歡什么?
有點主觀,不是嗎?:)
相關:stackoverflow.com/questions/1940710/…(python中的字符串串聯)
您可以通過刪除"it's"中不正確的"it's"來保存字符。
我修正了我的語法錯誤。TY
indexes:index的正確復數形式為indices。
這是一個開始。在使用它們的代碼之外定義更長的字符串并不是一個壞習慣。這是一種分離數據和行為的方法。第一種選擇是通過使字符串文本彼此相鄰來將它們隱式地連接在一起:
("This is the first line of my text,"
"which will be joined to a second.")
或者在行尾延續的情況下,這種延續有點脆弱,因為這是可行的:
"This is the first line of my text," \
"which will be joined to a second."
但這并不是:
"This is the first line of my text," \
"which will be joined to a second."
看到區別了嗎?不?當這是你的代碼時,你也不會。
隱式連接的缺點是它只與字符串文本一起使用,而不與取自變量,這樣重構時事情會變得更加復雜。此外,只能對組合字符串整體插入格式。
或者,可以使用串聯運算符(+顯式聯接:
("This is the first line of my text," +
"which will be joined to a second.")
正如python的禪所說,顯式優于隱式,但是這會創建三個字符串而不是一個字符串,并且使用的內存是寫的兩個字符串的兩倍:加上一個字符串,這兩個字符串連接在一起,所以您必須知道何時忽略禪。好處是您可以將格式應用于每一行單獨的子字符串,或從括號外到整批的子字符串。
最后,您可以使用三重引號字符串:
"""This is the first line of my text
which will be joined to a second."""
這通常是我的最愛,盡管它的行為與換行稍有不同,并且在隨后的行中任何前導空格都將顯示在最后的字符串中。可以用轉義反斜杠消除換行符。
"""This is the first line of my text \
which will be joined to a second."""
這與上面的相同技術有相同的問題,因為正確的代碼與不正確的代碼之間只有不可見的空白。
哪一個是"最好的"取決于你的特殊情況,但答案不僅僅是審美上的,而是一種微妙的不同行為。
cpython編譯器盡可能優化文本操作,這意味著添加兩個字符串文本只會在字節碼中產生一個字符串文本。
雖然我收到的所有答案都很有幫助,但你的答案肯定能幫助我理解所有打破僵局的方法。結束的""行的問題是后面有空格嗎?
我看不出這里的區別,但那主要是因為so的語法著色相當原始。(一些非常好的代碼實際上是不可讀的,但僅僅是因為它不在語法非常接近C的語言中。)讓您的編輯器令人討厭地突出顯示尾隨空格并不罕見,因為它們很少有用(或有意)。-)
@蓋茨特——是的。你抓住了。當您選擇文本時,它會顯示出來。是的,好的文本編輯器/IDES可以幫助解決這個問題。
我有一次掉進了那個&40;白色空間)的流浪漢。可怕的經歷。
如果文本本身包含引號,則不起作用。例如。
@khurshidalam您可以使用單引號'來包含該字符串,或者轉義字符串中的雙引號,或者使用三雙引號"""。包含引號的帶引號字符串的問題與使用單行或多行定義文本字符串的問題相同。
連續的字符串文本由編譯器聯接,帶括號的表達式被認為是一行代碼:
logger.info("Skipping {0} because it's thumbnail was"
"already in our system as {1}.".format(line[indexes['url']],
video.title))
就我個人而言,我不喜歡掛開放塊,所以我將其格式化為:
logger.info(
'Skipping {0} because its thumbnail was already in our system as {1}.'
.format(line[indexes['url']], video.title)
)
一般來說,我不會費太大的力氣使代碼完全適合80列的行。這是值得保持線長度合理的水平,但硬80限制是過去的事情。
這不是過去的事。python標準庫仍然使用pep8作為它的風格指南,所以這個規則仍然存在,并且很多人(包括我自己)都遵循它。這是一個方便畫線的地方。
我想知道有多少項目仍然遵循80個字符的規則。對于我使用的平均窗口大小,我認為100-120比80個字符更有效率。
是的,不過我也用了這個長度的線[恐怖!褻瀆神靈!]我使用比例字體,所以精確的行長并不是那么重要。它更多的是一個例子,一行中有多少邏輯是可讀的,而不是有多少字符,例如…如果我有一長串沒人需要讀的數據,我很樂意讓它溢出120。
比例字體的代碼-我和你在一起,兄弟。從我曾經和他們共事過的所有人對他們的厭惡來看,世界還沒有準備好。
@波賓斯:你為什么用比例字體?優勢是什么?
@格雷格:這和為什么在其他類型的文本中使用比例字體一樣:可讀性。當然,您需要選擇一種具有良好特征的字體,比如1/L/O/0區分,但單空間字體也是如此。
大約80個字符還可以更容易地在同一屏幕上并排區分2個文件。另外,如果您在服務器控制臺上的緊急情況下調試某些東西,您會非常感激80個字符的限制!:)
如果我要解決合并沖突,那80個字符很快就會變成240個字符的行(+滾動條,+行號,+差異標記)。即使我有足夠的屏幕空間將其擴展到300個字符或更多,它也會使窗口變得非常巨大。
fwiw在我的瀏覽器中,你的段落的第一行是"一般來說,我不會費太大的力氣讓代碼完全適合80列的行。它是"。"一共103個字符。
可以使用textwarp模塊將其拆分為多行
import textwrap
str="ABCDEFGHIJKLIMNO"
print("
".join(textwrap.wrap(str,8)))
ABCDEFGH
IJKLIMNO
從文檔中:
textwrap.wrap(text[, width[, ...]])
Wraps the single paragraph in text (a string) so every line is at most width characters long. Returns a list of output lines, without final newlines.
Optional keyword arguments correspond to the instance attributes of TextWrapper, documented below. width defaults to 70.
See the TextWrapper.wrap() method for additional details on how wrap() behaves.
總結
以上是生活随笔為你收集整理的python 定义函数为什么有个长线_关于格式化:如何在Python中打破这条长线?的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 远投竿用什么牌子可以投100米远?
- 下一篇: 哈尔滨治子宫内膜异位症最好的医院推荐
