Что означают фигурные скобки в python
Русские Блоги
Разница между круглыми скобками и круглыми скобками в фигурных скобках Python
В языке Python используются три наиболее распространенные круглые скобки, а именно: круглые скобки (), квадратные скобки [] и фигурные скобки <>. Его роль также различна, и они используются для представления различных базовых встроенных типов данных Python. Чтобы
1. Круглые скобки () в python: представляют тип данных кортежа, который является неизменной последовательностью. Метод создания очень прост, в основном заключен в круглые скобки.
При определении кортежа, если он содержит только один элемент, добавьте после него запятую. В противном случае определение не является кортежем
Элементы кортежа не могут быть изменены, не могут быть добавлены или удалены (только для элемента первого уровня кортежа, элемент второго уровня в кортеже не может быть изменен. Элемент списка Его можно изменить, то есть список вложен в кортеж), и он может быть зациклен с помощью цикла for, поэтому кортеж также является итерируемым объектом, и кортеж также упорядочен, например:
2. Квадратные скобки [] в python: представляют тип данных списка, а список представляет собой последовательность переменных. Его метод создания прост и особенный, например:
3. Фигурные скобки Python <> фигурные скобки: представляют тип данных словаря dict, и словарь состоит из групп значений пар ключей. Двоеточие ’:’ разделяет ключ и значение, а запятая ’,’ разделяет группу. Методика создания скобок выглядит следующим образом:
В python строки, кортежи иnumbersЭто неизменяемый объект, в то время как list, dict и т. Д. Являются объектами, которые можно изменять.
После того, как переменной присваивается a = 5, затем присваивается a = 10. Здесь фактически создается объект значения типа int 10, и a указывается на него, а 5 отбрасывается, не изменяя значение a, что эквивалентно новому созданию a.
Присвоение переменной la = [1,2,3,4], а затем присваивание la [2] = 5 заключается в изменении значения третьего элемента списка la, само la не изменяется, изменена только часть его внутреннего значения.
F-Строки: Новый улучшенный способ форматирования строк в Python
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Telegram Чат & Канал
Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!
Паблик VK
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
Рассмотрим подробнее, как именно f-strings могут упростить вам жизнь.
Простой синтаксис
Синтаксис аналогичен тому, который вы используете в str.format(), но не такой перегруженный. Посмотрите на эту читабельность:
Вы также можете использовать заглавную букву F:
Вам уже нравится? Надеемся, что да, в любом случае, вы будете в восторге к концу статьи.
Произвольные выражения
Так как f-строки оцениваются по мере выражения, вы можете внести любую или все доступные выражения Python в них. Это позволит вам делать интересные вещи, например следующее:
Также вы можете вызывать функции. Пример:
Также вы можете вызывать метод напрямую:
Вы даже можете использовать объекты, созданные из классов при помощи f-строки. Представим, что у вас есть следующий класс:
Вы могли бы сделать следующее:
Методы __str__() и __repr__() работают с тем, как объекты отображаются в качестве строк, так что вам нужно убедиться в том, что вы используете один из этих методов в вашем определении класса. Если вы хотите выбрать один, попробуйте __repr__(), так как его можно использовать вместо __str__().
Строка, которая возвращается __str__() является неформальным строковым представлением объекта и должна быть читаемой. Строка, которую вернул __str__() — это официальное выражение и должно быть однозначным. При вызове str() и repr(), предпочтительнее использовать __str__() и __repr__() напрямую.
По умолчанию, f-строки будут использовать __str__(), но вы должны убедиться в том, что они используют __repr__(), если вы включаете флаг преобразования !r:
Если вы хотите прочитать часть обсуждения, в результате которого f-strings поддерживают полные выражения Python, вы можете сделать это здесь.
Многострочные F-Strings
У вас могут быть многострочные f-strings:
Однако помните о том, что вам нужно разместить f вначале каждой строки. Следующий код не будет работать:
Если вы не внесете f в начале каждой индивидуальной строки, то получите обычную, старую версию строк, без приятных новшеств.
Если вы хотите размножить строки по нескольким линиям, у вас также есть возможность избежать возвратов при помощи \:
Но вот что произойдет, если вы используете «»»:
Инструкция по отступам доступна в PEP 8.
Скорость
Буква f в f-strings может также означать и “fast”. Наши f-строки заметно быстрее чем % и str.format() форматирования. Как мы уже видели, f-строки являются выражениями, которые оцениваются по мере выполнения, а не постоянные значения. Вот выдержка из документации:
“F-Строки предоставляют способ встраивания выражений внутри строковых литералов с минимальным синтаксисом. Стоит обратить внимание на то, что f-строка является выражением, которое оценивается по мере выполнения, а не постоянным значением. В исходном коде Python f-строки является литеральной строкой с префиксом f, которая содержит выражения внутри скобок. Выражения заменяются их значением.”
Во время выполнения, выражение внутри фигурных скобок оценивается в собственной области видимости Python и затем сопоставляется со строковой литеральной частью f-строки. После этого возвращается итоговая строка. В целом, это все.
Форматирование в Python с помощью f-строк
В этом руководстве вы узнаете и увидите на примерах, какие преимущества для форматирования дает использование f-строк в Python.
Вступление
Что такое форматирование строк?
Форматирование строк — это оформление строк с помощью методов форматирования, предложенных конкретным языком программирования. В Python таких несколько, но речь пойдет только об одном: f-строках.
f-строки исполняются при исполнении самой программы. Это работает быстрее других методов.
У f-строк более простой синтаксис в сравнении с другими техниками форматирования Python. Эта особенность будет рассмотрена на примерах.
Синтаксис
Каждая инструкция f-строки состоит из двух частей: символа f (или F ) и строки, которую нужно форматировать. Строка должна быть в одинарных, двойных или тройных кавычках.
На месте string нужно написать предложение, которое требуется отформатировать.
Отображение переменных
Выражения
Что, если можно было бы выполнять арифметические выражения или вызовы функций в строке? Это удобно. И f-строки позволяют делать это.
Просто вставьте выражение в <> для исполнения. Оно выполнится при запуске программы. Экономит время и код.
Вот примеры отдельных выражений.
Также в <> можно вызвать функцию. Определим функцию greet() и вызовем ее в f-строке.
Также можно вызвать определенные заранее методы.
Что еще умеет f-строка? Отображать объект? Да. Работает это так же, как и при выводе переменных.
Специальные символы
Кавычки
Рассмотрим на примерах.
Другие кавычки в f-строках.
<> также можно включать в тройные кавычки.
Скобки
Двойные скобки нужны, чтобы вывести одни фигурные скобки в f-строке.
Если нужно вывести две пары скобок, то в выражении потребуется указать по четыре.
Словари
Нужно быть осторожным, работая с ключами словаря в f-строке. Необходимо использовать другие кавычки по отношению к ключам. Они не должны быть теми же, которыми окружена f-строка.
F-строка в Python – улучшенный способ форматирования
В этом руководстве мы узнаем о механизме форматирования строк. F-строка – лучший способ отформатировать строку. Стиль форматирования строки делает ее более читаемой, краткой и менее подверженной ошибкам. Это также быстрее, чем другие способы.
Прежде чем углубиться в эту тему, мы сначала обсудим техники, которые использовались до строки f.
Старый стиль форматирования строки в Python
Существует два основных способа форматирования строки: % – форматирование и str.format(). Но у обоих методов есть некоторые ограничения. Давайте кратко познакомимся с этими методами.
% – форматирование
Это традиционный способ форматирования строки, он рекомендуется в документации, содержащей следующую инструкцию.
“Операции форматирования, описанные здесь, демонстрируют множество причуд, которые приводят к нескольким распространенным ошибкам (например, неправильному отображению кортежей и словарей).
Использование более новых форматированных строковых литералов или интерфейса str.format() помогает избежать этих ошибок. “- Официальная документация.
Как использовать% – форматирование
Мы также можем использовать кортеж для хранения нескольких переменных. Посмотрим на следующий пример.
Когда не рекомендуется
Поскольку при увеличении переменной и увеличении длины строки наш код становится все труднее читаемым, он выглядит запутанным. Посмотрим на следующий пример.
Как видно из приведенного выше кода, код стал трудночитаемым и более подверженным ошибкам. Вот почему такой способ форматирования строки не подходит.
Метод str.format()
Это еще один популярный способ форматирования строки, представленный в Python 2.6. Посмотрим, как мы можем это использовать.
Как использовать str.format()
Посмотрим на следующий пример.
Чтобы получить доступ к элементу словаря внутри метода форматирования, мы можем передать ключ в методе format().
Когда метод str.format() не рекомендуется?
F-строчный метод
Это новый механизм форматирования строк, представленный PEP 498. Он также известен как интерполяция литеральной строки или, чаще, как F-строки (символ f, предшествующий строковому литералу). Основная задача этого механизма – облегчить интерполяцию.
Когда мы добавляем строке букву ‘F, строка сама становится f-строкой. F-строка может быть отформатирована почти так же, как метод str.format(). F-строка предлагает удобный способ встраивания выражения Python в строковые литералы для форматирования.
В приведенном выше коде мы использовали f-строку для форматирования строки. Она оценивается во время выполнения; мы можем поместить в нее все допустимые выражения Python.
Мы можем использовать ее в одном заявлении.
Однако мы могли бы использовать в функции.
F-строка также может использоваться с объектом класса. Давайте разберемся в следующем примере.
F-строка в словаре
Мы должны проявлять осторожность при работе со словарными ключами внутри f-строки. Есть разные цитаты для использования словарных ключей и f-строки. Давайте разберемся в следующем примере.
В случае словаря метод ниже не разрешен.
Как мы видим в приведенном выше коде, мы меняем двойные кавычки на одинарные, и это вызывает ошибку.
Скорость
Причина адаптации этого стиля форматирования – его скорость. F-строка оценивается во время выполнения, а не постоянных значений. Она встраивает выражение в строковые литералы, используя минимальный синтаксис. Это быстро, потому что она оценивает во время выполнения, а не в постоянных значениях.
Давайте посмотрим на следующее сравнение строк.
Как мы видим, f-строка находится в верхней части списка.
Фигурные скобки
Чтобы в коде появлялись фигурные скобки, вы должны использовать двойные кавычки, как показано ниже. Давайте разберемся в следующем примере.
Если мы используем тройные фигурные скобки, в нашей строке будут отображаться одинарные фигурные скобки.
Мы можем отобразить большее количество фигурных скобок, если используем более тройных фигурных скобок.
Обратная косая черта
Мы можем использовать экранирование обратной косой черты в строковой части f-строки. Однако мы не можем использовать обратную косую черту для экранирования в части выражения f-строки. Давайте разберемся в следующем примере.
Встроенные комментарии
Мы не можем включать в выражение символ #. Это вызовет синтаксическую ошибку.
Заключение
Мы можем использовать любой метод из трех, но метод f-строки обеспечивает более сжатый, читаемый и удобный способ. Это быстрее и менее подвержено ошибкам. Мы объяснили почти все возможные сценарии и объяснили, почему следует учитывать такой подход в программировании.
F-строки Python 3: улучшенный синтаксис форматирования строк
Начиная с Python 3.6, f-строки — отличный новый способ форматирования строк. Это способ не только более читабелен, более краток и менее подвержен ошибкам, чем другие способы форматирования, но и быстрее всех других!
К концу этой статьи вы узнаете, как и почему нужно использовать f-строки.
Но сначала, рассмотрим старые варианты вывода строк.
“Старая-школа” форматирования строк в Python
До Python 3.6 у нас было два основных способа встраивания выражений Python в строковые литералы для форматирования: % — форматирование и str.format(). Рассмотрим, как их использовать и каковы их ограничения.
Вариант #1: % — форматирование
Этот способ форматирования Python существует в языке с самого его начала. Вы можете прочитать о нем больше информации в документации по Python. Имейте в виду, что % — форматирование не рекомендуется к использованию:
Операции форматирования, описанные здесь, демонстрируют различные проблемы, которые приводят к ряду распространенных ошибок (таких как неправильное отображение кортежей и словарей).
Использование более новых форматированных строковых литералов или интерфейса str.format() помогает избежать этих ошибок. Эти альтернативы также предоставляют более мощные, гибкие и расширяемые подходы к форматированию текста. (Источник)
Как используется % — форматирование
Строковые объекты имеют встроенную операцию с использованием оператора %, который можно использовать для форматирования строк. Вот как это выглядит на практике:
Чтобы вставить более одной переменной, вы должны использовать кортеж из этих переменных.
Недостатки % — форматирования
Примеры кода, которые вы только что видели выше, достаточно читабельны. Однако, как только вы начнете использовать несколько параметров и более длинные строки, ваш код быстро станет менее читаемым. Все начинает выглядеть немного грязно:
К сожалению, этот вид форматирования не очень хорош, потому что он многословен и приводит к ошибкам, таким как неправильное отображение кортежей или словарей. К счастью, есть альтернативы.
Вариант #2: str.format()
Этот новый способ вывода строк был представлен в Python 2.6. Вы можете обратиться к документации Python для получения дополнительной информации.
Как используется str.format()
str.format() — это улучшение % — форматирования. Он использует обычный синтаксис вызова функции и расширяется с помощью метода __format__() для объекта, преобразуемого в строку.
С помощью str.format() поля вывода переменных отмечены фигурными скобками:
Вы можете ссылаться на переменные в любом порядке, ссылаясь по их индексам:
Но если вы вставите имена переменных, вы получите дополнительную возможность передавать объекты, а затем ссылаться на параметры и методы между фигурными скобками:
Вы также можете использовать символ **, чтобы использовать этот трек со словарями:
str.format() определенно является улучшением по сравнению с % — форматированием, но и у него есть свои недостатки.
В чем недостатки str.format()
Если у вас есть переменные, которые вы хотите передать в .format() в словаре, то вы можете просто распаковать его с помощью .format (** some_dict) и ссылаться на значения по ключу в строке.
f-Строки: новый и улучшенный способ форматирования строк в Python
f-строки были представлены в Python 3.6. Вы можете прочитать об этом в PEP 498, который был написан Эриком В. Смитом в августе 2015 года.
Также называемые «formatted string literals»(«отформатированные строковые литералы»), f-строки — это строковые литералы, которые имеют f в начале и фигурные скобки, содержащие выражения, которые будут заменены их значениями. Выражения оцениваются во время выполнения, а затем форматируются с использованием протокола format. Как всегда, документация Python — ваш друг, когда вы хотите получить больше информации.
Вот несколько способов, которыми f-строки могут сделать вашу жизнь проще.
Простой синтаксис
Синтаксис похож на тот, который вы использовали с str.format(), но менее подробный. Посмотрите, насколько легко это читается:
Также было бы правильно использовать заглавную букву F:
Ты еще не любишь f — строки? Я надеюсь, что к концу этой статьи вы ответите >>> F»Yes!»
Произвольные выражения
Поскольку f-строки оцениваются во время выполнения, вы можете поместить в них все допустимые выражения Python. Это позволяет вам делать некоторые изящные вещи.
Вы можете сделать что-то довольно простое, как это:
Но вы также можете вызывать функции. Вот пример:
Вы также можете напрямую вызвать метод:
Вы даже можете использовать объекты, созданные из классов с f-строками. Представьте, что у вас есть следующий класс:
Вы сможете сделать это:
Методы __str__() и __repr__() имеют дело с тем, как объекты представляются в виде строк, поэтому вам необходимо убедиться, что вы включили хотя бы один из этих методов в определение класса. Если вам нужно выбрать один, используйте __repr__(), поскольку его можно использовать вместо __str__().
Строка, возвращаемая __str__(), является неформальным строковым представлением объекта и должна быть читабельной. Строка, возвращаемая __repr__(), является официальным представлением и должна быть однозначной. Вызов str() и repr() предпочтительнее прямого использования __str__ () и __repr__().
По умолчанию f-строки будут использовать __str__(), но вы можете убедиться, что они используют __repr__(), если вы включите флаг преобразования !r:
Если вы хотите прочитать больше, о f-строк которые поддерживают полные выражения Python, вы можете сделать это здесь.
Многострочные f-строки
Вы можете использовать многострочные строки:
Но помните, что вам нужно поместить «f» перед каждой строкой многострочной строки. Следующий код не будет работать:
Если вы хотите распределить строки по нескольким строкам, вы можете так же сделать это с помощью \:
Или с помощью «»»:
Скорость
Символ f в f — строках также может означать «быстро» (fast).
f-строки быстрее, чем % — форматирование и str.format(). Как вы уже видели, f-строки — это выражения, вычисляемые во время выполнения, а не постоянные значения. Вот выдержка из документов:
«f-строки обеспечивают способ встраивания выражений в строковые литералы, используя минимальный синтаксис. Следует отметить, что f-строка на самом деле является выражением, вычисляемым во время выполнения, а не постоянным значением. В исходном коде Python f-строка является литеральной строкой с префиксом f, которая содержит выражения внутри фигурных скобок. Выражения заменяются их значениями ». (Источник)
Во время выполнения выражение внутри фигурных скобок оценивается в собственной области видимости и затем помещается вместе со строковым литералом в часть f-строки. Полученная строка затем возвращается. Это все, что нужно.
Вот сравнение скорости:
Как вы можете видеть, f-строки выходят на первое место.
Тем не менее, это не всегда так. Когда они были впервые реализованы, у них были некоторые проблемы со скоростью, и их нужно было делать быстрее, чем str.format(). Был введен специальный код BUILD_STRING.
Python f-строки: особенности использования
Теперь, когда вы узнали все о том, почему f-строки великолепны, я уверен, что вы захотите начать их использовать. Вот несколько деталей, о которых нужно помнить, когда вы отправляетесь в этот дивный новый мир.
Кавычки
Вы можете использовать различные типы кавычек внутри выражений. Просто убедитесь, что вы не используете кавычки того же типа на внешней стороне f-строки, которые вы используете в выражении.
Этот код будет работать:
Этот код также будет работать:
Вы также можете использовать тройные кавычки:
Если вам нужно использовать одинаковый тип кавычки как внутри, так и снаружи строки, вы можете сделать это с помощью \:
Словари
Говоря о кавычках, следите, когда вы работаете со словарями. Если вы собираетесь использовать одинарные кавычки для ключей словаря, то не забудьте убедиться, что вы используете двойные кавычки для f-строк, содержащих ключи.
Пример с синтаксической ошибкой:
Если вы используете тот же тип кавычки вокруг ключей словаря, что и на внешней стороне f-строки, то кавычка в начале первого ключа словаря будет интерпретироваться как конец строки.
Фигурные скобки
Чтобы в скобках появилась скобка, вы должны использовать двойные скобки:
Обратите внимание, что использование тройных скобок приведет к тому, что в вашей строке будут только одиночные скобки:
Тем не менее, вы можете получить больше фигурных скобок, если вы используете больше, чем тройные фигурные скобки:
Обратный слеш
Как вы видели ранее, вы можете использовать обратные слэши в строковой части f-строки. Однако вы не можете использовать обратную косую черту для экранирования части выражения f-строки:
Вы можете обойти это, предварительно посчитав выражение и используя результат в f-строке:
Встроенные комментарии
Выражения не должны содержать комментарии, использующие символ #. Используя это вы получите синтаксическую ошибку:
Заключение
Вы по-прежнему можете использовать более старые способы форматирования строк, но с f-строками у вас теперь есть более лаконичный, читаемый и удобный способ, который быстрее и менее подвержен ошибкам. Упрощение вашей жизни с помощью f-строк — отличная причина начать использовать Python 3.6, если вы еще не сделали этого. (Если вы все еще используете Python 2, не забудьте, что 2020 скоро наступит!)
Согласно Zen of Python, когда вам нужно решить, как что-то сделать, должен быть один — и предпочтительно только один — очевидный способ сделать это. Хотя f-строки не единственный возможный способ отформатировать строки, они в состоянии стать тем очевидным и единственным способом сделать эту работу.
Дальнейшее чтение
Если вы хотите прочитать расширенное обсуждение интерполяции строк, взгляните на PEP 502. Кроме того, в черновике PEP 536 есть еще несколько мыслей о будущем f-строк.