簡體   English   中英

我不能在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中沒有花括號。 此外,你沒有沒有結尾endifendfor或類似的東西(如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語法。

在Python中,有四個空格( )用於縮進代替花括號( { )。 雖然,在Python的幾個地方使用花括號,它們用於不同的目的:

  1. 初始化非空集(無序的唯一元素集合):

     fuitBasket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'} 

    引文

  2. 初始化一個空字典(鍵值對):

     telephoneNumbers = {} 
  3. 初始化非空字典(鍵值對):

     telephoneNumbers = {'jack': 4098, 'sape': 4139} 

    引文

關於格式字符串,花括號具有不同的含義。 請參閱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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM