Забудьте об использовании print() для отладки в python

Немного теории:

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

У машин есть данные, например количество колёс или сидячих мест. Также у них есть поведение: они могут разгоняться, останавливаться, показывать оставшееся количество топлива и другое.

В объектно-ориентированном программировании мы идентифицируем данные как атрибуты, а поведение как методы. Ещё раз:

Данные → Атрибуты; Поведение → Методы

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

Активировать объектно-ориентированный режим Python

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

Класс — это чертёж, модель для его объектов.

Ещё раз, класс — это просто модель, или способ для определения атрибутов и поведения(о которых мы говорили в теории выше). Например, класс машины будет иметь свои собственные атрибуты, которые определяют какие объекты являются машинами. Количество колёс, тип топлива, количество сидячих мест и максимальная скорость — всё это является атрибутами машин.

Держа это в уме, давайте посмотрим на синтаксис Python для классов:

Мы определяем классы class-блоком и на этом всё. Легко, не так ли?

Объекты это экземпляры классов. Мы создаём экземпляр тогда, когда даём классу имя.

Здесь car это объект(экземпляр) класса Vehicle.

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

Мы используем метод init. Мы называем этот конструктор-методом. Таким образом, когда мы создаём объект машины, мы можем ещё и определить его атрибуты. Представьте, что нам нравится модель Tesla S и мы хотим создать её как наш объект. У неё есть четыре колеса, она работает на электрической энергии, есть пять сидячих мест и максимальная скорость составляет 250 км/ч. Давайте создадим такой объект:

Четыре колеса + электрический “вид топлива” + пять сидений + 250 км/ч как максимальная скорость.

Все атрибуты заданы. Но как нам теперь получить доступ к значениям этих атрибутов? Мы посылаем объекту сообщению с запросом атрибутов. Мы называем это метод. Это поведение объекта. Давайте воплотим эту идею:

Это реализация двух методов: number_of_wheels и set_number_of_wheels. Мы называем их получатель и установщик. Потому что получатель принимает значение атрибута, а установщик задаёт ему новое значение.

В Python мы можем реализовать это используя @property для описания получателя и установщика. Посмотрим на это в коде:

Далее мы можем использовать методы как атрибуты:

Это немного отличается от описания методов. Эти методы работают как атрибуты. Например, когда мы задаём количество колёс, то не применяем два как параметр, а устанавливаем значение двойки для number_of_wheels. Это один из способ написать получать и установщик в Python.

Ещё мы можем использовать методы для других вещей, например создать метод “make_noise”(пошуметь).

Давайте посмотрим:

Когда мы вызовем этот метод, он просто вернётся строку “VRRRRUUUUM”.

Flushing in print

This is probably one of the most ignored concepts. Probably because we don’t see any direct impact while we are printing. But it is an important concept.

Usually, Python buffers the messages that you want to print until it gets a newline().

What is Buffer?

A buffer temporarily stores data that is being transmitted from one place to another in the main memory.

The argument ensures that everything in the buffer is immediately sent to the destination.

Let’s see this through an example. Instead of the default value for the argument (), we are going to leave it empty.

When you run the above snippet, the print message will only show up after the 5 seconds of sleep is over. Why? because print expects a or a newline at the end of every print statement. Hence, your message is in the buffer.

Using the argument, in Python 3, you can directly print the message to the standard output stream without having to wait for the sleep time to finish.

Try this out.

Examples

For..Else

for x in range(3):
    print(x)
else:
    print('Final x = %d' % (x))

Strings as an iterable

string = "Hello World"
for x in string:
    print(x)

Lists as an iterable

collection = 
for x in collection:
    print(x)

Loop over Lists of lists

list_of_lists = , , ]
for list in list_of_lists:
    for x in list:
        print(x)

Creating your own iterable

class Iterable(object):

    def __init__(self,values):
        self.values = values
        self.location = 0

    def __iter__(self):
        return self

    def next(self):
        if self.location == len(self.values):
            raise StopIteration
        value = self.values
        self.location += 1
        return value

Your own range generator using yield

def my_range(start, end, step):
    while start <= end:
        yield start
        start += step

for x in my_range(1, 10, 0.5):
    print(x)

Как изучать Python?

Синтаксис

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

Один из самых популярных — Computer Programming for Beginners: Fundamentals of Programming Terms and Concepts Натана Кларка

Книга написана простым языком — она поможет разобраться в терминологии, понять, что такое состояния, операторы и функции, чем объектно-ориентированное программирование отличается от функционального.
На русском языке можно обратить внимание на книгу преподавателя и разработчика Майкла Доусона «Программируем на Python» — книга хороша тем, что в ней не только теория, но и реальные кейсы, показывающие, как применять полученные знания на практике. После каждой главы Доусон поясняет тему на примере простой игры и предлагает задачи для закрепления материала.
Подробнее о функциях (часть приложения, выполняющая определенную задачу) можно узнать из книги Марка Луца «Изучаем Python».
Для тех, кто уже усвоил основы языка, но еще не умеет использовать все его возможности, будет полезной книга Лучано Рамальо «Python: к вершинам мастерства»

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

Подборка полезных видеоуроков на YouTube:

  • Python для начинающих — короткие видеоуроки, посвященные основам языка;
  • Видеоуроки Python — среди прочего тут есть, например, ролики, как редактировать видео на Python или работать с Википедией с помощью этого языка;
  • Clever Programmer — видеоуроки по программированию, советы и рекомендации, как прокачать свои навыки;
  • Telusko — более 100 роликов, посвященных Python: от начального до продвинутого уровня.

Python имеет несколько направлений, поэтому стеки и технологии, которые нужно знать новичку, зависят от специализации. Например, для начинающего веб-разработчика необходимо прежде всего знание фреймворков Django и Flask. Для дата-аналитики или дата-сайенс нужно уметь работать с библиотеками, предназначенными для обработки и анализа данных: NumPy, Pandas , Sklearn, TensorFlow

Для разработки десктоп-приложений в первую очередь важно знать библиотеку Tkinter и фреймворк PyQt5, для мобильной разработки — уметь работать в среде, для разработки игр — знать набор библиотек Pygame

Курс

Python для веб-разработки

Пройдите 9-месячный курс и научитесь  самостоятельно создавать и поддерживать сайты. Дополнительная скидка 5% по промокоду BLOG.

Узнать больше

Настройка среды разработки

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

Самый базовый редактор — IDLE. Гвидо ван Россум назвал его в честь одного из актеров «Монти Пайтона» — Эрика Айдла. C помощью этой среды разработки можно просматривать, редактировать, запускать и отлаживать программы на Python. IDLE поставляется вместе с дистрибутивом. Скачайте и запустите редактор и в открывшемся окне можете начинать писать код.

Практика: сервисы и сайты

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

Участвуйте в играх и квестах: например, chekio — это игра с заданиями разных уровней сложности и встроенной средой программирования или квест python challenge, в котором надо составить алгоритм, чтобы перейти к следующему шагу. Поискать задачки и упражнения также можно в соответствующем хабе на Хабре.

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

Method 4: Use the logging module

We can use Python’s logging module to print to the file. This is preferred over Method 2, where explicitly changing the file streams is not be the most optimal solution.

import logging

# Create the file
# and output every level since 'DEBUG' is used
# and remove all headers in the output
# using empty format=''
logging.basicConfig(filename='output.txt', level=logging.DEBUG, format='')

logging.debug('Hi')
logging.info('Hello from AskPython')
logging.warning('exit')

This will, by default, append the three lines to . We have thus printed to the file using , which is one of the recommended ways of printing to a file.

Сравнение pickle и JSON

Возможно, вы слышали о JSON (нотация объектов JavaScript), который является популярным форматом, который также позволяет разработчикам сохранять и передавать объекты, закодированные в виде строк. Этот метод сериализации имеет некоторые преимущества перед сохранением. Формат JSON удобочитаем, не зависит от языка и быстрее, чем pickle.

Однако у него есть и некоторые важные ограничения

Что наиболее важно, по умолчанию только ограниченное подмножество встроенных типов Python может быть представлено JSON. С помощью Pickle мы можем легко сериализовать очень широкий спектр типов Python и, что важно, настраиваемые классы

Это означает, что нам не нужно создавать настраиваемую схему (как мы делаем для JSON) и писать сериализаторы и парсеры, подверженные ошибкам. С Pickle вся тяжелая работа будет сделана за вас.

Conversion Types in Python Print function

The list of conversion types that are available in the Python print function. 

  • %c – Returns a Single character.
  • %d – Returns a Decimal Integer
  • %i – for Long integer
  • %u – Returns an unsigned decimal integer
  • %e, %E – Returns the floating-point value in exponential notation. 
  • %f – Returns the floating-point value in fixed-point notation. 
  • %g – Returns the shorter value of %f and %e
  • %G – Returns the shorter value of %f and %E
  • %c – Returns a Single character
  • %o – Returns an Octal value
  • %r – Generates string with repr()
  • %s – Converts the value to a string using str() function.
  • %x, %X – Returns the Hexadecimal integer.

Let me use all the available conversion types. For this, we declared a few variables with a numeric value, string, decimal value, and a character.

print function conversion types output

Python print file example

Here, we are opening a file pythonSample.txt (if it exists). Otherwise, it creates that text file in the default directory. Next, the print function prints the statement inside that text file.

Условный оператор if

Оператор if позволяет изменить порядок выполнения операторов в зависимости от истинности или ложности некоторого условия. Формат оператора может быть записан в двух формах: полной и неполной форме.

if  условие:    # блок if    <операторы>else:    # блок else    <операторы>

Блок инструкций if будет выполнен, если условие истинно. Если условие ложно, будет выполнен блок инструкций else.

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

Пример 5.  Записать следующее   выражение  на языке Python.Если a  >  0,  то  b  =  1,   иначе  a  =  0. 

print («Введите значение a: «) a = int(input())if a > :     b = 1       else:     b = print(«b = «, b)

Условный оператор  elif

if условие_1:   # блок if   <операторы>elif условие_2:   # первый блок elif   <операторы>elif условие_3:   <операторы>...else   # блок else   <операторы>   

Ключевое слово elifрасшифровывается, как else + if. Это конструкция позволяет  реализовать алгоритм  выбора   необходимого варианта из нескольких альтернативных вариантов.  Оператор elif позволяет упростить код. Сделать его легче читаемым и позволяет избежать написание несколько условий  if.

Когда исполняется инструкция if-elif-else, в первую очередь  проверяется условие_1.  Если условие истинно, тогда исполняется блок инструкций if .  Следующие условия и операторы пропускаются, и управление переходит к оператору  за  условным оператором if-elif-else.

Если условие_1 оказывается ложным, тогда управление переходит к следующему условию elif,  и проверяется условие_2.  Если оно истинно, тогда исполняются инструкции внутри первого блока elif. Последующие инструкции внутри этого блока пропускаются. Этот процесс повторяется, пока не находится условие elif, которое оказывается истинным. Если такого нет, тогда исполняется блок операторов else

 Пример.  

x = int(input())
y = int(input())if x > and y > print("Первая четверть")elif x > and y < print("Четвертая четверть")elif y > print("Вторая четверть")else: print("Третья четверть")

Библиотека math

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

import math           # подключение модуля библиотеки

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

имя_модуля.имя_функции

Например, пусть мы хотим вызвать функцию вычисления Синус угла, задаваемого в радианахimport math y = sin(5)         # ошибка не подключен модуль mathx = math.sin(5)    # записываем имя модуля и через точку имя функции

Можно подключать не весь модуль, а какую-то его часть. Например, программист хочет использовать только одну функцию из математической библиотеки math. Если он подключит всю библиотеку, то будет добавлено более 40 функций, которые будут занимать место. Чтобы добавить в проект какую-то часть, используют ключевое слово from

from <имя подключаемого модуля> import <название функции>

Например.

from math import sin       # подключена только одна функция siny = sin(5)                 # операция выполненаx = cos(5)               # ошибка функция cos не подключена

Ниже приведен список основных функций модуля math. Некоторые из перечисленных функций (int, round, abs) являются стандартными и не требуют подключения модуля math для использования.

A note on `range`

The function is seen so often in for statements that you might think range is part of the for syntax. It is not: it is a Python built-in function which returns a sequence following a specific pattern (most often sequential integers), which thus meets the requirement of providing a sequence for the for statement to iterate over. Since for can operate directly on sequences, and there is often no need to count. This is a common beginner construct (if they are coming from another language with different loop syntax):

mylist = 
for i in range(len(mylist)):
    # do something with mylist

It can be replaced with this:

mylist = 
for v in mylist:
    # do something with v

Consider for var in range(len(something)): to be a flag for possibly non-optimal Python coding.

Что такое сериализация в Python?

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

Объекты в Python также можно сериализовать с помощью модуля под названием Pickle.

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

Pickling (или сериализацию в целом) не следует путать со сжатием. Целью Pickling является перевод данных в формат, который может быть перенесен из ОЗУ на диск. С другой стороны, сжатие – это процесс кодирования данных с использованием меньшего количества бит (для экономии места на диске).

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

Printing multiple elements to the same line

We can use print to write multiple elements in a single line.

Print adds a whitespace between each object before writing it to the standard output. In Python 3, you can see a argument. It has been set to by default.

Both the below statements produce the same result.

The same thing happens with Python 2. However, there is no argument in Python 2. White space is added in between objects by default.

You can also pass in a different value to the argument in Python 3. For e.g., you could also use `|` as a separator while printing.

The above can’t be achieved with Python 2 using a print statement. However, you can use the built-in method in Python 2 to emulate the print function in Python 3.

self

 Рассотрим  пример. Пусть у нас есть объект  мяч  — ball , обладающий атрибутами и методами.

Атрибуты мяча  могут быть:

ball.color  - цвет, например, красныйball.size  -  размер, например, маленькийball.price – стоимость мяча

Методы нашего объекта  могут выглядеть следующим образом:

ball.Move( )  - перемещение мячаball.Show( ) – вывести характеристики (атрибуты) мяча  на экран

Переменная  self  указывает на конкретный объект экземпляра класса. Доступ к атрибутам   и методам  осуществляется через переменную self.  Это главное назначение переменной self.

Предположим мы создали три мяча — экземпляры класса Ball: ball1, ball2, ball3.Мячи могут иметь разные характеристики, например, как в таблице.

Объект

Self

Color

Size

Price

имя объекта

адрес объекта

ball1

адрес 1

адрес 1

Красный

Маленький

10

ball2

адрес 2

адрес 2

Синий

Средний

20

ball3

адрес 3

адрес 3

Белый

Большой

30

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

Предположим в классе Ball  имеется  метод  Show( ) – вывести характеристики мяча.

Распаковка

Теперь давайте раскроем содержимое тестового файла pickle и вернем наш объект к его исходной форме.

import pickle

with open('test_pickle.pkl', 'rb') as pickle_in:
    unpickled_list = pickle.load(pickle_in)

print(unpickled_list)

Как видите, эта процедура не сложнее, чем когда мы мариновали объект. В строке 3 мы снова открываем наш файл test_pickle.pkl, но на этот раз наша цель – прочитать (r) двоичные данные (b), хранящиеся в нем.

Затем, в строке 5, мы используем метод pickle.load(), чтобы распаковать наш список и сохранить его в переменной unpickled_list.

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

$ python unpickle.py

Printing to a newline

Check out this example code.

When you have multiple print statements, Python by default prints it to a newline.

In Python 2, a character is added to the end whereas, in Python 3, there is an argument that is set to by default.

However, you can change this default behavior.

To print multiple expressions to the same line, you can end the print statement in Python 2 with a comma ().

You can set the argument to a whitespace character string to print to the same line in Python 3.

With Python 3, you do have the added flexibility of changing the argument to print on the same line. For e.g.

In the above example, an asterisk() is being used for the argument.

There is no clean way to do that in Python 2. In order to achieve the above with Python 2, you would have to add the to the end of every line.

Список

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

Создание пустого списка

numbers = [] 

Создание списка чисел:

numbers =  # имя списка numbers, он содержит 5 элементов

Создание списка слов:

words =  # имя списка words, он  содержит 4 элемента

Создание списка из элементов разного типа

listNum =  # имя списка listNum,    список     содержит целые числа и строки

Для управления элементами списки имеют целый ряд методов. Некоторые из них:

append(item): добавляет элемент item в конец списка
insert(index, item): добавляет элемент item в список по индексу index
remove(item): удаляет элемент item. Удаляется только первое вхождение элемента. Если элемент не найден, генерирует исключение ValueError
clear(): удаление всех элементов из списка
index(item): возвращает индекс элемента item. Если элемент не найден, генерирует исключение ValueError
pop(): удаляет и возвращает элемент по индексу index. Если индекс не передан, то просто удаляет последний элемент.
count(item): возвращает количество вхождений элемента item в список
sort(): сортирует элементы. По умолчанию сортирует по возрастанию. Но с помощью параметра key мы можем передать функцию сортировки.
reverse(): расставляет все элементы в списке в обратном порядке

Кроме того, Python предоставляет ряд встроенных функций для работы со списками:

len(list): возвращает длину списка
sorted(list, ): возвращает отсортированный список
min(list): возвращает наименьший элемент списка

Method 3: Explicitly print to the file

We can directly specify the file to be printed in the call to , by mentioning the file keyword argument.

For example, the below snippet prints to the file .

print('Hi', file=open('output.txt', 'a'))
print('Hello from AskPython', file=open('output.txt', 'a'))
print('exit', file=open('output.txt', 'a'))

The file now has the three lines appended to it, and we have successfully printed to !

Using a context manager

However, this method isn’t the best way to resolve this situation, due to the repeated calls to on the same file. This wastes time, and we can do better!

The better way would be to explicitly use a context manager statement, which takes care of automatically closing the file and using the file object directly.

with open("output.txt", "a") as f:
    print('Hi', file=f)
    print('Hello from AskPython', file=f)
    print('exit', file=f)

This gives the same result as before, appending the three lines to , but is now much faster, since we don’t open the same file again and again.

Использование модуля

В следующем очень простом примере показаны основы использования модуля Pickle в Python 3:

import pickle

test_list = 

with open('test_pickle.pkl', 'wb') as pickle_out:
    pickle.dump(test_list, pickle_out)

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

В строке 5 мы указываем, что имя нашего выходного файла pickle будет test_pickle.pkl. Используя параметр wb, мы сообщаем программе, что хотим записать (w) двоичные данные (b) внутри нее (потому что мы хотим создать поток байтов)

Обратите внимание, что расширение pkl не обязательно – мы используем его в этом руководстве, потому что это расширение включено в документацию Python.

В строке 6 мы используем метод pickle.dump(), чтобы собрать наш тестовый список и сохранить его в файле test_pickle.pkl.

Я рекомендую вам попробовать открыть сгенерированный файл pickle в текстовом редакторе. Вы быстро заметите, что поток байтов определенно не является удобочитаемым форматом.

Method 2: Redirect sys.stdout to the file

Usually, when we use the print function, the output gets displayed to the console.

But, since the standard output stream is also a handler to a file object, we can route the standard output to point to the destination file instead.

The below code is taken from our previous article on stdin, stdout and stderr. This redirects the to the file.

import sys
 
# Save the current stdout so that we can revert sys.stdou after we complete
# our redirection
stdout_fileno = sys.stdout
 
sample_input = 
 
# Redirect sys.stdout to the file
sys.stdout = open('output.txt', 'w')
 
for ip in sample_input:
    # Prints to the redirected stdout (Output.txt)
    sys.stdout.write(ip + '\n')
    # Prints to the actual saved stdout handler
    stdout_fileno.write(ip + '\n')
 
# Close the file
sys.stdout.close()
# Restore sys.stdout to our old saved file handler
sys.stdout = stdout_fileno

Output (Assume that is a newly created file)

:~# python output_redirection.py
Hi
Hello from AskPython
exit
:~# cat output.txt
Hi
Hello from AskPython
exit

Что можно сериализовать?

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

  • Все собственные типы данных, поддерживаемые Python (логические, None, целые числа, числа с плавающей запятой, комплексные числа, строки, байты, байтовые массивы).
  • Словари, наборы, списки и кортежи – если они содержат выбираемые объекты.
  • Функции и классы, определенные на верхнем уровне модуля.

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

В этом случае смешивание версий может вызвать множество проблем.

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

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

Заключение

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

У Pickling есть некоторые недостатки, самый большой из которых может заключаться в том, что вы можете распаковать свои данные только с помощью Python – если вам нужно кросс-языковое решение, JSON определенно лучший вариант. И, наконец, помните, что сериализованные объекты можно использовать для переноса кода, который вы не обязательно хотите выполнять.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector