python 定义函数为什么有个长线_关于格式化:如何在Python中打破这条长线?
如何設(shè)置這樣的長(zhǎng)行格式?我想讓它的寬度不超過(guò)80個(gè)字符:
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))
似乎是個(gè)不錯(cuò)的選擇。你不喜歡什么?
有點(diǎn)主觀,不是嗎?:)
相關(guān):stackoverflow.com/questions/1940710/…(python中的字符串串聯(lián))
您可以通過(guò)刪除"it's"中不正確的"it's"來(lái)保存字符。
我修正了我的語(yǔ)法錯(cuò)誤。TY
indexes:index的正確復(fù)數(shù)形式為indices。
這是一個(gè)開(kāi)始。在使用它們的代碼之外定義更長(zhǎng)的字符串并不是一個(gè)壞習(xí)慣。這是一種分離數(shù)據(jù)和行為的方法。第一種選擇是通過(guò)使字符串文本彼此相鄰來(lái)將它們隱式地連接在一起:
("This is the first line of my text,"
"which will be joined to a second.")
或者在行尾延續(xù)的情況下,這種延續(xù)有點(diǎn)脆弱,因?yàn)檫@是可行的:
"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."
看到區(qū)別了嗎?不?當(dāng)這是你的代碼時(shí),你也不會(huì)。
隱式連接的缺點(diǎn)是它只與字符串文本一起使用,而不與取自變量,這樣重構(gòu)時(shí)事情會(huì)變得更加復(fù)雜。此外,只能對(duì)組合字符串整體插入格式。
或者,可以使用串聯(lián)運(yùn)算符(+顯式聯(lián)接:
("This is the first line of my text," +
"which will be joined to a second.")
正如python的禪所說(shuō),顯式優(yōu)于隱式,但是這會(huì)創(chuàng)建三個(gè)字符串而不是一個(gè)字符串,并且使用的內(nèi)存是寫(xiě)的兩個(gè)字符串的兩倍:加上一個(gè)字符串,這兩個(gè)字符串連接在一起,所以您必須知道何時(shí)忽略禪。好處是您可以將格式應(yīng)用于每一行單獨(dú)的子字符串,或從括號(hào)外到整批的子字符串。
最后,您可以使用三重引號(hào)字符串:
"""This is the first line of my text
which will be joined to a second."""
這通常是我的最愛(ài),盡管它的行為與換行稍有不同,并且在隨后的行中任何前導(dǎo)空格都將顯示在最后的字符串中??梢杂棉D(zhuǎn)義反斜杠消除換行符。
"""This is the first line of my text \
which will be joined to a second."""
這與上面的相同技術(shù)有相同的問(wèn)題,因?yàn)檎_的代碼與不正確的代碼之間只有不可見(jiàn)的空白。
哪一個(gè)是"最好的"取決于你的特殊情況,但答案不僅僅是審美上的,而是一種微妙的不同行為。
cpython編譯器盡可能優(yōu)化文本操作,這意味著添加兩個(gè)字符串文本只會(huì)在字節(jié)碼中產(chǎn)生一個(gè)字符串文本。
雖然我收到的所有答案都很有幫助,但你的答案肯定能幫助我理解所有打破僵局的方法。結(jié)束的""行的問(wèn)題是后面有空格嗎?
我看不出這里的區(qū)別,但那主要是因?yàn)閟o的語(yǔ)法著色相當(dāng)原始。(一些非常好的代碼實(shí)際上是不可讀的,但僅僅是因?yàn)樗辉谡Z(yǔ)法非常接近C的語(yǔ)言中。)讓您的編輯器令人討厭地突出顯示尾隨空格并不罕見(jiàn),因?yàn)樗鼈兒苌儆杏?或有意)。-)
@蓋茨特——是的。你抓住了。當(dāng)您選擇文本時(shí),它會(huì)顯示出來(lái)。是的,好的文本編輯器/IDES可以幫助解決這個(gè)問(wèn)題。
我有一次掉進(jìn)了那個(gè)&40;白色空間)的流浪漢??膳碌慕?jīng)歷。
如果文本本身包含引號(hào),則不起作用。例如。
@khurshidalam您可以使用單引號(hào)'來(lái)包含該字符串,或者轉(zhuǎn)義字符串中的雙引號(hào),或者使用三雙引號(hào)"""。包含引號(hào)的帶引號(hào)字符串的問(wèn)題與使用單行或多行定義文本字符串的問(wèn)題相同。
連續(xù)的字符串文本由編譯器聯(lián)接,帶括號(hào)的表達(dá)式被認(rèn)為是一行代碼:
logger.info("Skipping {0} because it's thumbnail was"
"already in our system as {1}.".format(line[indexes['url']],
video.title))
就我個(gè)人而言,我不喜歡掛開(kāi)放塊,所以我將其格式化為:
logger.info(
'Skipping {0} because its thumbnail was already in our system as {1}.'
.format(line[indexes['url']], video.title)
)
一般來(lái)說(shuō),我不會(huì)費(fèi)太大的力氣使代碼完全適合80列的行。這是值得保持線長(zhǎng)度合理的水平,但硬80限制是過(guò)去的事情。
這不是過(guò)去的事。python標(biāo)準(zhǔn)庫(kù)仍然使用pep8作為它的風(fēng)格指南,所以這個(gè)規(guī)則仍然存在,并且很多人(包括我自己)都遵循它。這是一個(gè)方便畫(huà)線的地方。
我想知道有多少項(xiàng)目仍然遵循80個(gè)字符的規(guī)則。對(duì)于我使用的平均窗口大小,我認(rèn)為100-120比80個(gè)字符更有效率。
是的,不過(guò)我也用了這個(gè)長(zhǎng)度的線[恐怖!褻瀆神靈!]我使用比例字體,所以精確的行長(zhǎng)并不是那么重要。它更多的是一個(gè)例子,一行中有多少邏輯是可讀的,而不是有多少字符,例如…如果我有一長(zhǎng)串沒(méi)人需要讀的數(shù)據(jù),我很樂(lè)意讓它溢出120。
比例字體的代碼-我和你在一起,兄弟。從我曾經(jīng)和他們共事過(guò)的所有人對(duì)他們的厭惡來(lái)看,世界還沒(méi)有準(zhǔn)備好。
@波賓斯:你為什么用比例字體?優(yōu)勢(shì)是什么?
@格雷格:這和為什么在其他類型的文本中使用比例字體一樣:可讀性。當(dāng)然,您需要選擇一種具有良好特征的字體,比如1/L/O/0區(qū)分,但單空間字體也是如此。
大約80個(gè)字符還可以更容易地在同一屏幕上并排區(qū)分2個(gè)文件。另外,如果您在服務(wù)器控制臺(tái)上的緊急情況下調(diào)試某些東西,您會(huì)非常感激80個(gè)字符的限制!:)
如果我要解決合并沖突,那80個(gè)字符很快就會(huì)變成240個(gè)字符的行(+滾動(dòng)條,+行號(hào),+差異標(biāo)記)。即使我有足夠的屏幕空間將其擴(kuò)展到300個(gè)字符或更多,它也會(huì)使窗口變得非常巨大。
fwiw在我的瀏覽器中,你的段落的第一行是"一般來(lái)說(shuō),我不會(huì)費(fèi)太大的力氣讓代碼完全適合80列的行。它是"。"一共103個(gè)字符。
可以使用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.
總結(jié)
以上是生活随笔為你收集整理的python 定义函数为什么有个长线_关于格式化:如何在Python中打破这条长线?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 远投竿用什么牌子可以投100米远?
- 下一篇: python各种包安装顺序_史上最全的P