Приглашаю Вас в мой личный авторский канал о том как я управляю IT компанией - https://t.me/+O4MftuhWIkE2ODgy
Объединение списков без цикла
Как бы вы решили задачу объединения списков разной длины без обхода элементов цикла?
Пусть и менее краткий, но более эффективный способ – применение модуля itertools
Заметим, что при работе с последовательностями многие полезные решения находятся в модулях стандартной библиотеки collections (контейнерные структуры данных) и itertools (операции над последовательностями). Внимательное прочтение документации модулей освободит вас от многих часов придумывания собственных «велосипедов».
Как бы вы решили задачу объединения списков разной длины без обхода элементов цикла?
Пусть и менее краткий, но более эффективный способ – применение модуля itertools
Заметим, что при работе с последовательностями многие полезные решения находятся в модулях стандартной библиотеки collections (контейнерные структуры данных) и itertools (операции над последовательностями). Внимательное прочтение документации модулей освободит вас от многих часов придумывания собственных «велосипедов».
Присваиваем значение переменной окружения
Для присвоения значения любой переменной среды используется функция setdefault().
Давайте напишем код, чтобы с помощью функции setdefault() изменить значение переменной DEBUG на True (по умолчанию установлено False). После установки значения мы проверим его функцией get().
Если мы сделали всё правильно, выведется сообщение «Режим отладки включен», в противном случае – «Режим отладки выключен».
Для присвоения значения любой переменной среды используется функция setdefault().
Давайте напишем код, чтобы с помощью функции setdefault() изменить значение переменной DEBUG на True (по умолчанию установлено False). После установки значения мы проверим его функцией get().
Если мы сделали всё правильно, выведется сообщение «Режим отладки включен», в противном случае – «Режим отладки выключен».
Управление тем, что может быть импортировано из модуля, а что — нет
В некоторых языках имеются предельно чёткие механизмы экспорта из модулей переменных, методов, интерфейсов. Например — в Golang экспортируются лишь сущности, имена которых начинаются с большой буквы. В Python же экспортируется всё. Но лишь до тех пор, пока не используется атрибут all
В некоторых языках имеются предельно чёткие механизмы экспорта из модулей переменных, методов, интерфейсов. Например — в Golang экспортируются лишь сущности, имена которых начинаются с большой буквы. В Python же экспортируется всё. Но лишь до тех пор, пока не используется атрибут all
Блок for…else
Все мы знаем, что else неразрывно связан с блоком if, но вы, возможно, не в курсе, что else используется в цикле for.
В выражении for...else блок else выполняется только в том случае, если все итерации цикла будут успешно завершены. Если же выполнение цикла прерывается оператором break, то else не выполняется.
Все мы знаем, что else неразрывно связан с блоком if, но вы, возможно, не в курсе, что else используется в цикле for.
В выражении for...else блок else выполняется только в том случае, если все итерации цикла будут успешно завершены. Если же выполнение цикла прерывается оператором break, то else не выполняется.
Библиотека showballstemmer
Работали когда-нибудь над поисковиками? Хороший поисковик должен много чего уметь находить по минимальному запросу.
Некоторые используют pymorph2 (первая слишком много потребляет ресурсов), но ведь достаточно определять основу слова, а не начальную форму для нахождения большинства результатов.
Библиотека showballstemmer и занимается тем, что определяет основу слова, что делает поиск более точным. А главное — библиотека мало потребляет, а результат получается намного лучше.
В начале следует импортировать модуль требуемого языка, к примеру вот модули английского, русского и французского соответственно: EnglishStemmer, FrenchStemmer, RussianStemmer
Работали когда-нибудь над поисковиками? Хороший поисковик должен много чего уметь находить по минимальному запросу.
Некоторые используют pymorph2 (первая слишком много потребляет ресурсов), но ведь достаточно определять основу слова, а не начальную форму для нахождения большинства результатов.
Библиотека showballstemmer и занимается тем, что определяет основу слова, что делает поиск более точным. А главное — библиотека мало потребляет, а результат получается намного лучше.
В начале следует импортировать модуль требуемого языка, к примеру вот модули английского, русского и французского соответственно: EnglishStemmer, FrenchStemmer, RussianStemmer
Для чего используется docstring?
В Python существует концепция PEP, или Python Enhancement Proposal. PEP представляют собой предложения или новые возможности для языка Python, которые обсуждаются и согласовываются руководящим советом Python.
PEP 257 описывает соглашения о docstring. Вы можете прочитать его, если вам нужна более подробная информация. Если обобщить, то docstring — это строковый литерал, который должен быть сразу после определения названия для модуля, функции, класса или метода.
docstring создается с помощью трех двойных кавычек.
В Python docstring игнорируются. Они не могут быть выполнены. Однако, когда вы добавляете docstring к модулю, функции и так далее, то данная строка становится специальным атрибутом, к которому можно получить доступ через " doc "
В Python существует концепция PEP, или Python Enhancement Proposal. PEP представляют собой предложения или новые возможности для языка Python, которые обсуждаются и согласовываются руководящим советом Python.
PEP 257 описывает соглашения о docstring. Вы можете прочитать его, если вам нужна более подробная информация. Если обобщить, то docstring — это строковый литерал, который должен быть сразу после определения названия для модуля, функции, класса или метода.
docstring создается с помощью трех двойных кавычек.
В Python docstring игнорируются. Они не могут быть выполнены. Однако, когда вы добавляете docstring к модулю, функции и так далее, то данная строка становится специальным атрибутом, к которому можно получить доступ через " doc "
🔥В Geekbrains проходит глобальное мероприятие — Вечерний “Путь в ИТ” с Иваном Ургантом
За 3 часа в прямом эфире с Иваном Ургантом и экспертами GeekBrains, вы станете разбираться в IT лучше, чем 90% новичков, начнете понимать сложные технические термины, узнаете правду о популярных профессиях и поймете, что действительно ждет IT-индустрию в ближайшие 10 лет
Программа интенсива «Путь в IT» с Иваном Ургантом:
✔️ Как выбрать перспективное направление, которое подойдет именно вам
✔️ Какие специализации самые перспективные и насколько сложно их освоить
✔️ С чего начать и как сделать первые шаги
✔️ Что представляет собой сфера информационных технологий
✔️ 5 полезных материалов которые помогут выбрать профессию и не допустить ошибок
Успейте зарегистрироваться по ссылке и получить бесплатный доступ к интенсиву с Иваном Ургантом!
За 3 часа в прямом эфире с Иваном Ургантом и экспертами GeekBrains, вы станете разбираться в IT лучше, чем 90% новичков, начнете понимать сложные технические термины, узнаете правду о популярных профессиях и поймете, что действительно ждет IT-индустрию в ближайшие 10 лет
Программа интенсива «Путь в IT» с Иваном Ургантом:
✔️ Как выбрать перспективное направление, которое подойдет именно вам
✔️ Какие специализации самые перспективные и насколько сложно их освоить
✔️ С чего начать и как сделать первые шаги
✔️ Что представляет собой сфера информационных технологий
✔️ 5 полезных материалов которые помогут выбрать профессию и не допустить ошибок
Успейте зарегистрироваться по ссылке и получить бесплатный доступ к интенсиву с Иваном Ургантом!
Строки (str)
Мы не можем изменить существующую переменную, вместо этого мы должны создать новую с тем же именем.
В данном примере мы определили строковую переменную x, но допустили ошибку в слове и теперь хотим исправить «ю» на «и». Однако мы получаем TypeError. Это показывает, что строковые объекты не подлежат обновлению.
Мы не можем изменить существующую переменную, вместо этого мы должны создать новую с тем же именем.
В данном примере мы определили строковую переменную x, но допустили ошибку в слове и теперь хотим исправить «ю» на «и». Однако мы получаем TypeError. Это показывает, что строковые объекты не подлежат обновлению.
Поверхностное копирование
Поверхностное копирование создает отдельный новый объект или список, но вместо копирования дочерних элементов в новый объект, оно просто копирует ссылки на их адреса памяти. Следовательно, если вы сделаете изменение в исходном объекте, оно будет отражено в скопированном объекте, и наоборот.
Поверхностное копирование создает отдельный новый объект или список, но вместо копирования дочерних элементов в новый объект, оно просто копирует ссылки на их адреса памяти. Следовательно, если вы сделаете изменение в исходном объекте, оно будет отражено в скопированном объекте, и наоборот.
Python отделяет итератор от последовательности
В Python последовательности сами по себе не являются итераторами. Скорее у каждой есть соответствующий класс-итератор, отвечающий за итерацию.
range() возвращает нам объект типа range
Мы получили ошибку TypeError: 'range' object is not an iterator. Итак, если объект типа range не является итератором, то что мы получим при использовании iter?
В Python последовательности сами по себе не являются итераторами. Скорее у каждой есть соответствующий класс-итератор, отвечающий за итерацию.
range() возвращает нам объект типа range
Мы получили ошибку TypeError: 'range' object is not an iterator. Итак, если объект типа range не является итератором, то что мы получим при использовании iter?
Есть кто живой? Скоро налью сюда постов интересных на ИТ движуху - t.me/+O4MftuhWlkE2ODgy