Какие типы файлов существуют в python

Обновлено: 05.07.2024

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

Основываясь на типе данных переменной, интерпретатор выделяет необходимое количество памяти и решает, что может находится в зарезервированной области памяти.

Для понимания, можете думать о переменной как о коробке, в которую можно положить любую вещь, но только определенного размера. Размер в данном примере будет типом переменной. Это не совсем верное определение, но оно дает общее представление о картине в целом.

Присвоение значения переменной:

В Python вам не нужно объявлять тип переменной вручную (как, например в С++). Объявление происходит автоматически (это называется динамическая типизация), когда вы присваиваете значение переменной. Знак равенства ( = ) используется для присвоения значения переменной.

Операнд по левую сторону от знака равно ( = ) это имя переменной, операнд по правую сторону - значение присвоенное этой переменной.

При выполнении, данный код выведет:

Множественное присвоение значений:

В Python возможно присваивать одно значение нескольким переменным сразу. Например:

В данном создается объект со значением 1, и все 3 переменные указывают на область в памяти, в которой он находится.

Встроенные типы данных в Python:

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

К стандартным типам данных в Python относят:

Числовой тип данных в Python:

Числовой тип данных в Python предназначен для хранения числовых значений. Это неизменяемый тип данных, что означает, что изменение значения числового типа данных приведет к созданию нового объекта в памяти (и удалению старого)

Числовые объекты создаются, когда вы присваиваете им значение. Например:

Также вы можете удалять числовой объект при помощи ключевого слова del. Синтаксис команды del следующий:

В Python есть четыре вида числового типа данных:

  • int (целое число)
  • long (длинное целое число [может быть представлено в восьмеричной или шестнадцатеричной системе исчисления])
  • float (число с плавающей точкой: -0.2, 0.0, 3.14159265 и т.д.)
  • complex (комплексное число)

Примеры видов числового типа данных:

Строки в Python:

Под строками в Python подразумевается набор символов между кавычками. В Python можно использовать пары одинарных либо двойных кавычек. Из строк можно взять подстроку используя оператор нарезки ( [ ] и [ : ] ) с индексами от нуля для первого символа строки и до последнего. Так же можно использовать обратную индексацию от -1 для последнего символа до начала.

Оператор плюс ( + ) для строк соединяет две строки в одну, звездочка ( * ) оператор повторения. Например:

В результате вы увидите следующее

string slicing python, нарезка строк в python

Списки в Python:

Списки, пожалуй, самый универсальный составной тип данных в Python. Список состоит из элементов, разделенных запятыми, находящихся между квадратными скобками ( [ ] ). В определенной мере, списки подобны массивам в C. Единственной разницей является то, что элементы одного списка могут иметь разные типы данных.

Получить доступ к элементам, сохраненным в списке можно, точно так же, как и в строках, при помощи оператора нарезки ( [ ] и [:] ) и индексов, начиная с нуля и до конца. Знак плюс ( + ) объединяет два списка, а звездочка ( * ) - оператор повторения для списка. Например:

В результате вы увидите :

Кортежи в Python:

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

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

В результате вы получите:

При этом, следующие действия доступны для списков и недоступны для кортежей:

Словари в Python:

Словари в Python это неотсортированная колекция элементов, доступ к которым осуществляется по ключу. То есть, каждому ключу словаря соответствует определенное значение. Ключом может быть любой неизменяемый тип данных (число, строка, кортеж), значением - любой тип данных.

Пары ключ, значение словаря заключаются в фигурные скобки ( < >). Есть несколько способов создания словарей:

Данный код выведет следующее:

python dictionaries, словари в python

Обратите внимание, что ключи и значения выводятся не в том порядке, в котором мы их задавали.

Сеты в Python:

Сет в Python это еще один изменяемый, коллекционный тип данных, отличительной чертой которого является то, что он хранит только уникальные значания.

Создать сеты можно следующими способами:

Для добавление элемента в сет используется метод add, для удаления - pop или remove. Добавление в сет уже существующего элемента не повлияет на сет. Сеты обладают множеством методов для работы с уникальными элементами, например difference - возвращает элементы сета отсутствующие в другом сете, intersection - наоборот, возвращает елементы сета присутствующие в другом сете.

python set, сеты в Python

Преобразование типов данных:

Иногда может возникнуть необходимость преобразовать один тип данных в другой. Для этого существуют специальные встроенные функции Python. Вот некоторые из них:

Преобразовывает х в целое число. Например, int(12.4) -> 12

Преобразовывает х в long. Например, long(20) -> 20L

Преобразовывает х в число с плавающей точкой. Например float(10) -> 10.0

Создает комплексное число. Например complex(20) -> (20+0j)

Преобразовывает х в строку. Например str(10) -> '10'

Преобразовывает s в кортеж. Например tuple("hello") -> ( "h","e","l","l","o" )

Преобразовывает s в список. Например list("Python") -> [ "P","y","t","h","o","n" ]

Python понимает все популярные форматы файлов. Кроме того, у каждой библиотеки есть свой, «теплый ламповый», формат. Синтаксис, разумеется, у каждого формата сугубо индивидуален. Я собрал все функции для работы с файлами разных форматов на один лист A4, с приложением в виде примера использования в jupyter notebook.




Я условно разделил форматы на три блока по способу использования. Как известно, файлы нужны для обмена информацией: между людьми, между программами (первый блок), между компьютером и сетью (второй) и «save game» – между одной и той же программой в разные моменты времени (третий блок).

Вкратце о каждом блоке:

1) Универсальные форматы:

  • .csv – текстовый, значения, разделённые по идее запятыми (comma separated), но например, русский эксель предпочитает разделять точками с запятыми, поскольку в русской локали запятая уже используется – в качестве десятичного разделителя;
  • .raw – бинарный формат для тех, кто не любит форматы файлов. Тип данных и, если данные многомерные, соответствующие размеры должны передаваться отдельно, в файле только сами данные;
  • .xls/.xlsx – старый бинарный (ограничение в 65k строк) и новый xml’ный форматы экселя;
  • .mat – это на самом деле тоже два формата (оба бинарные): старый проприетарный и новый на основе hdf5. Питон умеет работать с обоими (через библиотеки).
  • .json – текстовый, выглядит как словарь в питоне, но кавычки можно использовать только двойные;
  • .xml – текстовый, похож на html.

  • .pkl – бинарный формат, в него умеют сохраняться все встроенные питоновские объекты. Пользовательские классы тоже умеют, а если питон сохраняет как-то не так, можно ему помочь через магические методы. Поддерживает дописывание в конец существующего файла (appending).
  • .npy и .npz – в numpy аж целых два своих формата (оба бинарные). Появились как реакция на потерю обратной совместимости у pkl в момент перехода python v2->v3. Накладные расходы минимальные (

на 100 байт больше, чем соответствующий raw; pkl, впрочем, немногим больше: на

a) небольшие файлы занимают неоправданно много места (например, 300 байт pkl vs 3.1 Мb у h5),
b) много багов,
c) есть дописывание в существующий файл, но если при этом случится ошибка (а так бывает), данные из него достать будет проблематично.


– в формате pdf
– в формате png:

Пример использования всех функций с диаграммы: html с оглавлением и ipynb-исходником

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

Проиллюстрировать фундаментальность объектов в разрезе Питона можно, приведя пример общего вида программы на этом языке. Итак:

  1. Программа состоит из модулей;
  2. Модуль, в свою очередь, представляет собой набор инструкций;
  3. Инструкции содержат выражения;
  4. Выражения служат для создания и обработки объектов;

Ну и вполне закономерно, что объекты можно классифицировать по их типам.

Что такое динамическая типизация

Прежде, чем мы приступим к рассмотрению наиболее употребляемых типов данных в Python, проведём небольшую параллель с другими языками программирования. Всё их множество можно разделить на две составляющие:

  • типизированные языки;
  • нетипизированные (бестиповые) языки.

Нетипизированные языки в основной своей массе сосредоточены на низком уровне, где большинство программ напрямую взаимодействует с железом. Так как компьютер "мыслит" нулями и единицами, различия между строкой и, допустим, классом для него будут заключаться лишь в наборах этих самых 0 и 1. В связи с этим, внутри бестиповых языков, близких к машинному коду, возможны любые операции над какими угодно данными. Результат на совести разработчика.

Python же — язык типизированный. А, раз в нём определено понятия "типа", то должен существовать и процесс распознания и верификации этих самых "типов". В противном случае вероятны ситуации, когда логика кода окажется нарушенной, а программа выполнится некорректно.

Таким процессом и является типизация. В ходе её выполнения происходит подтверждение используемых типов и применение к ним соответствующих ограничений. Типизация может быть статической и динамической. В первом случае, проверка выполняется во время компиляции, во втором — непосредственно во время выполнения программного кода.

Python — язык с динамической типизацией. И здесь, к примеру, одна и та же переменная, при многократной инициализации, может являть собой объекты разных типов:

В языке со статической типизацией такой фокус не пройдёт:

💭 Адепты и приверженцы разных языков часто спорят о том, что лучше: динамическая типизация или статическая, но, само собой, преимущества и недостатки есть и там, и там.

👍 К плюсам динамической типизации можно отнести:

1 . Создание разнородных коллекций. Благодаря тому, что в Python типы данных проверяются прямиком во время выполнения программного кода, ничто не мешает создавать коллекции, состоящие их элементов разных типов. Причём делается это легко и просто:

2 . Абстрагирование в алгоритмах. Создавая на Питоне, предположим, функцию сортировки, можно не писать отдельную её реализацию для строк и чисел, поскольку она и так корректно отработает на любом компарируемом множестве.

3 . Простота изучения. Не секрет, что изучать Питон с нуля гораздо легче, чем, например, Java. И такая ситуация будет наблюдаться не только для этой пары. Языки с динамической типизацией в большинстве своём лучше подходят в качестве учебного инструмента для новичков в программировании.

🙁 К минусам же динамической проверки типов можно отнести такие моменты, как:

1 . Ошибки. Ошибки типизации и логические ошибки на их основе. Они достаточно редки, однако зачастую весьма сложно отлавливаемы. Вполне реальна ситуация, когда разработчик писал функцию, подразумевая, что она будет принимать числовое значение, но в результате воздействия тёмной магии или банальной невнимательности, ей на вход поступает строка и …функция отрабатывает без ошибок выполнения, однако её результат, — ошибка, сам по себе. Статическая же типизация исключает такие ситуации априори.

2 . Оптимизация. Статически типизированные языки обычно работают быстрее своих динамических братьев, поскольку являются более "тонким" инструментом, оптимизация которого, в каждом конкретном случае, может быть настроена более тщательно и рационально.

Так или иначе, сказать, что "одно лучше другого" нельзя. Иначе "другого" бы не было. Динамически типизированные языки экономят уйму времени при кодинге, но могут обернуться неожиданными проблемами на этапе тестирования или, куда хуже, продакшена. Однако вряд ли кто-то будет спорить с тем, что динамический Python куда более дружелюбный для новичков, нежели статический C++.

Разница между атомарными и структурными типы данных

По одной из классификаций все типы данных в Python делятся на атомарные и ссылочные.

  • списки;
  • кортежи;
  • словари;
  • функции;
  • классы;

Разница между этими двумя группами уходит глубоко в корни языка. Вкратце:

Атомарные объекты, при их присваивании, передаются по значению, а ссылочные — по ссылке

Из результатов видно, что переменной btom было присвоено именно значение, содержащееся в atom, а не ссылка, указывающая на область памяти.

Посмотрим, как это работает для структурных типов:

Поскольку списки — это ссылочные объекты, то вполне закономерно, что после присваивания переменной link переменной alin передалась именно ссылка на объект list-а и, при печати, на экран были выведены две одинаковые надписи.

Собственно, в этом и вся разница.

Числовые типы

"Все сущее есть Число" — сказал однажды мудрый грек по имени Пифагор. Числа — важнейший и фундаментальнейший из всех типов данных для всех языков программирования. В Python для их представления служит числовой тип данных.

int (целое число)

Концепция целых чисел проста и естественна. Это числа без дробной части, которые, говоря математическим языком, являются расширением натурального ряда, дополненного нулём и отрицательными числами.

Там, где есть числа, есть и математика. Поэтому резонно, что целые числа используются для исчисления всевозможных математических выражений. Также int применяется в качестве описаний количественных свойств какого-либо объекта.

float (число с плавающей точкой)

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

print(0.3 + 0.3 + 0.3) > 0.8999999999999999 print(0.3 * 3 == 0.9) > False

В плане записи, float ничем не отличаются от int :

В плане использования — тоже, разве что в любых мало-мальски серьёзных вычислениях без float никуда.

complex (комплексное число)

Привет высшей математике! Как вещественный ряд расширяет множество рациональных чисел, так и ряд комплексных чисел расширяет множество вещественных. Показательной особенностью комплексного ряда является возможность извлечения корня из отрицательных чисел.

В Python комплексные числа задаются с помощью функции complex() :

Помните, что операция сравнения для комплексных чисел не определена:

Комплексные числа широко применяются, например, для решения дифференциальных уравнений.

Числа в Python и операции над ними

bool (логический тип данных)

В каком-то смысле наиболее простой и самый понятный из всех типов данных. У bool есть всего два значения:

Однако за этой простотой кроется колоссальный пласт теории в виде булевой алгебры.

Переменные логического типа нужны для реализации ветвлений, они применяются для установки флажков, фиксирующих состояния программы, а также используются в качестве возвращаемых значений для функций, названия которых, зачастую, начинаются на "is" (isPrime, isEqual, isDigit). То есть тех, которые, на человеческом языке, отвечали бы на вопрос одним словом "Да" или "Нет".

Логический тип данных

Последовательности

Ещё одно понятие из математики. Там, последовательность — есть нумерованный набор элементов, в котором возможны их повторения, а порядок имеет значение. Определение Питона схоже с математическим: здесь последовательностью зовётся упорядоченная коллекция объектов.

str (строка)

Строки, пожалуй, единственный объект, который может сравниться по степени своей используемости с числовым типом данных. Тавтологическое, но полное определение, справедливое для Python звучит так:

строка — это последовательность односимвольных строк.

Важность строк велика в первую очередь для людей, ведь понятно, что вся письменная речь может рассматриваться, как множество строк. А так как человеку свойственно обмениваться информацией именно в виде набора слов, то можно говорить о практически неограниченном количестве областей применения строкового типа данных. Строки, строки everywhere!

Строки и функции для работы с ними

list (список)

Список — это ещё один вид последовательностей. Здесь стоит остановиться и отметить, что последовательности в Python бывают изменяемыми и неизменяемыми. Список — изменяемая последовательность, а строки и кортежи — нет. Таким образом, список можно определить, как упорядоченную и изменяемую коллекцию, состоящую из объектов произвольных типов.

Само название списков говорит об их предназначении быть объектами для хранения наборов данных. Список покупок, подарков, результатов матчей, ip клиентов или объектов типа Student. Списки в Python — это эдакие массивы из прочих языков "на максималках".

Работа со списками в Python

tuple (кортеж)

Кортежи в языке Python можно рассматривать, как неизменяемые списки со всеми вытекающими:

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

Кортежи в Python

dict (словарь)

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

Применяются они, когда для работы требуется тип данных концептуально схожий с обычным телефонным справочником, где каждая запись — есть пара сопоставленных друг с другом значений, по одному из которых (уникальному ключу) можно получить второе (собственно, значение).

Словари в Python

set (множество)

Ещё один "набор, но не последовательность".

Мы хотим видеть множество, если нам не существенен порядок элементов, но важна их уникальность.

Множества в Python

Работа с файлами, хранящимися где-то на внешнем носителе, в Python реализована в виде объектов-файлов. Они относятся к объектам базового типа, но обладают весьма характерной чертой: нельзя создать экземпляр объекта-файла при помощи литералов.

Чтобы начать работу с файлами, нужно вызвать функцию open() и передать ей в качестве аргументов имя файла из внешнего источника и строку, описывающую режим работы функции:

Операции с файлами могут быть разными, а, следовательно, разными могут быть и режимы работы с ними:

  • r — выбирается по умолчанию, означает открытие файла для чтения;
  • w — файл открывается для записи (если не существует, то создаётся новый);
  • x — файл открывается для записи (если не существует, то генерируется исключение);
  • a — режим записи, при котором информация добавляется в конец файла, а не затирает уже имеющуюся;
  • b — открытие файла в двоичном режиме;
  • t — ещё одно значение по умолчанию, означающее открытие файла в текстовом режиме;
  • + — читаем и записываем.

range object (a type of iterable)

Крутая особенность языка Python состоит в наличии в нём встроенной функции range() , которая способна генерировать непрерывную последовательность целых чисел:

Она крайне удобна для создания циклов for .

None — специальный объект внутри Питона. Он означает пустоту, всегда считается "Ложью" и может рассматриваться в качестве аналога NULL для языка C/С++. Помимо этого, None возвращается функциями, как объект по умолчанию.

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

Работа с типами в Python

Как проверить тип данных

Нет ничего проще, чем узнать тип данных объекта в Python:

Как поменять тип данных

В богатом арсенале Питона есть встроенные функции для приведения типов — int() , list() , set() , tuple() , str() , bin() .

☝️ Обратите внимание : встроенная функция для приведения типа не модифицирует переданное значение, а возвращает новое значение другого типа.

Отличие type() от isinstance()

В отличие от type() , функция isinstance() возвращает не тип данных аргумента, а булево значение, говорящее о том, принадлежит объект к определенному классу или нет:

num = 4.44 print(isinstance(num, float)) > True

А ещё isinstance() умеет проверять принадлежность объекта хотя к одному типу из кортежа, переданного в качестве второго аргумента:

Важным отличием также является то, что isinstance() "знает" о наследовании. Функция воспринимает объект производного класса, как объект базового.

class BaseExample: pass class DerivedExample(BaseExample): pass test = DerivedExample() print(isinstance(test, BaseExample)) > True

Базовые конструкции языка Python: Типы данных, операции, множества и списки, функции, ввод-вывод и работа с файлами (кратко).

Первая программа и основные элементы синтаксиса

Простейшая программа на языке Python не требуется подключения каких-либо библиотек, заголовочных файлов и даже использования функции Main() как в C++:

Посколку Python - язык интерпретируемый, то такая программа называется сценарием или скриптом .

Мы используем версию Python3. Поэтому запуск данного скрипта на выполнение осуществляется следующим образом:

Если в консоли набрать python3 без параметров, то будет запущен >, в котором удобно осваивать язык.

Инструкции в Python заканчиваются переводом строки. При этом нет необходимости ставить точку с запятой (как, например, в C++), хотя ее постановка не будет ошибкой. Точка с запятой используется, если возникает необходимость разместить несколько инструкций в одной строке, например

Типы данных

Python --- язык со строгой динамической типизацией. Строгая типизация означает, что переменная в любой момент времени имеет точно определенный тип. В языке Python тип переменной легко определить с помощью функции type :

Здесь знак > ( = ) --- оператор присваивания. Это аналогично синтаксису языков C/C++/JAVA. Однако в отличие от них, в Python нет необходимости объявлять тип переменной. Он определяется автоматически в ходе выполнения программы (динамическая типизация. Более того, переменная может изменить свой тип в ходе выполненения программы, если ей будет присвоено новое значение другого типа. Как говорят, в языке Python >. Удобство такого подхода проявится, например, при написании функции. Таким образом, имена переменных в Python --- это только ссылки на объекты. Они не хранят информацию о типе объекта.

К основным встроенныем типам данных языка Python относятся числа, строки, множества, списки, кортежи и словари. Рассмотрим их подробнее (в скобках будет указан тип данных, возвращаемый функцией type ).

- Числовые типы, которые включают целые ( int и long ), вещественные ( float ) и комплексные ( complex ) числа.

- Строка ( str ) --- последовательность символов Юникода. Строки заключаются в кавчики либо в апострафы (оба варианта равноценны). Например, "Python" или 'Python' .

- Множество ( set ). Пример множества: .

- Список ( list ) --- упорядоченная последовательность значений произвольных типов. Пример списка: [1,2,3] .

- Кортежь ( tuple ) --- тоже список, только неизменяемый. Пример кортежа: (1,2,3) .

- Словарь ( dict ) --- неотсортированная колекция элементов, доступ к которым осуществляется по ключу. Пример словаря: . По большому счету словарь в Python --- это список кортежей.

- Логический тип ( bool ), переменные которого могут принимать только два значения: True и False .

В Python все типы данных реализованы в виде объектов, причем для них наиболее важные операторы уже перегружены. Поэтому работат с базовыми типами можно двумя способами: либо посредством вызова методов объектов, либо использовать перегруженные операторы.

Продемонстрируем сказанное на примере класса int , реализующего целые числа. Для этого класса перегружены базовые операторы + , - , * , / и ** (возвещение в степень), соответствующие основные арифметическим операция. Например, код

может быть записан в эквивалентном виде с использованием метода __add__() класса int :

Но, конечно, так никто не пишет.

Узнать полный список методов любого класса можно посредством функции dir , указав нужный класс в качестве аргумента этой функции. Например,

Для получения более детальной справки о классе и его методах используйте функцию help :

Среди полезных возможностей Python следует отметим возможность работы с комплексными числами. Мнимая единица задается как 1j либо 1J . Например,

Кроме того, существует модуль fractions , который поддерживает работу с рациональными дробями, однако мы не будем его здесь рассматривать.

%Однако его здесь рассматривать не будем. Вместо этого перейдем к обзору более сложных типов данных и операций над ними.

Списки

Списки в Python --- это аналог массивов из других языков программирования. Поэтому они используются довольно часто. Списки в Python задаются в виде последовательности элементов, перечисленных через запятую и заключенных в квадратные скобки с обоих сторон. При этом элементы списка могут иметь любой тип (не обязательно одинаковый), в частности, они могут быть тоже списками. Рассмотрим некоторые часто используемые операции над списками.

Получить элемент списка можно, указав его номер в квадратных скобках после имени списка:

Заметим, что нумерация элементов списка в Python начинается с нуля.

Выполнить конкатенацию (объединение) двух списков можно с помощью перегруженного оператора + ( >):

Кроме того, класс list имеет набор различных методов для вставки и удаления элементов из списка: append(), insert(), remove(), pop(). А также методы для сортировки элементов списка: sort() и reverse().

Например, метод insert() используется для вставки нового элемента в середину (или начало) списка. Первый аргумент этого метода указывает позицию, куда нужно вставить элемент, а через второй аргумент передается сам элемент:

Узнать длину списка можно с помощью функции len() .

Сделаем важное замечание относительно операция присваивания = . Эта операция не производит копирование списка, а только создает еще одну ссылку на тот же список (т.е. хранящийся в той же области памяти). Это сделана для экономии ресурсов, однако может привести к неожиданным результатам при неправильном использовании. Рассмотрим пример.

Если же нам нужно сделать реальную копию списка, то для этих целей существует метод copy() .

Это замечание справедливо и для всех остальных встроенных типов данных языка Python. В общем случае для операции присваивания действуют следующие правила:

--- Инструкция присваивания всегда создает ссылку на объект (но не создает копии объектов).

--- Переменные создаются при первом присваивании.

--- Перед использованием переменной ей должно быть присвоено значение.

Множества

В отличие от списков, множества не могут содержать повторяющихся элементов.

Для работы с множествами предусмотрены методы union(), intersection(), difference(), issubset(), смысл которых ясен из их названия. Посмотрим, как это выглядит на практике.

Эти же операции можно записать в более компактной форме, используя перегруженные операторы:

%Заметим, что этот способ компактнее и нагляднее. Обозначения этих теоретико-множественных операций совпадают с соответствующими операциями над булевыми типами (что не должно удивлять).

Также имеются операции нахождения разности множеств ( A - B ) и симметрической разности ( A ^ B ).

Кроме того, существуют операции над множествами, которые возвращают логическое значение истина или ложь. К ним относится операция сравнения двух множеств ( A == B ), проверка вложенности одного множества в другое ( A ), принадлежность элемента множеству ( x in A ) и другие.

Мощность множества A (т.е. количество элементов в нем) можно получить с помощью функции len(A) .

Cтроки

Строки в Python --- это не просто массив символов. В Python строки реализованы в виде отдельного класса. Однако операции над строками очень похожи на операции над списками. Например, конкатенация строк (оператор + ), получение символа по индексу (оператор [] ), получение длины строки (функция len() ), повторение строки (с помощью опертора * ) и другие. Следующий пример демонстрирует работу со строками.

Получение подстроки. Оператор извлечения среза из строки выглядит так: [X:Y]. X --- это индекс начала среза, а Y --- его окончания; причем символ с номером Y в срез уже не входит. Если отсутствует первый индекс, то срез берется от начала до второго индекса; при отсутствии второго индекса, срез берется от первого индекса до конца строки.

Операторы сравнения

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

Операторы сравнения производят сравнение двух элементов одного класса и в качестве результата возвращают константы True или False. Основные операторы сравнения: равно ( == ), не равно ( != ), меньше ( ), больше ( > ), не меньше ( >= ), не больше ( >= ). Например, для числовых типов:

Кроме того, операторы сравнения перегружены для некоторых других (не числовых) классов. Например, как уже было отмечено выше, применительно к множествам операторы и > означают проверку на включение:

Логические операции

Для переменных логического типа bool определены следующие операторы: and , or и and . Пример использования этих операторов:

Преобразование типов данных

Язык Python допускает неявное преобразование типов. Например, если сложить целое (int) и вещественное (float) числа, то результатом будет число типа float :

Явное преобразование из одного типа в другой имеет следующую форму: тип(значение) . Рассмотрим пример преобразования строки в число типа float:

Еще один полезный пример --- преобразования строки в список символов:

% это можно опустить:

Правда, в обратную сторону этот способ (через str() ) не сработает. Точнее, результат будет не совсем тот, что можно ожидать:

Для получения исходной строки нужно использовать специальный метод join() :

Блоки, циклы и ветвления

Оператор ветвления представлен единственной условной инструкцией if .

В Python отсутствует оператор множественного выбора (switch -- case) как в C++ или JAVA. Для этих целей используется полная конструкция if / elif / else , общая форма которой имеет следующий вид:

Для реализации циклов в Python присутствуют стандартные инструкции for и while . Инструкция for всегда используется в связке с ключевым словом in и предназначена для обхода всех элементов списка, множества и любых других последовательностей. Например,

Стандартная форма цикла while следующая:

Совместно с инструкциями циклов могут использоваться стандартные инструкции break и continue , а также менее стандартные инструкции --- pass и else . Инструкция pass --- это пустая инструкция, которая ничего не делает. Инструкция else располагается после цикла и всегда выполняется в том случае, если цикл завершается обычном способом (без прерывния с помощью break ).

Сделаем сразу замечание относительно выделения блоков кода. В отличие от многих других языков программирования, в Python отсутствуют какие-либо ключевые слова или конструкции для выделения блока (как, например, begin. end в языке Паскале или фигурные скобки в C++). Вместо этого используются горизонтальные отступы для того, чтобы дать понять интерпретатору, где заканчивается данный блок. Например,

В этом примере 2-ая и 3-я строки кода включены в тело цикла for и поэтому будут выполнены дважды (для x=1 и x=2), а инструкция 4-ой строки расположена после окончания цикла, и значит выполнится только один раз (для x=2).

Для формирования последовательностей чисел с заданным шагом существует функция \\

range(start, stop, step) . Если step>0 , то она возвращает возврастающую последовательность чисел с условием

где i --- целое неотрицательное число. Например,

Функция range часто используется в циклах. Например, следующий код напечатает в консоль последовательность чисел 0, 2, 4, 6, 8.

Кроме того, range вместе с for часто используются для генерации списков (или других последовательностей), что демонстрирует следующий пример:

Функции

Как и в большинстве языков программирования, в Python можно определять собственные функции. Для создания функции предназначена5 инструкция def . Ниже показан пример определения функции:

По умолчанию все переменные внутри функции локальные, т.е. находится в локальной области видимости. Это вполне естественный подход. Однако есть возможность обратиться и к глобальным переменным, объявленным вне функции. Для этого имеются ключевые слова global и nonlocal .

Еще одни способ задания функций --- использование лямбда-нотации:

Или даже так, без присвоения имени функции:

Такие анонимные (или лямбда-функции) составляют основу функционального программирования.

Передача параметров по ссылке/по значению Все параметры передаются по ссылке. Однако если переменная связана с неизменяемым значением, например int, str, tulpe, то естественно, это значение не изменится. А вот если переменная связана со списком, словарем или классом, то значение связанного с переменной объекта изменится.

Ввод-вывод

Для считывания строки с консоли используется функция input , а для вывода на консоль --- функция print .

Файлы и каталоги

Чтение/запись данных из файла можно проводить с помощью методов read() и write() соответственно. Перед началом работы с файлом его необходимо открыть с помощью функции open() , а после окончания работы --- закрыть посредством close() . Типичный пример работы с файлом (в текстовом режиме):

Читайте также: