[英]How can I print curly braces with this style formatted text in python
[英]Is it true that I can't use curly braces in Python?
我讀到Python通過縮進而不是花括號來完成它所有的“代碼塊”。 是對的嗎? 所以函數,如果這樣的東西都沒有用花括號包圍它們的塊?
if foo: #{
print "it's true"
#}
else: #{
print "it's false!"
#}
(顯然,這是一個笑話。)
您可以嘗試使用將來的import語句添加對大括號的支持,但它尚不支持,因此您將收到語法錯誤:
>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance
糾正代碼塊。 但是,您使用花括號在Python中定義詞典:
a_dict = {
'key': 'value',
}
AHHHHHH。
是。 不使用卷曲括號。 相反,您使用:
符號來引入新塊,如下所示:
if True:
do_something()
something_else()
else:
something()
對 :)
而且(通常)4個空格和一個標簽之間存在差異,因此請確保標准化使用情況。
Python with Braces是python的一個變種,可以讓你做到這一點。 這是我最近和朋友一起工作的一個項目。
是。
if True:
#dosomething
else:
#dosomething else
#continue on with whatever you were doing
基本上,無論你在哪里都有一個開口花括號,請使用冒號代替。 Unindent關閉該地區。 它感覺完全自然不需要很長時間。
Python不對代碼塊使用花括號:
>>> while True {
File "<stdin>", line 1
while True {
^
SyntaxError: invalid syntax
>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance
(請注意“非機會”消息 - 這是反映此設計決定的復活節彩蛋。)
作為一種易於使用和閱讀的語言,Python使用冒號和縮進來指定代碼塊。 通過縮進定義代碼塊是不尋常的,對於習慣於C ++和C#等語言的程序員來說,這可能會讓他們感到驚訝,因為這些(和許多其他語言)不關心額外的空格或縮進。 此規則旨在提高Python代碼的可讀性,代價是程序員可以自由使用不同數量的空白。
縮進級別的增加表示代碼塊的開始,而減少表示代碼塊的結束。 按照慣例,每個壓痕寬度為四個空間。
這是一個簡單的例子,它將0到9之間的所有整數相加。請注意,Python中的范圍包括第一個值,最多但不包括最后一個值:
j = 0
for i in range(0, 10):
j += i
print(j)
正如其他人所提到的,你是正確的,在Python中沒有花括號。 此外,你沒有沒有結尾或endif或endfor或類似的東西(如pascal或ruby)。 所有代碼塊都是基於縮進的。
>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance
那很好地解釋了。
但請注意,Python本身支持大括號代碼塊! 看看下面:
if x: #{
x += 1
#}
對於Ada或Pascal程序員,我很高興向您透露:
if x: #BEGIN
...
#END
取自文檔 :
Python的解析器也非常復雜,可以識別混合符號,甚至可以捕獲缺少的開始或結束分隔符並為用戶更正程序。 這允許以下內容被識別為合法的Python:
if x: #BEGIN
x = x + 1
#}
對於Bash用戶來說:
if x:
x=99
#fi
更好的是,對於熟悉C,C ++等的程序員來說,只需要一個語句就可以完全省略花括號:
if x:
do_stuff()
美麗。 如前所述,Python還可以使用不正確的分隔符自動更正代碼,因此此代碼也是合法的:
if x:
do_a_hundred_or_more_statements()
x = x + 1
print(x)
因為這必須讓你更喜歡Python,我會向你發送文檔的最后一句話。
現在,從這一系列示例中可以看出,Python已經提升了解析器技術和代碼識別功能的先進水平,遠遠超出了傳統語言的能力。 它以一種精心平衡良好編碼風格的方式完成了這一點,並且需要老程序員對語言語法的外觀感到滿意。
唯一的限制是這些特殊的分隔符前面有一個#標簽符號。
是的,Python中的代碼塊是由它們的縮進定義的。 Python的創建者對自我記錄代碼非常感興趣。 它們在語法中包含縮進,作為一種天生地執行良好格式化實踐的方式。
我用Python編程了幾年,並且非常喜歡它的代碼結構,因為它真的很容易。 你有沒有在一個大型程序中遺漏一個結束的大括號,花了幾個小時試圖找到它? 在Python中不是問題。 當我離開那份工作並且不得不開始使用PHP時,我真的很想念Python語法。
關於格式字符串,花括號具有不同的含義。 請參閱https://docs.python.org/3/library/string.html?highlight=curly :
格式字符串包含由大括號{}包圍的“替換字段”。 大括號中未包含的任何內容都被視為文本文本,它將不加改變地復制到輸出中。 如果您需要在文字文本中包含大括號字符,可以通過加倍{{和}}來對其進行轉義。
我會對這個問題有所了解。
不可否認,起初我還認為編寫沒有花括號的代碼很奇怪。 但在使用Python多年后,我認為這是一個很好的設計。
首先,我們真的需要花括號嗎? 我的意思是,作為一個人。 如果允許你在Python中使用花括號,你不會再使用縮進嗎? 當然,你仍然會使用縮進! 因為你想編寫可讀代碼,縮進是關鍵點之一。
第二,什么時候我們真的需要花括號? 據我所知,當我們需要縮小源代碼文件時,我們只需要大括號。 像縮小的js文件一樣。 但是,即使源代碼的大小敏感,你會使用Python嗎? 據我所知,你也不會。
最后,我認為花括號在某種程度上是這樣的;
。 這只是一個歷史問題,無論有沒有它,我們總是會在Python中使用縮進。
是的,你可以使用這個庫/包{Py}使用花括號而不是縮進,加上Python的語法添加了更多的糖。
https://pypi.org/project/brackets/
// Use braces in Python!
def fib(n) {
a, b = 0, 1
while (a < n) {
print(a, end=' ')
a, b = b, a+b
}
print()
}
/*
Powerful anonymous functions
*/
print([def(x) {
if(x in [0, 1]) {
return x
};
while (x < 100) {
x = x ** 2
};
return x
}(x) for x in range(0, 10)])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.