Создание списков в Python
Для того чтобы создать новый список, сначала нужно дать ему имя. Затем добавьте оператор присваивания (=) и пару квадратных скобок. Внутри скобок нужно добавить значения, которые должны содержаться в списке.
Подписывайтесь на канал 👉@pythonofff
Для того чтобы создать новый список, сначала нужно дать ему имя. Затем добавьте оператор присваивания (=) и пару квадратных скобок. Внутри скобок нужно добавить значения, которые должны содержаться в списке.
Подписывайтесь на канал 👉@pythonofff
👍3
Получаем срез из бесконечного генератора
Вероятно, у многих были случаи, когда требовалось получить конечный список элементов из бесконечного генератора.
И в целом задача вполне простая, но сейчас рассмотрим лаконичный вариант — воспользуемся пакетом itertools, в котором есть функции на все случаи генераторов.
В нашем случае понадобится islice, который как раз берет "срез" из генератора. В аргументах указываем объект генератора и длину среза.
Для примера мы написали функцию-генератор, которая вычисляет числа Фибоначчи. Результат можете посмотреть на картинке.
Подписывайтесь на канал 👉@pythonofff
Вероятно, у многих были случаи, когда требовалось получить конечный список элементов из бесконечного генератора.
И в целом задача вполне простая, но сейчас рассмотрим лаконичный вариант — воспользуемся пакетом itertools, в котором есть функции на все случаи генераторов.
В нашем случае понадобится islice, который как раз берет "срез" из генератора. В аргументах указываем объект генератора и длину среза.
Для примера мы написали функцию-генератор, которая вычисляет числа Фибоначчи. Результат можете посмотреть на картинке.
Подписывайтесь на канал 👉@pythonofff
❤2👍1
Что означает self в методах
При вызове методов у объектов сам объект передается первым аргументом, если это не статический метод. И такой аргумент принято называть self, который новички прописывают в классах, даже не задумываясь о его значении.
И к счастью, все это происходит автоматически — вручную объект передавать не надо. Но для того, чтобы понять этот момент лучше, можно вызвать метод напрямую у класса и явно передать объект (пример на картинке).
Далее, уже внутри метода можно обращаться к атрибутам и другим методам у объекта. Для этого он и передается.
Проще говоря, если откинуть все технические детали, то можно сказать следующее: self указывает, что мы как бы применяем метод к самому объекту.
Подписывайтесь на канал 👉@pythonofff
При вызове методов у объектов сам объект передается первым аргументом, если это не статический метод. И такой аргумент принято называть self, который новички прописывают в классах, даже не задумываясь о его значении.
И к счастью, все это происходит автоматически — вручную объект передавать не надо. Но для того, чтобы понять этот момент лучше, можно вызвать метод напрямую у класса и явно передать объект (пример на картинке).
Далее, уже внутри метода можно обращаться к атрибутам и другим методам у объекта. Для этого он и передается.
Проще говоря, если откинуть все технические детали, то можно сказать следующее: self указывает, что мы как бы применяем метод к самому объекту.
Подписывайтесь на канал 👉@pythonofff
👍2
Сколько времени может работать код
Вы не задумывались, сколько именно времени занимает работа кода в рамках одной ячейки?
Магическая команда time позволяет получить всю необходимую информацию о времени.
Подписывайтесь на канал 👉@pythonofff
Вы не задумывались, сколько именно времени занимает работа кода в рамках одной ячейки?
Магическая команда time позволяет получить всю необходимую информацию о времени.
Подписывайтесь на канал 👉@pythonofff
❤1👍1
Кэшированные атрибуты
Во встроенном пакете functools есть классный декоратор @ cached_property, который позволяет кэшировать результат метода и загнать его в атрибут.
Таким образом, при первом обращении к атрибуту производятся вычисления в методе, а при дальнейших берется уже кэшированное значение.
Подобное кэшеирование полезно в случаях, когда в методе производятся вычисления, которые нагружают систему и занимают много времени.
Подписывайтесь на канал 👉@pythonofff
Во встроенном пакете functools есть классный декоратор @ cached_property, который позволяет кэшировать результат метода и загнать его в атрибут.
Таким образом, при первом обращении к атрибуту производятся вычисления в методе, а при дальнейших берется уже кэшированное значение.
Подобное кэшеирование полезно в случаях, когда в методе производятся вычисления, которые нагружают систему и занимают много времени.
Подписывайтесь на канал 👉@pythonofff
👍1
Запрос DELETE
Вам нужно удалить ресурс из API? Вы можете использовать запрос DELETE. Здесь мы будем удалять товар с идентификатором, равным 21
Подписывайтесь на канал 👉@pythonofff
Вам нужно удалить ресурс из API? Вы можете использовать запрос DELETE. Здесь мы будем удалять товар с идентификатором, равным 21
Подписывайтесь на канал 👉@pythonofff
👍1
Важное про цифры и Юникод
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 — не единственные символы, которые считаются цифрами. Python следует правилам Юникода и обрабатывает несколько сотен символов как цифры.
Это крайне важно знать, потому что эти символы влияют на такие функции, как int, unicode.isdecimal и даже re.match.
Думаю, в один момент это знание сэкономит вам время на исправление "бага" с такими странными символами. Предупрежден — значит вооружен.
Подписывайтесь на канал 👉@pythonofff
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 — не единственные символы, которые считаются цифрами. Python следует правилам Юникода и обрабатывает несколько сотен символов как цифры.
Это крайне важно знать, потому что эти символы влияют на такие функции, как int, unicode.isdecimal и даже re.match.
Думаю, в один момент это знание сэкономит вам время на исправление "бага" с такими странными символами. Предупрежден — значит вооружен.
Подписывайтесь на канал 👉@pythonofff
👍3
Именование среза с использованием функции slice
Работа с множеством значений, которые заданы индексами, может быстро обернуться беспорядком – как в плане поддержки, так и в плане читабельности кода.
Один из вариантов улучшения ситуации заключается в использовании констант для значений, задаваемых индексами. Но есть и более удачный способ написания качественного кода, как показано на картинке.
Подписывайтесь на канал 👉@pythonofff
Работа с множеством значений, которые заданы индексами, может быстро обернуться беспорядком – как в плане поддержки, так и в плане читабельности кода.
Один из вариантов улучшения ситуации заключается в использовании констант для значений, задаваемых индексами. Но есть и более удачный способ написания качественного кода, как показано на картинке.
Подписывайтесь на канал 👉@pythonofff
👍2
User-Agent
Механизм защиты от скрапинга – User-Agent. UA – это заголовок, который браузеры отправляют в запросах для идентификации. Обычно он представляет собой длинную строку, в которой объявляется имя браузера, версия, платформа и многое другое.
Подписывайтесь на канал 👉@pythonofff
Механизм защиты от скрапинга – User-Agent. UA – это заголовок, который браузеры отправляют в запросах для идентификации. Обычно он представляет собой длинную строку, в которой объявляется имя браузера, версия, платформа и многое другое.
Подписывайтесь на канал 👉@pythonofff
❤1👍1
Объект Ellipsis
В Python есть крайне интересный объект, который обозначается как ..., то есть многоточие. Этот объект называется Ellipsis, и используется он в основном как заготовка для чего-то еще не реализованного.
Применяется он зачастую при работе со срезами в Numpy, но и в обычном коде его тоже встретить можно. Например, ... периодически встречается в теле функции в качестве заглушки.
Если привести его к логическому типу данных, то увидим True — это важный момент, потому что похожий по своей сути None выдает False.
Подписывайтесь на канал 👉@pythonofff
В Python есть крайне интересный объект, который обозначается как ..., то есть многоточие. Этот объект называется Ellipsis, и используется он в основном как заготовка для чего-то еще не реализованного.
Применяется он зачастую при работе со срезами в Numpy, но и в обычном коде его тоже встретить можно. Например, ... периодически встречается в теле функции в качестве заглушки.
Если привести его к логическому типу данных, то увидим True — это важный момент, потому что похожий по своей сути None выдает False.
Подписывайтесь на канал 👉@pythonofff
IP-адрес
Вы можете менять IP-адрес каждые несколько секунд или для каждого запроса. Целевой сервер не может идентифицировать ваши запросы и не блокирует эти IP-адреса. Вы можете создать огромный список прокси и выбирать по одному для каждого запроса случайным образом. Или используйте вращающийся прокси, который сделает это за вас. После этого изменения шансы на правильную работу скрапера резко возрастают.
Подписывайтесь на канал 👉@pythonofff
Вы можете менять IP-адрес каждые несколько секунд или для каждого запроса. Целевой сервер не может идентифицировать ваши запросы и не блокирует эти IP-адреса. Вы можете создать огромный список прокси и выбирать по одному для каждого запроса случайным образом. Или используйте вращающийся прокси, который сделает это за вас. После этого изменения шансы на правильную работу скрапера резко возрастают.
Подписывайтесь на канал 👉@pythonofff
👍3🔥1
Как скопировать всё содержимое внешнего файла?
В большинстве случаев возникает необходимость скопировать содержимое вашей ячейки в скрипт python или текстовый файл непосредственно из вашего блокнота Jupyter.
Вместо того чтобы копировать все и создавать новый файл, вы можете напрямую экспортировать свои данные, добавив команду writefile в ячейку перед кодом.
Подписывайтесь на канал 👉@pythonofff
В большинстве случаев возникает необходимость скопировать содержимое вашей ячейки в скрипт python или текстовый файл непосредственно из вашего блокнота Jupyter.
Вместо того чтобы копировать все и создавать новый файл, вы можете напрямую экспортировать свои данные, добавив команду writefile в ячейку перед кодом.
Подписывайтесь на канал 👉@pythonofff
Генератор списка с одиночным и вложенным условием if
В генератор списка также можно добавить if-условие, которое может помочь нам отфильтровать данные. Например, в приведенном ниже коде мы сохраняем в список c все значения lst, большие 4
Подписывайтесь на канал 👉@pythonofff
В генератор списка также можно добавить if-условие, которое может помочь нам отфильтровать данные. Например, в приведенном ниже коде мы сохраняем в список c все значения lst, большие 4
Подписывайтесь на канал 👉@pythonofff
👍1