Внутренности объектов
Для понимания устройства встроенных модулей, объектов, библиотек в Python есть инструмент, позволяющий понять, какие функции и поля содержит объект.
Функция dir() показывает все атрибуты объекта. Удобно использовать в интерпретаторе в процессе обучения.
#theory // just python
Для понимания устройства встроенных модулей, объектов, библиотек в Python есть инструмент, позволяющий понять, какие функции и поля содержит объект.
Функция dir() показывает все атрибуты объекта. Удобно использовать в интерпретаторе в процессе обучения.
#theory // just python
Продвинутая работа со списками
При работе со списками крайне полезно знать как правильно формировать срезы списка. В приложениях, активно использующих группы данных - срезы незаменимый инструмент.
В общей форме формирования среза выглядит следующим образом:
Комбинации параметров помогут достичь необходимого результата.
#theory // just python
При работе со списками крайне полезно знать как правильно формировать срезы списка. В приложениях, активно использующих группы данных - срезы незаменимый инструмент.
В общей форме формирования среза выглядит следующим образом:
list[start:end:step]Комбинации параметров помогут достичь необходимого результата.
#theory // just python
Обработка исключений
Ошибки могу вызывать полное отключение и сбой в работе скрипта. Важно находить уязвимые части кода и предотвращать поломки.
Конструкция try except позволяет делать исключения для тех функций, которые могу привести к сбою.
#theory // just python
Ошибки могу вызывать полное отключение и сбой в работе скрипта. Важно находить уязвимые части кода и предотвращать поломки.
Конструкция try except позволяет делать исключения для тех функций, которые могу привести к сбою.
try:
уязвимая функция
except:
что делаем если вызвала ошибку
#theory // just python
Печать в одной строке
Мы знаем, что функция print выполняет вывод в каждой строке, и если использовать две функции print, они выполнят печать в две строки. Этот пример покажет, как выполнять вывод в той же строке без перехода на новую.
#theory // just python
Мы знаем, что функция print выполняет вывод в каждой строке, и если использовать две функции print, они выполнят печать в две строки. Этот пример покажет, как выполнять вывод в той же строке без перехода на новую.
#theory // just python
Директива repr
Для установки корректного официального определения класса используется метод repr(), который определяет строковое обозначение класса для программиста. По умолчанию оно представляет собой название класса и адрес в памяти. Используется для отладки приложения, описание даст информации больше, чем имя и адрес в памяти.
#theory // just python
Для установки корректного официального определения класса используется метод repr(), который определяет строковое обозначение класса для программиста. По умолчанию оно представляет собой название класса и адрес в памяти. Используется для отладки приложения, описание даст информации больше, чем имя и адрес в памяти.
#theory // just python
Аннотация типов
Python - язык с динамической типизацией. Это может быть как преимуществом так и недостатком. Для четкого определения типа переменных существуют аннотации, которые позволят явно указать тип данных объекта или тип данных возвращаемых функцией.
У аннотаций следующий варианты синтаксиса:
1. имя_переменной : тип_данных
2. имя_переменной : тип_данных = значение
3. def my_function(arg: тип_данных) -> тип_возвращаемого_значения
#theory // just python
Python - язык с динамической типизацией. Это может быть как преимуществом так и недостатком. Для четкого определения типа переменных существуют аннотации, которые позволят явно указать тип данных объекта или тип данных возвращаемых функцией.
У аннотаций следующий варианты синтаксиса:
1. имя_переменной : тип_данных
2. имя_переменной : тип_данных = значение
3. def my_function(arg: тип_данных) -> тип_возвращаемого_значения
#theory // just python
Библиотека showballstemmer
Библиотека
В начале следует импортировать модуль требуемого языка, к примеру вот модули английского, русского и французского соответственно:
#theory // just python
Библиотека
showballstemmer и занимается тем, что определяет основу слова, что делает поиск более точным. А главное — библиотека мало потребляет, а результат получается намного лучше.В начале следует импортировать модуль требуемого языка, к примеру вот модули английского, русского и французского соответственно:
EnglishStemmer, FrenchStemmer, RussianStemmer#theory // just python
Выражения присваивания
Так же известные как «моржовый оператор» (walrus operator) — новый синтаксис, который позволит присваивать значения переменным внутри другого выражения. Целью введения оператора является повышение читаемости кода, поэтому использовать его (как и все остальные операторы) стоит не при первой же возможности, а только тогда, когда это уместно.
#theory // just python
Так же известные как «моржовый оператор» (walrus operator) — новый синтаксис, который позволит присваивать значения переменным внутри другого выражения. Целью введения оператора является повышение читаемости кода, поэтому использовать его (как и все остальные операторы) стоит не при первой же возможности, а только тогда, когда это уместно.
#theory // just python
Составной вывод
Простой способ — сложение (конкатенация) строк. Хорошо с одной переменной в строке, а если их больше — читается с трудом.
#theory // just python
Простой способ — сложение (конкатенация) строк. Хорошо с одной переменной в строке, а если их больше — читается с трудом.
print('Hello ' + name + ' — ' + str(age) + ' y.o.')
Функция format() позволяет формировать понятный вывод не только для пользователя, но и для программиста.print('Hello {} — {} y.o.'.format(name, age))
Python последовательно проставляет номера для скобок и передает им значения переменных, последовательно указанных в аргументе.#theory // just python
Преобразование текста в речь
Этот проект на Python использует ряд новых библиотек для преобразования существующей статьи в воспроизводимый mp3-файл. Вам нужно будет установить nltk (natural language toolkit), newspaper3k и gtts.
Программа простая, поскольку мы просто передаем URL-адрес статьи для преобразования, а затем позволяем функции обрабатывать преобразование текста в речь с помощью наших недавно установленных модулей.
#theory // just python
Этот проект на Python использует ряд новых библиотек для преобразования существующей статьи в воспроизводимый mp3-файл. Вам нужно будет установить nltk (natural language toolkit), newspaper3k и gtts.
Программа простая, поскольку мы просто передаем URL-адрес статьи для преобразования, а затем позволяем функции обрабатывать преобразование текста в речь с помощью наших недавно установленных модулей.
#theory // just python
Метод get() у словарей и его «дефолтный» результат.
Немножко теории: метод get() возвращает значение для искомого ключа. Если ключ недоступен, возвращает значение по умолчанию.
Метод get() возвращает значение по ключу если такой ключ присутсвует в списке, если его нет, то метод возвращает дефолтное значение.
Если же мы напишем name_for_userid.get(5454) без указания «дефолтного» значения, то функция вернет None. Довольно удобно и практично.
#theory // just python
Немножко теории: метод get() возвращает значение для искомого ключа. Если ключ недоступен, возвращает значение по умолчанию.
Метод get() возвращает значение по ключу если такой ключ присутсвует в списке, если его нет, то метод возвращает дефолтное значение.
Если же мы напишем name_for_userid.get(5454) без указания «дефолтного» значения, то функция вернет None. Довольно удобно и практично.
#theory // just python
Как отформатировать строку с помощью f-строк
Эти f-строки похожи на метод .format(). Однако они предоставляют более ёмкий способ сделать то же самое, всего лишь добавив к строке букву f в качестве префикса.
#theory // just python
Эти f-строки похожи на метод .format(). Однако они предоставляют более ёмкий способ сделать то же самое, всего лишь добавив к строке букву f в качестве префикса.
#theory // just python
3 трюка с itertools
Сегодня мы рассмотрим несколько функций из довольно полезного модуля, позволяющих эффективно работать с итерируемыми объектами. Начнём с очень простой функции –
Далее,
А для того, чтобы создавать комбинации из элементов выбранного итерируемого объекта, вам понадобится функция
#theory // just python
Сегодня мы рассмотрим несколько функций из довольно полезного модуля, позволяющих эффективно работать с итерируемыми объектами. Начнём с очень простой функции –
chain. Она позволяет "склеивать" несколько итерируемых элементов в один.Далее,
accumulate. Эта функция немного похожа на reduce, но вместо того, чтобы давать одно окончательное значение, она последовательно применяет функцию, заданную вторым аргументом (в данном случае min), к каждому последующему элементу по порядку: min(11), min(11, 3), min(11, 3, 9) и так далее.А для того, чтобы создавать комбинации из элементов выбранного итерируемого объекта, вам понадобится функция
combinations. Вторым аргументом можно задать длину этой самой комбинации.#theory // just python
Wikipedia в Python
Это модуль, который обращается к API Википедии. Устанавливается этот модуль через пакетный менеджер
#modules // just python
Это модуль, который обращается к API Википедии. Устанавливается этот модуль через пакетный менеджер
pip. А использовать его можно без всяких трудностей – всё самое важное показано на картинке.#modules // just python
Pyperclip
Модуль
#modules // just python
Модуль
pyperclip имеет функции copy() и paste(), которые позволяют отправлять текст в буфер обмена вашего компьютера и получать его оттуда. Таким образом, можно прямо через код копировать вывод программы в буфер обмена вместо того, чтобы делать это вручную. Установить этот модуль можно привычным способом через пакетный менеджер pip.#modules // just python
Ускоряем код с помощью векторизации
Одним из приемов для ускорения работы циклов является векторизация вычислений, т. е. использование функций, которые поддерживают операции над векторами. Вообще лучший способ ускорить любой цикл – это отказаться от него. В примере выше для работы с функцией
По сути,
#theory // just python
Одним из приемов для ускорения работы циклов является векторизация вычислений, т. е. использование функций, которые поддерживают операции над векторами. Вообще лучший способ ускорить любой цикл – это отказаться от него. В примере выше для работы с функцией
my_func мы могли бы вызвать ее в цикле для каждого элемента списка, но гораздо проще использовать vectorize.По сути,
vectorize преобразует функцию таким образом, что она начинает принимать весь вектор целиком, а не отдельный его элемент. Надо помнить, что такой подход не всегда приводит к значительному ускорению.#theory // just python
Правильным ответом является [1, 2]
Происходит так из-за того, что дефолтные параметры хранятся в неизменном кортеже в атрибуте функции
А для того, чтобы добиться правильного поведения функции, следует воспользоваться ключевым словом
#theory // just python
Происходит так из-за того, что дефолтные параметры хранятся в неизменном кортеже в атрибуте функции
defaults, который создается один раз в момент определения функции.А для того, чтобы добиться правильного поведения функции, следует воспользоваться ключевым словом
None при определении аргументов по-умолчанию.#theory // just python
Потоковый ввод
Вы можете обрабатывать ввод от пользователя потоком. В таком случае для завершения надо воспользоваться специальной "командой" на Windows — Ctrl + D. Запустить потоковый ввод можно через библиотеку sys и метод stdin.
Если требуется получить и тут же обработать строку, то так и пишем:
#theory // just python
Вы можете обрабатывать ввод от пользователя потоком. В таком случае для завершения надо воспользоваться специальной "командой" на Windows — Ctrl + D. Запустить потоковый ввод можно через библиотеку sys и метод stdin.
Если требуется получить и тут же обработать строку, то так и пишем:
sys.stdin
Если надо в начале прочитать весь потоковый ввод, а затем обработать, то sys.stdin.readlines()
На картинке представлено 2 варианта.#theory // just python
Библиотека PIL
Очень хорошая библиотека для работы с изображениями. С её помощью можно много что сделать с картинками в одну строчку: повернуть по градусам, уменьшить количество цветов (и вес, соответственно), обрезать, сделать похожим на рисунок карандашом.
Плюс, с помощью этой библиотеки очень просто перебрать все пиксели и получить их RGB цвет. Библиотека нуждается в установке:
Для примера напишем простую программу объединяющую два изображения в одно. Для этого оба изображения сделаем прозрачными, будем делать в равном отношении чтобы ничто не выделялось (поэтому умножаем на 0.5), коэффициент можно изменить.
#modules // just python
Очень хорошая библиотека для работы с изображениями. С её помощью можно много что сделать с картинками в одну строчку: повернуть по градусам, уменьшить количество цветов (и вес, соответственно), обрезать, сделать похожим на рисунок карандашом.
Плюс, с помощью этой библиотеки очень просто перебрать все пиксели и получить их RGB цвет. Библиотека нуждается в установке:
install pillowДля примера напишем простую программу объединяющую два изображения в одно. Для этого оба изображения сделаем прозрачными, будем делать в равном отношении чтобы ничто не выделялось (поэтому умножаем на 0.5), коэффициент можно изменить.
#modules // just python
Глубокое (полное) копирование
Глубокая копия создает новую и отдельную копию всего объекта или списка со своим уникальным адресом памяти. Это означает, что любые изменения, внесенные в новую копию объекта или списка, не будут отражаться в исходной. Этот процесс происходит следующим образом: сначала создается новый список или объект, а затем рекурсивно копируются все элементы из исходного в новый.
Короче говоря, оба объекта становятся полностью независимы друг от друга. Это похоже на концепцию передачи по значению в таких языках, как C ++, Java и C #.
#theory // just python
Глубокая копия создает новую и отдельную копию всего объекта или списка со своим уникальным адресом памяти. Это означает, что любые изменения, внесенные в новую копию объекта или списка, не будут отражаться в исходной. Этот процесс происходит следующим образом: сначала создается новый список или объект, а затем рекурсивно копируются все элементы из исходного в новый.
Короче говоря, оба объекта становятся полностью независимы друг от друга. Это похоже на концепцию передачи по значению в таких языках, как C ++, Java и C #.
#theory // just python
Библиотека JmesPath
Как вы уже заметили работать с json файлами в python очень удобно, ведь они отлично конвертируется в словарь. Также мы разобрали полезную библиотеку json, поэтому еще раз говорить о ней не будем.
Но вот нам надо получить данные из файла. А формат json, как правило имеет множество вложений. Искать что-то нужное можно, но не всегда это удобно.
JmesPath облегчает работу в несколько раз. Вместо
#modules // just python
Как вы уже заметили работать с json файлами в python очень удобно, ведь они отлично конвертируется в словарь. Также мы разобрали полезную библиотеку json, поэтому еще раз говорить о ней не будем.
Но вот нам надо получить данные из файла. А формат json, как правило имеет множество вложений. Искать что-то нужное можно, но не всегда это удобно.
JmesPath облегчает работу в несколько раз. Вместо
file['a']['b']['c'] можно написать jmespath.search('a.b.c', file). Кажется стало длиннее, но это потому что мы взяли мало элементов, и согласитесь a.b.c выглядит лучше. Даже отредактировать в случае чего будет проще.#modules // just python