Правда ли, что я не могу использовать фигурные скобки в Python? - PullRequest
40 голосов
/ 20 декабря 2009

Я читал, что Python делает все свои "блоки кода" с отступом, а не с помощью фигурных скобок. Это правильно? Значит, функции, если и все в таком духе появляются без окружения их блока фигурными скобками?

Ответы [ 16 ]

274 голосов
/ 20 декабря 2009
if foo: #{
    print "it's true"
#}
else: #{
    print "it's false!"
#}

(Очевидно, это шутка.)

86 голосов
/ 20 декабря 2009

Вы можете попытаться добавить поддержку скобок, используя оператор future import , но он пока не поддерживается, поэтому вы получите синтаксическую ошибку:

>>> from __future__ import braces
  File "<stdin>", line 1
SyntaxError: not a chance
33 голосов
/ 20 декабря 2009

Исправить для блоков кода. Однако вы определяете словари в Python, используя фигурные скобки:

a_dict = {
    'key': 'value',
}

Ahhhhhh.

26 голосов
/ 20 декабря 2009

Да. Фигурные скобки не используются. Вместо этого вы используете символ : для введения новых блоков, например:

if True:
    do_something()
    something_else()
else:
    something()
12 голосов
/ 10 июня 2011
10 голосов
/ 20 декабря 2009

Да :)) 1001 *

И есть (обычно) разница между 4 пробелами и табуляцией, поэтому убедитесь, что вы стандартизируете использование ..

8 голосов
/ 10 февраля 2014

Python с фигурными скобками - это вариант Python, который позволяет вам делать именно это. Это проект, над которым я работал в последнее время вместе с моим другом.

7 голосов
/ 20 декабря 2009

Да.

if True:
    #dosomething
else:
    #dosomething else

#continue on with whatever you were doing

По сути, где бы у вас не было открывающейся фигурной скобки, используйте вместо этого двоеточие. Uninddent, чтобы закрыть регион. Это не займет много времени, чтобы чувствовать себя совершенно естественно.

5 голосов
/ 27 февраля 2014

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)
3 голосов
/ 20 декабря 2009

Как уже упоминали другие, вы правы, в Python нет фигурных скобок. Кроме того, у вас нет end или endif или endfor или чего-либо подобного (как в паскале или рубине). Все блоки кода основаны на отступах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...