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

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

Ответы [ 16 ]

2 голосов
/ 02 марта 2013

Да, блоки кода в Python определяются их отступом. Создатели Python были очень заинтересованы в самодокументировании кода. Они включили отступ в синтаксис как способ принудительного применения правильной практики форматирования.

Я программировал на Python в течение нескольких лет и очень полюбил его структуру кода, потому что это действительно проще. Вы когда-нибудь пропускали заключительную фигурную скобку в большой программе и часами пытались ее найти? Не проблема в Python. Когда я оставил эту работу и начал использовать PHP, я действительно пропустил синтаксис Python.

1 голос
/ 18 мая 2019
>>> 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()

Beautiful. Как упоминалось ранее, Python также может автоматически исправлять код с неверными разделителями, поэтому этот код также допустим:

if x:
    do_a_hundred_or_more_statements()
    x = x + 1
    print(x)



Поскольку это должно заставить вас любить Python еще больше , я отправляю вас с последней цитатой из документов.

Теперь, как вы можете видеть из этой серии примеров, Python имеет продвинули современное состояние технологии парсера и кода возможности распознавания намного превосходят возможности традиционных языков. Он сделал это таким образом, который тщательно балансирует хорошее кодирование стиль с необходимостью для старших программистов чувствовать себя комфортно с внешний вид синтаксиса языка.

Единственное ограничение заключается в том, что этим специальным разделителям предшествует символ хэштега.

0 голосов
/ 22 мая 2019

Да, вы можете использовать эту библиотеку / пакет {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)])
0 голосов
/ 27 марта 2019

Я подумаю над этим вопросом.

Сначала я тоже подумал, что странно писать код без фигурных скобок. Но после долгих лет использования Python я думаю, что это хороший дизайн.

Во-первых, нам действительно нужны фигурные скобки? Я имею в виду, как человек. Если вам разрешено использовать фигурные скобки в Python, не будете ли вы использовать отступы? Конечно, вы все равно будете использовать отступы! Потому что вы хотите написать читаемый код, а отступы - один из ключевых моментов.

Во-вторых, когда нам действительно нужны фигурные скобки? Насколько я думаю, нам нужны только фигурные скобки, когда нам нужно минимизировать наши файлы исходного кода. Как минимизированные файлы JS. Но будете ли вы использовать Python в ситуации, когда даже размер исходного кода чувствителен? Также, насколько я думаю, ты не будешь.

Итак, наконец, я думаю, что фигурные скобки как-то похожи ;. Это просто историческая проблема, с ней или без нее, мы всегда будем использовать отступы в Python.

0 голосов
/ 27 марта 2019

По отношению к форматной строке фигурные скобки приобретают другое значение. См https://docs.python.org/3/library/string.html?highlight=curly:

Строки формата содержат «замещающие поля», заключенные в фигурные скобки {}. Все, что не содержится в фигурных скобках, считается буквальным текст, который копируется без изменений в вывод. Если вам нужно включить символ фигурной скобки в буквальном тексте, его можно избежать путем удвоения: {{и}}.

0 голосов
/ 01 августа 2018

В Python для фигурных скобок используются четыре пробела () вместо фигурных скобок ({). Тем не менее, фигурные скобки используются в нескольких местах в Python, которые служат разным целям:

  1. Инициализировать непустой набор (неупорядоченный набор уникальных элементов):

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

    Цитирование

  2. Инициализировать пустой словарь (пары ключ-значение):

    telephoneNumbers = {}
    
  3. Инициализировать непустой словарь (пары ключ-значение):

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

    Цитирование

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