Для чего в питоне кавычки
Одинарные и двойные кавычки | питон
Строковые функции Python очень популярны. Есть два способа представления строк в Python. Строка заключена в одинарные или двойные кавычки. Оба способа (одинарные или двойные кавычки) являются правильными в зависимости от требования. Иногда мы должны использовать кавычки (одинарные или двойные кавычки) вместе в одной строке, в таких случаях мы используем одинарные и двойные кавычки, чтобы их можно было различить.
Пример № 1:
Проверьте пример ниже и проанализируйте ошибку —
Пояснение —
Это дает неверную синтаксическую ошибку. Потому что одинарная кавычка после «it» считается концом строки, а остальная часть не является частью строки.
Это можно исправить как:
Выход:
Пример № 2:
Если вы хотите напечатать ‘WithQuotes’ в Python, это не может быть сделано только с одиночными (или двойными) кавычками, это требует одновременного использования обоих.
# этот код печатает вывод в кавычках.
# печатать WithQuotes в одинарных кавычках
print ( «Hello ‘Python'» )
# печатать WithQuotes в одинарных кавычках
print ( ‘Hello «Python»‘ )
Выход —
Вывод —
Выбор между обоими типами (одинарные и двойные кавычки) зависит от выбора программиста. Как правило, двойные кавычки используются для представления строк, а одинарные кавычки используются для регулярных выражений, ключей dict или SQL. Следовательно, и одинарные кавычки, и двойные кавычки изображают строку в python, но иногда нам нужно использовать один тип поверх другого.
Основы¶
Комментарии¶
Старайтесь в своих программах писать как можно больше полезных комментариев, объясняющих:
Это будет полезно для тех, кто будет читать вашу программу, так как им легче будет понять, что программа делает. Помните, что таким человеком можете оказаться вы сами через полгода!
Литеральные константы¶
Числа¶
Числа в Python бывают трёх типов: целые, с плавающей точкой и комплексные.
Замечание для опытных программистов
Нет отдельного типа ‘long int’ (длинное целое). Целые числа по умолчанию могут быть произвольной длины.
Строки¶
Строка — это последовательность символов. Чаще всего строки — это просто некоторые наборы слов.
Слова могут быть как на английском языке, так и на любом другом, поддерживаемом стандартом Unicode, что означает почти на любом языке мира.
Замечание для опытных программистов
Я могу с уверенностью сказать, что вы будете использовать строки почти в каждой вашей программе на Python. Поэтому уделите внимание тому, как работать со строками в Python.
Одинарные кавычки¶
Двойные кавычки¶
Тройные кавычки¶
Можно указывать «многострочные» строки с использованием тройных кавычек ( «»» или »’ ). В пределах тройных кавычек можно свободно использовать одинарные и двойные кавычки. Например:
Строки неизменяемы¶
Это означает, что после создания строки её больше нельзя изменять. На первый взгляд это может показаться недостатком, но на самом деле это не так. Впоследствии на примере разных программ мы увидим, почему это не является ограничением.
Объединение строковых констант¶
Замечание для программистов на C/C++
В Python нет отдельного типа данных char (символ). В нём нет нужды, и я уверен, что вы не будете по нему скучать.
Замечание для программистов на Perl/PHP
Помните, что строки в двойных кавычках и в одинарных эквивалентны, и ничем друг от друга не отличаются.
Метод format¶
Сохраните следующие строки в файл str_format.py :
Как это работает:
В строку могут быть включены определённые обозначения, а впоследствии может быть вызван метод format для замещения этих обозначений соответствующими аргументами.
На всякий случай имейте в виду, что цифры здесь не обязательны. Можно было бы просто написать:
и получить такой же результат, как и ранее.
В методе format Python помещает значение каждого аргумента в обозначенное место. Могут быть и более детальные обозначения, как то:
Переменные¶
Использование одних лишь литеральных констант может скоро наскучить — нам ведь нужен способ хранения любой информации и манипулирования ею. Вот здесь на сцену выходят переменные. Слово «переменные» говорит само за себя — их значение может меняться, а значит, вы можете хранить в переменной всё, что угодно. Переменные — это просто области памяти компьютера, в которых вы храните некоторую информацию. В отличие от констант, к такой информации нужно каким-то образом получать доступ, поэтому переменным даются имена.
Имена идентификаторов¶
Переменные — это частный случай идентификаторов. Идентификаторы — это имена, присвоенные чему-то для его обозначения. При выборе имён для идентификаторов необходимо соблюдать следующие правила:
Типы данных¶
Переменные могут хранить значения разных типов, называемых типами данных. Основными типами являются числа и строки, о которых мы уже говорили. В дальнейших главах мы увидим, как создавать свои собственные типы при помощи классов.
Объекты¶
Помните, Python рассматривает всё, что есть в программе, как объекты. Имеется в виду, в самом общем смысле. Вместо того, чтобы говорить «нечто«, мы говорим «объект«.
Замечание для программистов в объектно-ориентированном стиле
Python строго объектно ориентирован в том смысле, что объектом является всё, включая числа, строки и функции.
Сейчас мы увидим, как использовать переменные наряду с константами. Сохраните следующий пример и запустите программу.
Как писать программы на Python
Впредь стандартная процедура сохранения и запуска программы на Python будет выглядеть так:
Пример: Использование переменных и констант¶
Вывод:
Как это работает:
Замечание для программистов на статических языках программирования
Переменные используются простым присваиванием им значений. Никакого предварительного объявления или определения типа данных не требуется/применяется.
Логические и физические строки¶
Физическая строка — это то, что вы видите, когда набираете программу. Логическая строка — это то, что Python видит как единое предложение. Python неявно предполагает, что каждой физической строке соответствует логическая строка.
Python неявно стимулирует использование по одному предложению на строку, что облегчает чтение кода.
Чтобы записать более одной логической строки на одной физической строке, вам придётся явно указать это при помощи точки с запятой ( ; ), которая отмечает конец логической строки/предложения. Например,
и то же самое может быть записано в виде
Однако я настоятельно рекомендую вам придерживаться написания одной логической строки в каждой физической строке. Таким образом вы можете обойтись совсем без точки с запятой. Кстати, я никогда не использовал и даже не встречал точки с запятой в программах на Python.
Можно использовать более одной физической строки для логической строки, но к этому следует прибегать лишь в случае очень длинных строк. Пример написания одной логической строки, занимающей несколько физических строк, приведён ниже. Это называется явным объединением строк.
Это даст результат:
Иногда имеет место неявное подразумевание, когда использование обратной косой черты не обязательно. Это относится к случаям, когда в логической строке есть открывающаяся круглая, квадратная или фигурная скобка, но нет закрывающейся. Это называется неявным объединением строк. Вы сможете увидеть это в действии в программах с использованием списков в дальнейших главах.
Отступы¶
В Python пробелы важны. Точнее, пробелы в начале строки важны. Это называется отступами. Передние отступы (пробелы и табуляции) в начале логической строки используются для определения уровня отступа логической строки, который, в свою очередь, используется для группировки предложений.
Это означает, что предложения, идущие вместе, должны иметь одинаковый отступ. Каждый такой набор предложений называется блоком. В дальнейших главах мы увидим примеры того, насколько важны блоки.
Вы должны запомнить, что неправильные отступы могут приводить к возникновению ошибок. Например:
Когда вы запустите это, вы получите следующую ошибку:
Обратите внимание на то, что в начале второй строки есть один пробел. Ошибка, отображённая Python, говорит нам о том, что синтаксис программы неверен, т.е. программа не была написана по правилам. Для вас же это означает, что вы не можете начинать новые блоки предложений где попало (кроме основного блока по умолчанию, который используется на протяжении всей программы, конечно). Случаи, в которых вы можете использовать новые блоки, будут подробно описаны в дальнейших главах, как например, в главе «Поток команд».
Не смешивайте пробелы и символы табуляции в отступах, поскольку не на всех платформах это работает корректно. Я настоятельно рекомендую вам использовать одиночную табуляцию или четыре пробела для каждого уровня отступа.
Выберите какой-нибудь один из этих стилей отступа. Но что ещё более важно, это использовать выбранный стиль постоянно, а также соблюдать стиль редактируемых вами файлов. Т. е. когда вы пишете новый файл, используйте только один ваш любимый стиль, а если в редактируемом вами файле для отступов уже используются, скажем, символы табуляции, то и вы используйте в этом файле символы табуляции для отступов.
Хорошие редакторы, такие как Komodo Edit, будут делать это автоматически.
Замечание для программистов на статических языках программирования
Резюме¶
Теперь, когда мы прошли через множество жизненно важных мелочей, можно перейти к более интересным вещам — таким как управляющие конструкции. Но сначала как следует освойтесь с прочитанным в настоящей главе.
«literal» — англ. «буквальный»; вспомните «литера» (син. «буква»). (прим. перев.) ↩
Python: советы, уловки, хаки (часть 1)
Предлагаю читателям «Хабрахабра» перевод статьи «Python Tips, Tricks, and Hacks». Статья будет полезна на начальном и среднем этапах изучения Python.
Хотите писать более лаконичный и читаемый код? Вы хотите уместить как можно больше смысла в одно выражение? Считаете, что прочитать о нескольких уловках лучше, чем провести остаток жизни за чтением документации? Вы обратились по адресу. Мы начнем с маленьких уловок, которые вы уже могли встретить, если немного работали с Python. Но я обещаю, что ближе к концу статьи вас ожидает больше безумных вещей.
Содержание
1. Маленькие уловки. Четыре типа кавычек. Правдивость различных объектов. Проверка на вхождение подстроки. Красивый вывод списка. Целочисленное деление и деление с плавающей точкой. Лямбда-функции.
2. Списки. Генераторы списков и выражения-генераторы.
Я старался сделать, чтобы все фрагменты кода запускались без дополнительных изменений. Если хотите, можете скопировать их в оболочку Python и посмотреть, что получится. Обратите внимание, что многие примеры содержат «неправильные» фрагменты, которые закомментированы. Ничто вам не мешает раскомментировать строку и посмотреть, что произойдет.
Небольшое разграничение между true и True в этой статье: когда я говорю, что объект true, это значит, что будучи приведенным к типу boolean, он становится True. Аналогично с false и False.
1 Маленькие уловки
1.1 Четыре типа кавычек
Начнем с того, что вы, возможно, уже знаете. В некоторых языках программирования одинарные и двойные кавычки предназначены для разных вещей. Python позволяет использовать оба варианта (но строка должна начинаться и заканчиваться одним и тем же типом кавычек). В Python также есть еще два типа кавычек: »’ (тройные одинарные) и «»» (тройные двойные). Таким образом, можно использовать несколько уровней кавычек, прежде чем придется заботиться об их экранировании. Например, этот код правильный:
1.2 Правдивость различных объектов
В отличие от некоторых языков программирования, в Python объект считается false, только если он пуст. Это значит, что не нужно проверять длину строки, кортежа или словаря — достаточно проверить его как логическое выражение.
Легко предсказать, что 0 — тоже false, а остальные числа — true.
Например, следующие выражения эквивалентны. В данном случае my_object — строка, но здесь мог оказаться другой тип (с соответствующими изменениями условий блока if).
Итак, нет необходимости проверять длину объекта, если вас интересует только, пуст он или нет.
1.3 Проверка на вхождение подстроки
Это маленькая, довольно очевидная подсказка, но я узнал о ней лишь через год изучения Python. Должно быть, вы знаете, что можно проверить, содержится ли нужный элемент в кортеже, списке, словаре, с помощью конструкции ‘item in list’ или ‘item not in list’. Я не мог представить, что это сработает для строк. Я всегда писал что-то вроде этого:
Этот код довольно неуклюжий. Совершенно так же работает ‘if substring in string’:
Проще и понятней. Может быть, очевидно для 99% людей, но мне хотелось бы узнать об этом раньше, чем я узнал.
1.4 Красивый вывод списка
Обычный формат вывода списка с помощью print не очень удобен. Конечно, становится понятно, что из себя представляет список, но чаще всего пользователь не хочет видеть кавычки вокруг каждого элемента. Есть простое решение, использующее метод join строки:
Метод join преобразовывает список в строку, рассматривая каждый элемент как строку. Разделителем является та строка, для которой был вызван join. Он достаточно умен, чтобы не вставлять разделитель после последнего элемента.
Дополнительный бонус: join работает линейное время. Никогда не создавайте строку складыванием элементов списка в цикле for: это не просто некрасиво, это занимает квадратичное время!
1.5 Целочисленное деление и деление с плавающей точкой
Если вы делите целое число на целое, по умолчанию результат обрезается до целого. Например, 5/2 вернет 2.
Есть два способа это исправить. Первый и самый простой способ заключается в том, чтобы преобразовать одно из чисел к типу float. Для констант достаточно добавить «.0» к одному из чисел: 5.0/2 вернет 2.5. Также вы можете использовать конструкцию float(5)/2.
Второй способ дает более чистый код, но вы должны убедиться, что ваша программа не сломается от этого существенного изменения. После вызова ‘from __future__ import division’ Python всегда будет возвращать в качестве результата деления float. Если вам понадобится целочисленное деление, используйте оператор //: 5//2 всегда возвращает 2.
В одной из следующих версий Python такое поведение станет дефолтным. Если вы хотите, чтобы ваш код оставался совместимым, используйте оператор // для целочисленного деления, даже если вы не используете этот импорт.
1.6 Лямбда-функции
Иногда нужно передать функцию в качестве аргумента или сделать короткую, но сложную операцию несколько раз. Можно определить функцию обычным способом, а можно использовать лямбда-функцию — маленькую функцию, возвращающую результат одного выражения. Следующие два определения полностью идентичны:
Преимущество лямбда-функции в том, что она является выражением и может быть использована внутри другого выражения. Ниже приведен пример, использующий функцию map, которая вызывает функцию для каждого элемента списка и возвращает список результатов. (В следующем пункте я покажу, что map практически бесполезен. Но он дает нам возможность привести хороший пример в одну строку.)
Без лямбда-функций нам пришлось бы определить функцию отдельно. Мы просто сэкономили одну строку кода и одно имя переменной.
Синтаксис лямбда-функции: lambda переменные: выражение
переменные — список аргументов, разделенных запятой. Нельзя использовать ключевые слова. Аргументы не надо заключать в скобки.
выражение — инлайновое выражение Python. Область видимости включает локальные переменные и аргументы. Функция возвращает результат этого выражения.
2 Списки
2.1 Генераторы списков
Если вы использовали Python достаточно долго, вы должны были хотя бы слышать о понятии «list comprehensions». Это способ уместить цикл for, блок if и присваивание в одну строку.
Другими словами, вы можете отображать (map) и фильтровать списки одним выражением.
2.1.1 Отображение списка
Начнем с простейшего примера. Допустим, нам надо возвести в квадрат все элементы списка. Свежеиспеченный программист на Python может написать код вроде этого:
Мы «отобразили» один список на другой. Это также можно сделать с помощью функции map:
Этот код определенно короче (одна строка вместо трех), но всё еще некрасив. С первого взгляда сложно сказать, что делает функция map (она принимает в качестве аргументов функцию и список и применяет функцию к каждому элементу списка). К тому же мы вынуждены определять функцию, это выглядит довольно беспорядочно. Если бы только существовал более красивый путь… например, генератор списка:
Этот код делает абсолютно то же самое, но он короче, чем первый пример, и понятней, чем второй. Человек без проблем определит, что делает код, для этого даже не обязательно знать Python.
2.1.2 Фильтрация списка
А что, если нас интересует фильтрация списка? Например, требуется удалить элементы, большие или равные 4. (Да, примеры не очень реалистичны. Как бы то ни было. )
Новичок напишет так:
Очень просто, не так ли? Но код занимает 4 строки, содержит два уровня отступов и при этом делает тривиальную вещь. Можно уменьшить размер кода с помощью функции filter:
Аналогично функции map, о которой мы говорили выше, filter сокращает код, но выглядит довольно уродливо. Что, черт возьми, происходит? Как и map, filter получает функцию и список. Если функция от элемента возвращает true, элемент включается в результирующий список. Разумеется, мы можем сделать это через генератор списка:
Снова мы получили более короткий, ясный и понятный код.
2.1.3 Одновременное использование map и filter
Теперь мы можем использовать всю силу генератора списков. Если я вас еще не убедил, что map и filter тратят слишком много вашего времени, надеюсь, теперь вы со мной согласитесь.
Пусть требуется отобразить и отфильтровать список одновременно. Другими словами, я хочу увидеть квадраты элементов списка, меньших 4. Еще раз, неофит напишет так:
Увы, код начал растягиваться вправо. Может, получится упростить его? Попробуем использовать map и filter, но у меня плохое предчувствие…
Раньше map и filter было трудно читать, теперь — невозможно. Очевидно, это не лучшая идея. И снова генератор списков спасает ситуацию:
Получилось немного длиннее, чем предыдущие примеры с генератором списков, но, по моему мнению, вполне читабельно. Определенно лучше, чем цикл for или использование map и filter.
Как вы видите, генератор списков сначала фильтрует, а затем отображает. Если вам обязательно нужно наоборот, получится сложнее. Придется использовать либо вложенные генерации, либо map и filter, либо обычный цикл for, в зависимости от того, что проще. Но это уже выходит за рамки статьи.
Синтаксис генератора списков: [ element for variable(s) in list if condition ]
list — любой итерируемый элемент
variable(s) — переменная или переменные, которые приравниваются к текущему элементу списка, аналогично циклу for
condition — инлайновое выражение: если оно равно true, элемент добавляется в результат
element — инлайновое выражение, результат которого используется как элемент списка-результата
2.1.4 Выражения-генераторы
Существует обратная сторона генератора списков: весь список должен находиться в памяти. Это не проблема для маленьких списков, как в предыдущих примерах, и даже на несколько порядков больше. Но в конце концов это становится неэффективным.
Выражения-генераторы (Generator Expressions) появились в Python 2.4. Из всех фишек Python им уделяется, наверно, меньше всего внимания. Отличие их от генераторов списков состоит в том, что они не загружают в память список целиком, а создают ‘generator object’, и в каждый момент загружен только один элемент списка.
Конечно, если вы хотите использовать список для чего-нибудь, это не особо поможет. Но если вы просто передаете его куда-нибудь, где нужен любой итерируемый объект (цикл for, например), стоит использовать функцию генератора.
Выражения-генераторы имеют такой же синтаксис, как генераторы списков, но вместо квадратных скобок используются круглые:
Это более эффективно, чем использование генератора списков.
Итак, имеет смысл использовать выражения-генераторы для списков больших размеров. Если весь список целиком нужен вам для какой-то другой цели, то можно использовать любой из вариантов. Но использовать выражения-генераторы — хорошая привычка, если нет аргументов против этого. Правда, не надейтесь увидеть ускорение работы, если список небольшой.
В качестве финального штриха хочу заметить, что выражения-генераторы достаточно заключить в одни круглые скобки. Например, в случае, если вы вызываете функцию с одним аргументом, можно писать так: some_function(item for item in list).
2.1.5 Заключение
Мне не хочется этого говорить, но мы только прикоснулись к тому, что можно делать с помощью выражений-генераторов и генераторов списков. Здесь можно использовать всю силу for и if, а также оперировать с чем угодно, лишь бы оно было итерируемым объектом.
Синтаксис языка Python
Сегодня поговорим о синтаксисе в языке программирования Python. Сразу скажу он очень прост, как и сам язык.
Во первых стоит отметить интересную особенность Python. Он не содержит операторных скобок (begin..end в pascal или <..>в Си), вместо этого блоки выделяются отступами: пробелами или табуляцией, а вход в блок из операторов осуществляется двоеточием.
Несколько специальных случаев
Иногда возможно записать несколько инструкций в одной строке, разделяя их точкой с запятой:
Допустимо записывать одну инструкцию в нескольких строках. Достаточно ее заключить в пару круглых, квадратных или фигурных скобок:
Тело составной инструкции может располагаться в той же строке, что и тело основной, если тело составной инструкции не содержит составных инструкций. Например:
Комментирование в Python
Символ решетки (#) в Python обозначает начало комментария. Любые символы после решетки и до конца строки считаются комментариями и игнорируются интерпретатором. Например:
Кавычки в Python
В Python можно использовать одинарные ( ‘ ), двойные (“) и тройные (”’ или “””) кавычки чтобы обозначить строчный тип данных, при этом начинаться и заканчиваться строка должна одинаковыми кавычками. Строка занимающая несколько строк кода должна быть обрамлена тройными кавычками. Например:
Многострочные выражения
Выражения в Python, как правило, заканчиваются новой строкой. Однако, существует специальный символ переноса строки (\), показывающий, что с окончанием строки не заканчивается код. Например:
Идентификаторы в Python
Идентификаторы в Python это имена используемые для обозначения переменной, функции, класса, модуля или другого объекта. Идентификатор должен начинаться с буквы (от a до Z) или со знака подчеркивания (_), после которых может идти произвольное количество букв, знаков подчеркивания и чисел (от 0 до 9).
На этом урок окончен. Я постарался выделить главные аспекты синтаксиса. Понимание синтаксиса языка придет с практикой. Чем больше будете писать на Python, тем быстрее поймете и привыкните к его синтаксису.
Также советую почитать PEP 8 — руководство по написанию кода на Python. Данное руководство писали сами разработчики языка и оно обязательно к изучению для программиста на Python.
Видео по синтаксису в Python:
Python: экранирование кавычек
В этой краткой статье рассматривается использование одинарных, двойных и тройных кавычек в Python.
Одинарные и двойные кавычки — базовое использование
Чаще всего одинарные и двойные кавычки в Python используются при создании строк. В них заключается последовательность символов.
Строки, созданные с помощью одинарных и двойных кавычек, идентичны. Но нельзя их смешивать, так как это приведет к синтаксической ошибке.
Варианты экранирования
В Python если строка содержит специальные символы, такие как кавычки, мы должны экранировать их. Пример неправильного использования:
Чтобы не допустить эту ошибку, нужно экранировать одиночную кавычку, поставив перед ней обратную косую черту. Также можно использовать двойные кавычки вместо одинарных для обозначения строки:
Если строка содержит двойные кавычки, можно использовать одинарные. Тогда не придется экранировать двойные кавычки. Пример:
Но если в строке есть одинарные и двойные кавычки, и вы не экранируете содержащие строку, это приведет к синтаксической ошибке.
Тройные кавычки
Обозначение строк, содержащих одинарные и двойные кавычки
Мы можем использовать тройные кавычки (то есть три одинарные кавычки или три двойные кавычки) для представления строк с одинарными и двойными кавычками, чтобы исключить необходимость экранирования любых кавычек.
Например, для строки в приведенном выше коде использование тройных двойных кавычек приведет к синтаксической ошибке. Поэтому необходимо использовать тройные одинарные кавычки.
Многострочные строки
Также тройные кавычки используются для представления многострочной строки. Пример:
Этого же можно добиться, используя символ n для создания многострочных строк. Но это затрудняет чтение строки. А использование тройных кавычек позволяет записать строку так, как она есть.
Мы сразу видим, что является многострочным комментарием для функции.
Выводы
В этой статье мы рассмотрели применение одинарных, двойных и тройных кавычек в Python. Краткий обзор вариантов использования:
Одинарные и двойные кавычки
Тройные кавычки:
Дайте знать, что вы думаете по этой теме материала в комментариях. Мы очень благодарим вас за ваши комментарии, дизлайки, лайки, отклики, подписки!
Пожалуйста, оставьте свои мнения по текущей теме материала. Мы крайне благодарны вам за ваши комментарии, подписки, дизлайки, отклики, лайки!