6 полезных, но малоизвестных фишек Python для упрощения кода
3 мин чтения
В этом видео рассматриваются полезные, но часто упускаемые из виду возможности языка Python. Мы разберем работу с атрибутами функций, логику использования блока else в циклах и конструкциях обработки исключений, способы улучшения читаемости чисел, риски функций eval и exec, а также применение многоточия (Ellipsis) в качестве объекта.
Главные выводы
- Функции в Python являются объектами, что позволяет назначать им атрибуты, хотя делать это стоит осторожно.
- Блок `else` в циклах `for` выполняется только в том случае, если цикл завершился естественным образом, не прервавшись через `break`.
- В конструкции `try-except-else-finally`, блок `else` выполняется только при отсутствии ошибок, а `finally` — всегда.
- Для улучшения читаемости больших чисел можно использовать подчеркивание как разделитель разрядов.
- Использование `eval` и `exec` опасно при работе с данными от пользователей из-за риска выполнения произвольного кода.
- Многоточие (`...`) или `Ellipsis` — это отдельный объект, который можно использовать как плейсхолдер или для сокращения записи при работе с многомерными массивами.
Атрибуты функций в Python
В Python абсолютно всё является объектом — от переменных до функций. Это означает, что мы можем присваивать атрибуты даже функциям, используя точечную нотацию. Хотя такой подход может показаться удобным в специфических задачах (например, для хранения состояния внутри обработчика события), важно помнить, что переменные, привязанные таким образом, по сути становятся глобальными для этого объекта, что может быть небезопасно. Используйте этот прием только тогда, когда это действительно необходимо.
Циклы с использованием else
Малоизвестная особенность Python — возможность использовать `else` вместе с циклом `for`. Блок `else` выполняется только в том случае, если цикл прошел по всем итерациям до конца. Если же цикл был принудительно завершен инструкцией `break`, код в `else` проигнорируется. Это удобно для реализации логики, которая должна сработать только при условии, что в итерируемом объекте не было найдено искомое значение.
Управление исключениями: try, except, else, finally
Конструкция обработки исключений может быть расширена. Блок `else` в `try-except` выполняется только при успешном завершении `try` (когда ошибок не возникло). В то же время блок `finally` выполняется всегда, независимо от того, произошла ошибка или нет. Это идеальное место для закрытия соединений с базами данных, файлами или браузером.
Читаемость кода: разделители в числах
Для облегчения чтения длинных чисел в Python можно использовать символ подчеркивания (`_`) в качестве разделителя разрядов. Например, `1_000_000` интерпретируется как миллион. Это значительно упрощает визуальное восприятие больших констант в коде, не влияя на их значение.
Риски использования eval и exec
Функции `eval` и `exec` позволяют динамически выполнять строки как код Python. Это мощный, но крайне опасный инструмент. Если в эти функции попадут данные, введенные пользователем, злоумышленник может выполнить произвольные команды, что приведет к компрометации системы. Избегайте использования этих функций с неконтролируемым вводом.
Многоточие (Ellipsis) как объект
`Ellipsis` (записывается как `...`) — это самостоятельный объект в Python. Его часто путают с `None`, но это не одно и то же. `Ellipsis` может использоваться как плейсхолдер в коде или для упрощения нарезки (slicing) многомерных массивов (например, в библиотеке NumPy), заменяя собой множество двоеточий.
Таймкоды
- 00:26Атрибуты функций: расширяем возможности объектов
- 04:08For-else: когда цикл завершился без прерываний
- 06:46Try-except-else-finally: тонкости обработки ошибок
- 08:40Улучшаем читаемость чисел: разделители разрядов
- 09:14Eval и Exec: мощные, но опасные функции
- 10:52Ellipsis (...): больше чем просто многоточие
Полный транскриптПоказать транскриптСкрыть транскрипт
00:01Данное видео мы рассмотрим несколько Данное видео мы рассмотрим несколько фишек в Python о которых многие не знают фишек в Python о которых многие не знают фишек в Python о которых многие не знают но это очень сильно может упростить ваш но это очень сильно может упростить ваш но это очень сильно может упростить ваш код Бывают такие случаи когда вы код Бывают такие случаи когда вы код Бывают такие случаи когда вы начинаете что-то реализовывать руками а начинаете что-то реализовывать руками а начинаете что-то реализовывать руками а потом понимаете что именно это можно потом понимаете что именно это можно потом понимаете что именно это можно было сделать уже напрямую из коробки то
00:14было сделать уже напрямую из коробки то было сделать уже напрямую из коробки то есть используя технологии которые уже есть используя технологии которые уже есть используя технологии которые уже есть в Python именно данной технологии есть в Python именно данной технологии есть в Python именно данной технологии мы рассмотрим текущем видео также мы рассмотрим текущем видео также мы рассмотрим текущем видео также попрошу вас перед тем как начать попрошу вас перед тем как начать попрошу вас перед тем как начать просмотр запомнить Сколько фишек из просмотр запомнить Сколько фишек из просмотр запомнить Сколько фишек из этого видео вы знали сколько нет для этого видео вы знали сколько нет для
00:25этого видео вы знали сколько нет для того чтобы потом написать об этом того чтобы потом написать об этом того чтобы потом написать об этом комментариях Будет очень интересно комментариях Будет очень интересно комментариях Будет очень интересно почитать Сколько именно вещей вы уже почитать Сколько именно вещей вы уже почитать Сколько именно вещей вы уже знали до этого видео Итак самое первое знали до этого видео Итак самое первое знали до этого видео Итак самое первое это атрибуты функции Как ни странно это атрибуты функции Как ни странно это атрибуты функции Как ни странно Python все является объектами то есть Python все является объектами то есть
00:37Python все является объектами то есть тот же класс это объект переменная это тот же класс это объект переменная это тот же класс это объект переменная это тоже объект функция это объект и так тоже объект функция это объект и так тоже объект функция это объект и так далее абсолютно все это говорит нам о далее абсолютно все это говорит нам о далее абсолютно все это говорит нам о том что мы можем использовать атрибуты и том что мы можем использовать атрибуты и том что мы можем использовать атрибуты и можем использовать подобный функционал можем использовать подобный функционал можем использовать подобный функционал который есть в любом объекте Python который есть в любом объекте Python
00:49который есть в любом объекте Python используя следующий код мы создаем используя следующий код мы создаем используя следующий код мы создаем классе и внутри него атрибут Эй которые классе и внутри него атрибут Эй которые классе и внутри него атрибут Эй которые равен значению 0 так вот используя такой равен значению 0 так вот используя такой равен значению 0 так вот используя такой код мы можем получить это значение из код мы можем получить это значение из код мы можем получить это значение из класса но можем ли мы например функцию и класса но можем ли мы например функцию и класса но можем ли мы например функцию и присвоить это же значение внутри функции
01:03присвоить это же значение внутри функции присвоить это же значение внутри функции и потом точно так же обратиться так вот и потом точно так же обратиться так вот и потом точно так же обратиться так вот да мы можем это сделать мы создаем да мы можем это сделать мы создаем да мы можем это сделать мы создаем функцию точно так же Обращаемся в функцию точно так же Обращаемся в функцию точно так же Обращаемся в переменную это у нас будет служить в переменную это у нас будет служить в переменную это у нас будет служить в качестве атрибута и присваиваем значение качестве атрибута и присваиваем значение качестве атрибута и присваиваем значение далее мы вызываем функцию и также
01:15далее мы вызываем функцию и также далее мы вызываем функцию и также Обращаемся к функции и присваиваем Обращаемся к функции и присваиваем Обращаемся к функции и присваиваем значение 2 так вот здесь тоже есть один значение 2 так вот здесь тоже есть один значение 2 так вот здесь тоже есть один подвох хотя мы сейчас получим результат подвох хотя мы сейчас получим результат подвох хотя мы сейчас получим результат мы получим на вывод 0.2 Если Вы уже мы получим на вывод 0.2 Если Вы уже мы получим на вывод 0.2 Если Вы уже поняли в чем подвох вы можете написать поняли в чем подвох вы можете написать поняли в чем подвох вы можете написать об этом в комментариях до того как я об
01:26об этом в комментариях до того как я об об этом в комментариях до того как я об этом расскажу Итак подвох в том что мы этом расскажу Итак подвох в том что мы этом расскажу Итак подвох в том что мы вызываем функцию Test если мы сейчас это вызываем функцию Test если мы сейчас это вызываем функцию Test если мы сейчас это все закомментируем мы получим ошибку все закомментируем мы получим ошибку все закомментируем мы получим ошибку почему Например наши функции нет почему Например наши функции нет почему Например наши функции нет атрибута И на самом деле все очень атрибута И на самом деле все очень атрибута И на самом деле все очень просто потому что тест у нас происходит
01:38просто потому что тест у нас происходит просто потому что тест у нас происходит во время вызова функции Когда же мы во время вызова функции Когда же мы во время вызова функции Когда же мы бежим по коду у нас просто бежим по коду у нас просто бежим по коду у нас просто инициализируется функция мы получаем инициализируется функция мы получаем инициализируется функция мы получаем значение 0 только тогда когда наша значение 0 только тогда когда наша значение 0 только тогда когда наша функция отработала поэтому у нас здесь функция отработала поэтому у нас здесь функция отработала поэтому у нас здесь есть вызов тест документация Python есть вызов тест документация Python
01:50есть вызов тест документация Python насколько я знаю уже были упоминания о насколько я знаю уже были упоминания о насколько я знаю уже были упоминания о том что так можно делать и можно том что так можно делать и можно том что так можно делать и можно присваивать атрибуты функцию и так далее присваивать атрибуты функцию и так далее присваивать атрибуты функцию и так далее насколько я помню это еще и было насколько я помню это еще и было насколько я помню это еще и было небезопасно потому что все переменные небезопасно потому что все переменные небезопасно потому что все переменные которые вы вот Вы определяете по сути у которые вы вот Вы определяете по сути у
02:01которые вы вот Вы определяете по сути у вас выделяются глобально то есть да она вас выделяются глобально то есть да она вас выделяются глобально то есть да она вроде привязана к объекту Но это все вроде привязана к объекту Но это все вроде привязана к объекту Но это все равно небезопасно но я лично несколько равно небезопасно но я лично несколько равно небезопасно но я лично несколько раз такой подход уже использовал у меня раз такой подход уже использовал у меня раз такой подход уже использовал у меня была задача где нужно было создать была задача где нужно было создать была задача где нужно было создать телеграм Бота и вот внутрь события телеграм Бота и вот внутрь события
02:12телеграм Бота и вот внутрь события которые обрабатывает сообщение в которые обрабатывает сообщение в которые обрабатывает сообщение в Telegram Боте не нужно было сделать так Telegram Боте не нужно было сделать так Telegram Боте не нужно было сделать так чтобы время события я мог добавить новые чтобы время события я мог добавить новые чтобы время события я мог добавить новые переменные в это событие и просто так переменные в это событие и просто так переменные в это событие и просто так это сделать нельзя и вот используя вот это сделать нельзя и вот используя вот это сделать нельзя и вот используя вот такие вот аргументы я смог добавить такие вот аргументы я смог добавить
02:24такие вот аргументы я смог добавить значение и прямо из этого события его значение и прямо из этого события его значение и прямо из этого события его вызвать поэтому В некоторых случаях это вызвать поэтому В некоторых случаях это вызвать поэтому В некоторых случаях это может быть для вас полезно Но насколько может быть для вас полезно Но насколько может быть для вас полезно Но насколько я знаю это также может принести я знаю это также может принести я знаю это также может принести дополнительный вред вашей программе дополнительный вред вашей программе дополнительный вред вашей программе Поэтому не нужно в каждую функцию это Поэтому не нужно в каждую функцию это
02:35Поэтому не нужно в каждую функцию это добавлять если вы можете без этого добавлять если вы можете без этого добавлять если вы можете без этого обойтись то лучше это не использовать Но обойтись то лучше это не использовать Но обойтись то лучше это не использовать Но если вас такая задача где беса атрибутов если вас такая задача где беса атрибутов если вас такая задача где беса атрибутов уже никак то почему бы нет следующая уже никак то почему бы нет следующая уже никак то почему бы нет следующая тема это Force возможно многие это уже и тема это Force возможно многие это уже и тема это Force возможно многие это уже и знают новички скорее всего могут не знают новички скорее всего могут не
02:48знают новички скорее всего могут не знать что такое forls кто вообще это знать что такое forls кто вообще это знать что такое forls кто вообще это делает также есть рай вместе с Но об делает также есть рай вместе с Но об делает также есть рай вместе с Но об этом чуть позже Итак у нас есть Форекс этом чуть позже Итак у нас есть Форекс этом чуть позже Итак у нас есть Форекс Что же он делает мы изначально бежим по Что же он делает мы изначально бежим по Что же он делает мы изначально бежим по циклу У нас вот такой вот и также я циклу У нас вот такой вот и также я циклу У нас вот такой вот и также я установил максимальное значение для того установил максимальное значение для того
03:02установил максимальное значение для того чтобы пробежаться по этому списку То чтобы пробежаться по этому списку То чтобы пробежаться по этому списку То есть когда мы доходим до первого есть когда мы доходим до первого есть когда мы доходим до первого значения Мы завершаем наш цикл и выходим значения Мы завершаем наш цикл и выходим значения Мы завершаем наш цикл и выходим из программы так вот когда отрабатывает из программы так вот когда отрабатывает из программы так вот когда отрабатывает элс Он вызывается в том случае если for элс Он вызывается в том случае если for элс Он вызывается в том случае если for у нас прошел полностью по всей итерации у нас прошел полностью по всей итерации
03:15у нас прошел полностью по всей итерации у нас есть вот такой вот итератор это у нас есть вот такой вот итератор это у нас есть вот такой вот итератор это ровно три значения когда он пройдет ровно три значения когда он пройдет ровно три значения когда он пройдет полностью по всему тогда мы отработаем полностью по всему тогда мы отработаем полностью по всему тогда мы отработаем если же мы завершаем все это раньше то если же мы завершаем все это раньше то если же мы завершаем все это раньше то есть например мы прошли через 1-2 но 3 есть например мы прошли через 1-2 но 3 есть например мы прошли через 1-2 но 3 мы не трогали и вышли раньше через Break мы не трогали и вышли раньше через Break
03:29мы не трогали и вышли раньше через Break to els у нас отрабатывать не будет о чем to els у нас отрабатывать не будет о чем to els у нас отрабатывать не будет о чем же это говорит например мы бежим по же это говорит например мы бежим по же это говорит например мы бежим по нашему значению Все отработало мы пошли нашему значению Все отработало мы пошли нашему значению Все отработало мы пошли дальше У нас например какая-то такая дальше У нас например какая-то такая дальше У нас например какая-то такая логика Например если мы пробежались не логика Например если мы пробежались не логика Например если мы пробежались не полностью по всему списку значит полностью по всему списку значит
03:41полностью по всему списку значит произошло какое-то другое поведение произошло какое-то другое поведение произошло какое-то другое поведение нужно выполнить другой код именно ЛС для нужно выполнить другой код именно ЛС для нужно выполнить другой код именно ЛС для этого может сработать Итак сейчас по этого может сработать Итак сейчас по этого может сработать Итак сейчас по сути мы должны получить брейк без вывода сути мы должны получить брейк без вывода сути мы должны получить брейк без вывода финиш потому что наше значение полностью финиш потому что наше значение полностью финиш потому что наше значение полностью не выполнилось мы получаем только не выполнилось мы получаем только
03:54не выполнилось мы получаем только значения нам на финиш у нас не выводится значения нам на финиш у нас не выводится значения нам на финиш у нас не выводится далее мы сделаем так чтобы можно было далее мы сделаем так чтобы можно было далее мы сделаем так чтобы можно было пробежаться по всему переписку нас пробежаться по всему переписку нас пробежаться по всему переписку нас срабатывает как и нам так и финиш далее срабатывает как и нам так и финиш далее срабатывает как и нам так и финиш далее третий пример который работает похожим третий пример который работает похожим третий пример который работает похожим образом у нас есть следующая переменная образом у нас есть следующая переменная
04:06образом у нас есть следующая переменная что мы делаем мы просто делаем деление что мы делаем мы просто делаем деление что мы делаем мы просто делаем деление далее У нас обработка ошибки на случай далее У нас обработка ошибки на случай далее У нас обработка ошибки на случай если кто-то поделит это на 0 потому что если кто-то поделит это на 0 потому что если кто-то поделит это на 0 потому что мы не можем поделить на 0 мы получим мы не можем поделить на 0 мы получим мы не можем поделить на 0 мы получим ошибку далее У нас идет els и finally ошибку далее У нас идет els и finally ошибку далее У нас идет els и finally собственно если кто не знаком то Файн собственно если кто не знаком то Файн
04:18собственно если кто не знаком то Файн или у нас выполняется всегда абсолютно или у нас выполняется всегда абсолютно или у нас выполняется всегда абсолютно Итак Как же оно работает сначала Мы Итак Как же оно работает сначала Мы Итак Как же оно работает сначала Мы выполняем следующие действия если же мы выполняем следующие действия если же мы выполняем следующие действия если же мы получаем ошибку Мы выполняем Блок из получаем ошибку Мы выполняем Блок из получаем ошибку Мы выполняем Блок из except LS уже выполняется только в том except LS уже выполняется только в том except LS уже выполняется только в том случае если Трай закончился успехом то случае если Трай закончился успехом то
04:32случае если Трай закончился успехом то есть вторая у нас успешно завершен есть вторая у нас успешно завершен есть вторая у нас успешно завершен естественно except мы пропускаем потому естественно except мы пропускаем потому естественно except мы пропускаем потому что ошибки нам обрабатывать не нужно и что ошибки нам обрабатывать не нужно и что ошибки нам обрабатывать не нужно и только тогда Мы выполняем эллас потому только тогда Мы выполняем эллас потому только тогда Мы выполняем эллас потому что Трай у нас рабочий и после except Мы что Трай у нас рабочий и после except Мы что Трай у нас рабочий и после except Мы выполняем файно ли потому что он выполняем файно ли потому что он
04:43выполняем файно ли потому что он выполняется абсолютно всегда это первый выполняется абсолютно всегда это первый выполняется абсолютно всегда это первый сценарий когда элс может выполниться сценарий когда элс может выполниться сценарий когда элс может выполниться потому что трайз закончился успехом потому что трайз закончился успехом потому что трайз закончился успехом второй сценарий это если мы поделили на второй сценарий это если мы поделили на второй сценарий это если мы поделили на 0 и получили ошибку в таком случае элас 0 и получили ошибку в таком случае элас 0 и получили ошибку в таком случае элас у нас не выполняется но файно ли у нас у нас не выполняется но файно ли у нас
04:56у нас не выполняется но файно ли у нас выполняется в любом случае Final ли вы выполняется в любом случае Final ли вы выполняется в любом случае Final ли вы например можете сделать ресурсов либо же например можете сделать ресурсов либо же например можете сделать ресурсов либо же любые другие действия при завершении любые другие действия при завершении любые другие действия при завершении вашей программы если это браузер вашей программы если это браузер вашей программы если это браузер например selennium либо другие драйвера например selennium либо другие драйвера например selennium либо другие драйвера Вы можете взять его здесь закрыть Вы можете взять его здесь закрыть
05:09Вы можете взять его здесь закрыть соединение с браузером вот здесь вот соединение с браузером вот здесь вот соединение с браузером вот здесь вот например искать какой-то элемент на например искать какой-то элемент на например искать какой-то элемент на странице если все хорошо и мы не странице если все хорошо и мы не странице если все хорошо и мы не получили ошибку то vals мы его уже получили ошибку то vals мы его уже получили ошибку то vals мы его уже достаем этот элемент Если же мы получили достаем этот элемент Если же мы получили достаем этот элемент Если же мы получили ошибку в except значит этого элемента ошибку в except значит этого элемента
05:20ошибку в except значит этого элемента там нет И можно выполнить другие там нет И можно выполнить другие там нет И можно выполнить другие действия четвертая тема Это разделители действия четвертая тема Это разделители действия четвертая тема Это разделители для Инта многие спрашивали в для Инта многие спрашивали в для Инта многие спрашивали в комментариях почему я так записываю комментариях почему я так записываю комментариях почему я так записываю числа Что это значит и так далее на числа Что это значит и так далее на числа Что это значит и так далее на самом деле все очень просто Вы можете самом деле все очень просто Вы можете
05:31самом деле все очень просто Вы можете записать ваше Число Вот так вот можете записать ваше Число Вот так вот можете записать ваше Число Вот так вот можете записать его следующим образом только записать его следующим образом только записать его следующим образом только как вам сейчас понять что это за число как вам сейчас понять что это за число как вам сейчас понять что это за число Вам нужно будет руками считать Вам нужно будет руками считать Вам нужно будет руками считать количество нулей А вот так вот вы сразу количество нулей А вот так вот вы сразу количество нулей А вот так вот вы сразу понимаете сколько у вас здесь количество понимаете сколько у вас здесь количество
05:42понимаете сколько у вас здесь количество нулей вы сразу можете понять какое это нулей вы сразу можете понять какое это нулей вы сразу можете понять какое это число Кстати это работает не только в число Кстати это работает не только в число Кстати это работает не только в Python это работает еще и в расти Если Python это работает еще и в расти Если Python это работает еще и в расти Если вы пишете на раз то вы тоже можете это вы пишете на раз то вы тоже можете это вы пишете на раз то вы тоже можете это использовать Ты просто такая фишка в использовать Ты просто такая фишка в использовать Ты просто такая фишка в Python чтобы более удобно представлять Python чтобы более удобно представлять
05:54Python чтобы более удобно представлять Числа 5 тема это Evil и exec возможно Числа 5 тема это Evil и exec возможно Числа 5 тема это Evil и exec возможно Многие знают опять же Но те кто не знает Многие знают опять же Но те кто не знает Многие знают опять же Но те кто не знает вам полезно и так Для чего используется вам полезно и так Для чего используется вам полезно и так Для чего используется Evil для того чтобы работать с Evil для того чтобы работать с Evil для того чтобы работать с выражениями То есть вы можете записать выражениями То есть вы можете записать выражениями То есть вы можете записать сюда любое выражение его все это сюда любое выражение его все это
06:06сюда любое выражение его все это выполнит и поместит результат в выполнит и поместит результат в выполнит и поместит результат в переменную B далее У нас идет exec exec переменную B далее У нас идет exec exec переменную B далее У нас идет exec exec может выполнять по сути практически может выполнять по сути практически может выполнять по сути практически любой код они еще и являются опасными любой код они еще и являются опасными любой код они еще и являются опасными функциями почему это так Потому что если функциями почему это так Потому что если функциями почему это так Потому что если в экзамен вы будете принимать вывод от в экзамен вы будете принимать вывод от
06:18в экзамен вы будете принимать вывод от пользователя Например у вас идет строка пользователя Например у вас идет строка пользователя Например у вас идет строка Где вы вводите какое-то значение Где вы вводите какое-то значение Где вы вводите какое-то значение например Это поиск на вашем сайте и все например Это поиск на вашем сайте и все например Это поиск на вашем сайте и все это передается в exect это будет очень это передается в exect это будет очень это передается в exect это будет очень опасно он сможет выйти за пределы вашего опасно он сможет выйти за пределы вашего опасно он сможет выйти за пределы вашего обработчика сделать примерно следующую обработчика сделать примерно следующую
06:30обработчика сделать примерно следующую команду которая просто уничтожает все команду которая просто уничтожает все команду которая просто уничтожает все файлы на диске поэтому данной функции файлы на диске поэтому данной функции файлы на диске поэтому данной функции нельзя использовать там куда может нельзя использовать там куда может нельзя использовать там куда может добраться пользователь Если же это у вас добраться пользователь Если же это у вас добраться пользователь Если же это у вас на клиентской стороне вы передаете на клиентской стороне вы передаете на клиентской стороне вы передаете значение из сервера это уже Немного значение из сервера это уже Немного
06:40значение из сервера это уже Немного безопаснее но все же нужно понимать как безопаснее но все же нужно понимать как безопаснее но все же нужно понимать как это работает потому что всегда есть риск это работает потому что всегда есть риск это работает потому что всегда есть риск что будет выполнен произвольный код Если что будет выполнен произвольный код Если что будет выполнен произвольный код Если же это сервер ТО ваш сервер могут также же это сервер ТО ваш сервер могут также же это сервер ТО ваш сервер могут также скомпрометировать и выполнить тоже скомпрометировать и выполнить тоже скомпрометировать и выполнить тоже произвольный код на всех клиентах произвольный код на всех клиентах
06:52произвольный код на всех клиентах поэтому это тоже нужно учитывать поэтому это тоже нужно учитывать поэтому это тоже нужно учитывать следующая тема это эллипсы либо же следующая тема это эллипсы либо же следующая тема это эллипсы либо же Многоточие его можно использовать в Многоточие его можно использовать в Многоточие его можно использовать в принципе как и пас но все же все равно принципе как и пас но все же все равно принципе как и пас но все же все равно пас это и не равно но так сейчас пас это и не равно но так сейчас пас это и не равно но так сейчас Возможно вы ничего не поняли но я Возможно вы ничего не поняли но я
07:04Возможно вы ничего не поняли но я попытаюсь вам это объяснить Итак эллипс попытаюсь вам это объяснить Итак эллипс попытаюсь вам это объяснить Итак эллипс вообще использовался для нарезки массива вообще использовался для нарезки массива вообще использовался для нарезки массива в номпай У меня даже есть видео об этом в номпай У меня даже есть видео об этом в номпай У меня даже есть видео об этом на канале Вы можете перейти на канал и на канале Вы можете перейти на канал и на канале Вы можете перейти на канал и посмотреть много видео с фишками pyton и посмотреть много видео с фишками pyton и посмотреть много видео с фишками pyton и так далее там много подобного контента
07:16так далее там много подобного контента так далее там много подобного контента так вот эллипс используют как пас но это так вот эллипс используют как пас но это так вот эллипс используют как пас но это не совсем то и сейчас вам попытаюсь это не совсем то и сейчас вам попытаюсь это не совсем то и сейчас вам попытаюсь это показать более наглядно Итак первое чем показать более наглядно Итак первое чем показать более наглядно Итак первое чем оно отличается это посмотрите просто на оно отличается это посмотрите просто на оно отличается это посмотрите просто на следующий год Я беру просто эллипсис следующий год Я беру просто эллипсис
07:27следующий год Я беру просто эллипсис перевожу его Булл и также беру значение перевожу его Булл и также беру значение перевожу его Булл и также беру значение тоже приложил бу потому что Нон тайп это тоже приложил бу потому что Нон тайп это тоже приложил бу потому что Нон тайп это по сути отсутствие значения То есть это по сути отсутствие значения То есть это по сути отсутствие значения То есть это даже не 0 это просто отсутствие эллипсис даже не 0 это просто отсутствие эллипсис даже не 0 это просто отсутствие эллипсис Это же не отсутствие значения и по сути Это же не отсутствие значения и по сути Это же не отсутствие значения и по сути Если бы оно было равно тайп мы бы вот
07:41Если бы оно было равно тайп мы бы вот Если бы оно было равно тайп мы бы вот здесь вот получили false точно так же здесь вот получили false точно так же здесь вот получили false точно так же как и получили бы в Нон тайп но если мы как и получили бы в Нон тайп но если мы как и получили бы в Нон тайп но если мы запустим код в эллипсис мы получаем труп запустим код в эллипсис мы получаем труп запустим код в эллипсис мы получаем труп потому что оно не пустое и также мы уже потому что оно не пустое и также мы уже потому что оно не пустое и также мы уже получаем false поэтому те кто говорят получаем false поэтому те кто говорят
07:52получаем false поэтому те кто говорят что эллипсы натап это одно и то же они что эллипсы натап это одно и то же они что эллипсы натап это одно и то же они ошибаются также Нон тайп не может быть ошибаются также Нон тайп не может быть ошибаются также Нон тайп не может быть равен эллипс как минимум последующей равен эллипс как минимум последующей равен эллипс как минимум последующей причине если мы создаем список и потом причине если мы создаем список и потом причине если мы создаем список и потом по нулевому индексу этого же списка по нулевому индексу этого же списка по нулевому индексу этого же списка помещаем самого же себя то есть по сути помещаем самого же себя то есть по сути
08:05помещаем самого же себя то есть по сути переписываем значение 1 ссылкой на переписываем значение 1 ссылкой на переписываем значение 1 ссылкой на самого же себя У нас выйдет первым самого же себя У нас выйдет первым самого же себя У нас выйдет первым значение эллипса с которой работает значение эллипса с которой работает значение эллипса с которой работает примерно похожим образом Как работает примерно похожим образом Как работает примерно похожим образом Как работает нарезка массива в номпай но у нас будет нарезка массива в номпай но у нас будет нарезка массива в номпай но у нас будет такая вещь что если мы Обращаемся к такая вещь что если мы Обращаемся к
08:17такая вещь что если мы Обращаемся к нулевому индексу и каждый раз будем нулевому индексу и каждый раз будем нулевому индексу и каждый раз будем дублировать это у нас бесконечно будет дублировать это у нас бесконечно будет дублировать это у нас бесконечно будет повторяться то же самое значение и повторяться то же самое значение и повторяться то же самое значение и получаем такой результат Почему у нас получаем такой результат Почему у нас получаем такой результат Почему у нас здесь список и эллипс почему у нас не здесь список и эллипс почему у нас не здесь список и эллипс почему у нас не дублируется все это Окей Возможно вы еще дублируется все это Окей Возможно вы еще
08:30дублируется все это Окей Возможно вы еще не поняли но я сделаю вот так вот кто-то не поняли но я сделаю вот так вот кто-то не поняли но я сделаю вот так вот кто-то скажет комментариях Что Сейчас будет скажет комментариях Что Сейчас будет скажет комментариях Что Сейчас будет ошибка Потому что ты обращаешься к ошибка Потому что ты обращаешься к ошибка Потому что ты обращаешься к нулевому индексу Да ты получишь список нулевому индексу Да ты получишь список нулевому индексу Да ты получишь список возможно но потом ты обращаешься еще раз возможно но потом ты обращаешься еще раз возможно но потом ты обращаешься еще раз к нулевому индексу и получаешь ошибку к нулевому индексу и получаешь ошибку
08:41к нулевому индексу и получаешь ошибку потому что такого индекса Нет я сейчас потому что такого индекса Нет я сейчас потому что такого индекса Нет я сейчас запускаю код и мы получаем точно такой запускаю код и мы получаем точно такой запускаю код и мы получаем точно такой же результат абсолютно точно такой же же результат абсолютно точно такой же же результат абсолютно точно такой же потому что обращаясь каждый раз к потому что обращаясь каждый раз к потому что обращаясь каждый раз к нулевому индексу мы заново используем Ту нулевому индексу мы заново используем Ту нулевому индексу мы заново используем Ту же самую ссылку и в итоге у нас же самую ссылку и в итоге у нас
08:52же самую ссылку и в итоге у нас создается просто бесконечный список и создается просто бесконечный список и создается просто бесконечный список и кто после этого сможет сказать что кто после этого сможет сказать что кто после этого сможет сказать что эллипсы сыну тайп это одно и то же далее эллипсы сыну тайп это одно и то же далее эллипсы сыну тайп это одно и то же далее У нас очень простой который кстати У нас очень простой который кстати У нас очень простой который кстати используют некоторые в коде но лучше используют некоторые в коде но лучше используют некоторые в коде но лучше конечно такое не использовать Если у вас конечно такое не использовать Если у вас
09:04конечно такое не использовать Если у вас есть такая возможность Например у вас есть такая возможность Например у вас есть такая возможность Например у вас есть такая функция которая должна есть такая функция которая должна есть такая функция которая должна принимать Non Type и как-то его принимать Non Type и как-то его принимать Non Type и как-то его обрабатывать то есть передать Valio Non обрабатывать то есть передать Valio Non обрабатывать то есть передать Valio Non Type вы не можете потому что оно Type вы не можете потому что оно Type вы не можете потому что оно обрабатывается Например у нас вот здесь обрабатывается Например у нас вот здесь
09:14обрабатывается Например у нас вот здесь вот запись файл идет здесь же это int У вот запись файл идет здесь же это int У вот запись файл идет здесь же это int У нас тоже идет запись например файл либо нас тоже идет запись например файл либо нас тоже идет запись например файл либо же в какой-то Документ и вы написали все же в какой-то Документ и вы написали все же в какой-то Документ и вы написали все это под разные типы данных и вам нужно это под разные типы данных и вам нужно это под разные типы данных и вам нужно теперь как-то обработать отсутствие теперь как-то обработать отсутствие теперь как-то обработать отсутствие значения А вы не можете обработать значения А вы не можете обработать
09:25значения А вы не можете обработать отсутствие значения потому что Нон тайп отсутствие значения потому что Нон тайп отсутствие значения потому что Нон тайп у вас уже занят он работает все у вас уже занят он работает все у вас уже занят он работает все остальные типы у вас тоже работают можно остальные типы у вас тоже работают можно остальные типы у вас тоже работают можно передать эллипсис тем самым если кто-то передать эллипсис тем самым если кто-то передать эллипсис тем самым если кто-то передал эллипсис Он посчитает это передал эллипсис Он посчитает это передал эллипсис Он посчитает это отсутствием значения Это еще одно отсутствием значения Это еще одно
09:37отсутствием значения Это еще одно доказательство того что Нон тайп это не доказательство того что Нон тайп это не доказательство того что Нон тайп это не эллипсис Итак мы можем передать Литерал эллипсис Итак мы можем передать Литерал эллипсис Итак мы можем передать Литерал напрямую используя эллипс мы можем также напрямую используя эллипс мы можем также напрямую используя эллипс мы можем также передать им Многоточие Но если же я передать им Многоточие Но если же я передать им Многоточие Но если же я передаю нам тайп Я получаю уже следующий передаю нам тайп Я получаю уже следующий передаю нам тайп Я получаю уже следующий код также некоторые комментариях просили
09:49код также некоторые комментариях просили код также некоторые комментариях просили показать как же используется эллипсис показать как же используется эллипсис показать как же используется эллипсис точнее как он использовался раньше так точнее как он использовался раньше так точнее как он использовался раньше так вот использовался он для нарезки вот использовался он для нарезки вот использовался он для нарезки массивом Пай и вот такой есть пример массивом Пай и вот такой есть пример массивом Пай и вот такой есть пример когда у нас выделя Orange и есть первый когда у нас выделя Orange и есть первый когда у нас выделя Orange и есть первый способ и также второй способ во втором
10:02способ и также второй способ во втором способ и также второй способ во втором способе мы просто перечисляем все наши способе мы просто перечисляем все наши способе мы просто перечисляем все наши значения через двоеточие и в таком значения через двоеточие и в таком значения через двоеточие и в таком случае если у нас вот здесь вот не 4 случае если у нас вот здесь вот не 4 случае если у нас вот здесь вот не 4 значения например 500 значений нам нужно значения например 500 значений нам нужно значения например 500 значений нам нужно перечислять 500 Вот таких вот двоеточий перечислять 500 Вот таких вот двоеточий перечислять 500 Вот таких вот двоеточий но мы можем просто поставить эллипс и он
10:15но мы можем просто поставить эллипс и он но мы можем просто поставить эллипс и он сам заполнить все эти значения И тем сам заполнить все эти значения И тем сам заполнить все эти значения И тем самым если мы сейчас запустим у нас самым если мы сейчас запустим у нас самым если мы сейчас запустим у нас будет точно такой же вывод как и первое будет точно такой же вывод как и первое будет точно такой же вывод как и первое значение таки второе значение Они значение таки второе значение Они значение таки второе значение Они полностью идентичны но для того чтобы полностью идентичны но для того чтобы полностью идентичны но для того чтобы показать вам что это отличается Я
10:26показать вам что это отличается Я показать вам что это отличается Я например просто уберу одну запись тем например просто уберу одну запись тем например просто уберу одну запись тем самым Если вы пропустили одну запись это самым Если вы пропустили одну запись это самым Если вы пропустили одну запись это уже меняет весь массив вот здесь вот у уже меняет весь массив вот здесь вот у уже меняет весь массив вот здесь вот у нас начинаются отличия если это видео нас начинаются отличия если это видео нас начинаются отличия если это видео было для вас полезным Давайте попробуем было для вас полезным Давайте попробуем было для вас полезным Давайте попробуем набрать 1000 лайков так как Именно так я
10:38набрать 1000 лайков так как Именно так я набрать 1000 лайков так как Именно так я пойму что не зря старался и буду дальше пойму что не зря старался и буду дальше пойму что не зря старался и буду дальше делать такой контент вы сейчас также делать такой контент вы сейчас также делать такой контент вы сейчас также можете перейти на канал и посмотреть можете перейти на канал и посмотреть можете перейти на канал и посмотреть другие видео по фишкам Python и также другие видео по фишкам Python и также другие видео по фишкам Python и также Напоминаю что первой ссылке в описании Напоминаю что первой ссылке в описании Напоминаю что первой ссылке в описании есть полный курс по Опа я сейчас также
10:49есть полный курс по Опа я сейчас также есть полный курс по Опа я сейчас также даю подарок приватный канал я постоянно даю подарок приватный канал я постоянно даю подарок приватный канал я постоянно публикую новые технологии библиотеки и публикую новые технологии библиотеки и публикую новые технологии библиотеки и так далее Вы можете записаться По первой так далее Вы можете записаться По первой так далее Вы можете записаться По первой ссылке в описании на этом же этапе я с ссылке в описании на этом же этапе я с ссылке в описании на этом же этапе я с вами прощаюсь
