Найти в Дзене
__init__

Всякие штуки в Питоне. Выпуск 2

Отличие == и is Представим, что у нас есть два близнеца и фотоаппарат. Мы фотографируем одного близнеца и у нас получается фотография. И теперь хотим к ним применить операторы == и is.
Оператор == проверяет равенство. Это как если смотреть на наших близнецов и сказать, что они выглядят одинаково. (хотя они 2 разных человека) Оператор is проверяет на идентичность. Это как если смотреть на фотографию и сказать, что на фотографии тот же самый человек. Далее a - близнец номер один, b - его фото, с - близнец номер два. Мы видим ответ на два вопроса: 1) Выглядит ли то, что изображено на b, так же, как a? 2) Является ли то, что изображено на b, тем же объектом, что и a? А теперь мы создадим близнеца объекта а Мы видим ответ на два вопроса: 1) Выглядит ли с, так же, как a? 2) Является ли с, тем же объектом, что и a? Если подытожить, оператор == проверяет равенство значений, а is равенство объектов. __repr__ и __str__ полезные магические функции Функции __repr__ и __str__ позволяю
Оглавление

Отличие == и is

Представим, что у нас есть два близнеца и фотоаппарат. Мы фотографируем одного близнеца и у нас получается фотография. И теперь хотим к ним применить операторы == и is.

Оператор
== проверяет равенство. Это как если смотреть на наших близнецов и сказать, что они выглядят одинаково. (хотя они 2 разных человека)

Оператор is проверяет на идентичность. Это как если смотреть на фотографию и сказать, что на фотографии тот же самый человек.

Далее a - близнец номер один, b - его фото, с - близнец номер два.

Мы видим ответ на два вопроса:

1) Выглядит ли то, что изображено на b, так же, как a?

2) Является ли то, что изображено на b, тем же объектом, что и a?

А теперь мы создадим близнеца объекта а

-2

Мы видим ответ на два вопроса:

1) Выглядит ли с, так же, как a?

2) Является ли с, тем же объектом, что и a?

Если подытожить, оператор == проверяет равенство значений, а is равенство объектов.

__repr__ и __str__ полезные магические функции

Функции __repr__ и __str__ позволяют питону понять, что ты хочешь от него, когда пишешь код вида str(X) или просто X ( например в том же Jupyter). Приведу пример:

-3

Мы видим, что эти функции вызываются в двух разных случаях: одна - при конвертации в строку, вторая - при инспектировании.

И если __str__ можно реализовать для красивой печати куда-либо, то __repr__ стоит реализовать так, чтобы можно было восстановить объект по ее возвращаемому значению.
Вот так это реализовано в datetime:

-4

Вот так можно реализовать эти методы для нашей пиццы:

-5

Определение своих собственных исключений

Есть несколько способов определить свои исключения:

  • через pass
  • через ellipsis (...)
  • через комментарий к классу

Примеры

-6

P.S.

Иногда Python ведет себя очень странно...

Значения от -5 до 256 создаются на старте проги, так как они очень часто используются
Значения от -5 до 256 создаются на старте проги, так как они очень часто используются