Важная тема в разработке на Python, виртуальные окружения используются почти в каждом более или менее большом проекте
Виртуальное окружение #урок 11
Виртуальное окружение #урок 11
Telegraph
Виртуальное окружение
Определение Виртуальное окружение - изолированная среда для проектов на Python, в рамках которой запускается приложение со своими библиотеками, обновление и изменение которых не затронет другие приложение, использующие те же библиотеки. Причины использовать…
Начинаем серию уроков, связанных с функциями, в этой статье разобраны только основные моменты
Функции: часть 1 #урок 12
Функции: часть 1 #урок 12
Telegraph
Функции: часть 1
Определение Функция - это блок кода, который можно использовать несколько раз в разных местах программы. Мы можем передавать функции аргументы и получать возвращаемые значения. Создание и вызов Чтобы определить функцию в языке Python, нужно использовать литерал…
Надеюсь, за прошедшее время вы успели разобрать предыдущий материал, а сейчас - документирование функций и области видимости
Функции: часть 3 #урок 14
Функции: часть 3 #урок 14
Telegraph
Функции: часть 3
Документирование На читаемость и быстроту понимания вашего кода может повлиять наличие документации. Строки документации - строковые литералы, которые являются первым оператором в модуле, функции, классе или определении метода. Такая строка документации становится…
Оператор pass делает абсолютно ничего, то есть совсем ничего. В ходе исполнения данного оператора ничего не происходит, поэтому он может использоваться в качестве некой заглушки в тех местах, где это синтаксически необходимо.
Например, вам надо сделать несколько функций, вы написали def'ы и названия, но сам код еще не успели, однако программу надо запустить и проверить что-то другое. Вот тут и понадобится pass.
Например, вам надо сделать несколько функций, вы написали def'ы и названия, но сам код еще не успели, однако программу надо запустить и проверить что-то другое. Вот тут и понадобится pass.
def func():Ну или в конструкции try-except, чтобы просто проигнорировать и никак не обрабатывать ошибку в программе.
pass
try:В общем, полезная штука, используйте.
any_function()
except:
pass
Сортировка пузырьком
В Python уже есть встроенные функции сортировок массивов sort() и .sorted(), но достаточно важно самому знать хотя бы несколько реализаций.
Суть алгоритма в том, что совершается несколько проходов по массиву. При проходе последовательно сравниваются пары элементов в массиве и в случае несоответствия выбранному порядку меняются местами. Если пары элементов находятся в верном порядке, то ничего не происходит. В результате первого прохода максимальный элемент окажется в конце, то есть всплывет словно пузырек. Затем все повторяется до того момента пока весь массив не будет отсортирован. Последний проход будет по отсортированному массиву.
В Python уже есть встроенные функции сортировок массивов sort() и .sorted(), но достаточно важно самому знать хотя бы несколько реализаций.
Суть алгоритма в том, что совершается несколько проходов по массиву. При проходе последовательно сравниваются пары элементов в массиве и в случае несоответствия выбранному порядку меняются местами. Если пары элементов находятся в верном порядке, то ничего не происходит. В результате первого прохода максимальный элемент окажется в конце, то есть всплывет словно пузырек. Затем все повторяется до того момента пока весь массив не будет отсортирован. Последний проход будет по отсортированному массиву.
def bubble_sort(array):Для наглядности визуальная реализация сортировки представлена ниже. #алгоритм
for i in range(len(array), 0, -1):
for j in range(1, i):
if array[j - 1] > array[j]:
tmp = array[j-1]
array[j-1] = array[j]
array[j] = tmp
return array
Напоминаю, что у меня есть два собственных телеграм бота. Настоятельно прошу протестировать и написать мне, что думаете насчет этих проектов (ссылка на меня в описании канала).
@tweather_bot - основной проект, выдает погоду офигенском в визуальном формате, а фишка в том, что можно искать не только по городу, но и по улице или даже названию музея. Написал совместно основателем канала @dopamine_lacking.
@CasualCatsBot - простой и забавный бот, который выдает случайного котика из интернета. Написал быстренько чисто для расслабона, однако вышло прикольно.
@tweather_bot - основной проект, выдает погоду офигенском в визуальном формате, а фишка в том, что можно искать не только по городу, но и по улице или даже названию музея. Написал совместно основателем канала @dopamine_lacking.
@CasualCatsBot - простой и забавный бот, который выдает случайного котика из интернета. Написал быстренько чисто для расслабона, однако вышло прикольно.
Практически самая популярная конструкция в Python, которую применяют в каждой плюс-минус серьезной программе
"If name main" #урок 15
"If name main" #урок 15
Telegraph
"If name main"
Если кратко, то такая конструкция - точка входа в программу. __name__ Для наглядности покажу пример, создадим программу и напишем следующее. num = 100 print(globals()) На выход получаем что-то типа такого: {'__name__': '__main__', '__doc__': None, '__package__':…
Сегодня мы разберем с виду сложную, но легкую в использовании конструкцию, которую можно применить практически везде
*args, **kwargs #урок 16
*args, **kwargs #урок 16
Telegraph
*args, **kwargs
Думаю, многие хоть раз видели такую запись, сейчас мы узнаем, что это за магические символы. Сообщу заранее, что args и kwargs - общепринятые имена переменных, а разбирать мы будем звездочки перед нимим. def func(*args, **kwargs): # code *args Рассмотрим…
Forwarded from Hello World
12 небольших фишек для улучшения твоего кода
1. Обмен значений
2. Получение строки из списка
3. Разбиение строки на список
4. Инициализация листа каким либо значением
5. Слияние словарей
6. Переворачивание строки
7. Возврат нескольких переменных из функции
8. Итерирование по словарю
9. Инициализация пустых контейнеров
10. Удаление символов в конце строки
11. Проверка занимаемой объектом памяти
12. Нахождение наиболее частого элемента в списке
#tips
1. Обмен значений
x, y = 1, 2
x, y = y, x
2. Получение строки из списка
a_list = [‘I’, ‘like’, ‘python’, ‘programming’]
a_string = “ “.join(a_list)
3. Разбиение строки на список
a_string = ‘I like python programming’
a_list = a_string.split()
4. Инициализация листа каким либо значением
[0]*1000 # лист, заполненный 1000 нулями
[1]*1000 # лист, заполненный 1000 единицами
5. Слияние словарей
x = {‘a’:1, ‘b’:2}
y = {‘c’:3, ‘d’:4}
z = {**x, **y}
6. Переворачивание строки
a = ‘My string’
a = a[::-1]
7. Возврат нескольких переменных из функции
def test(x,y):
return x,y
a,b = test(1,2)
8. Итерирование по словарю
a_dict = {‘a’:1, ‘b’:2, ’c’:3}
for k, v in a_dict.items():
print(‘{0}:{1}’.format(k, v))
9. Инициализация пустых контейнеров
a_list = list()
a_dict = dict()
a_set = set()
a_tuple = tuple()
10. Удаление символов в конце строки
my_string = ‘My string///‘
my_string.strip(‘/‘)
11. Проверка занимаемой объектом памяти
import sys
x = 1
print(sys.getsizeof(x))
12. Нахождение наиболее частого элемента в списке
a_list = [1, 2, 3, 1, 1, 4, 1, 4, 4, 1]
print(max(set(a_list), key=a_list.count))
#tips
Изучаем две мощные функции map и filter, а также затрагиваем тему анонимных lambda-функций
Map и filter #урок 17
Map и filter #урок 17
Telegraph
Map и filter
Эти две функции - очень мощные инструменты в Python, которые входят в тему функционального программирования. Зачастую вместе с ними используют анонимные lambda-функции. Map На вход принимает два обязательных аргмумента: функция-обработчик и итерируемый объект…
Если вы хотите итерировать несколько, например, списков, то функция zip станет хорошим выбором. Она возвращает новый список кортежей, в которых находятся попарно элементы из списков.
Обратите внимание, что zip принимает итерируемые объекты как отдельные аргументы, а не как список аргументов. Чтобы распаковать значения, вы можете использовать оператор *.
nums = [1, 2, 3]
words = ['one', 'two', 'three']
for w, n in zip(words, nums):
print(f'{w} = {n}')
# one = 1
# two = 2
# three = 3
Обратите внимание, что zip принимает итерируемые объекты как отдельные аргументы, а не как список аргументов. Чтобы распаковать значения, вы можете использовать оператор *.
list(zip(*zip(words, nums)))
# [('one', 'two', 'three'), (1, 2, 3)]
Функция exit создана для удобства работы в интерактивном режиме, однако не рекомендуется использовать её внутри скриптов. По факту она также просто поднимают исключение, и при попытке вызова без скобок напишут подсказку о правильном способе выхода из интерпретатора:
>>> exitИспользовать sys.exit стоит потому, что эта функция лежит в стандартном модуле и будет всегда там доступна. Также это довольно явный способ выразить своё желание завершить программу.
Use exit() or Ctrl-D (i.e. EOF) to exit
>>> exit()
nameless@pycoders:~$
import sys
try:
# code
except:
sys.exit()
In : int('୧৬𝟙༣')0, 1, 2, 3, 4, 5, 6, 7, 8, 9 - не единственные символы, которые считаются цифрами. Python следует правилам Юникода и обрабатывает несколько сотен символов как цифры, полный список вот здесь.
Out: 1613
Это влияет на такие функции, как int, unicode.isdecimal и даже re.match:
In : int('෯')
Out: 9
In : '٢'.isdecimal()
Out: True
In : bool(re.match('\d', '౫'))
Out: True
Иногда приходится писать код с несколькими контекстными менеджерами, что выглядит не особо лаконично:
Начиная с Python 2.7 и 3.1, вы можете использовать всего один with:
До этого вы могли бы использовать функцию nested из contextlib:
with open('f') as f:
with open('g') as g:
with open('h') as h:
pass
Начиная с Python 2.7 и 3.1, вы можете использовать всего один with:
o = open
with o('f') as f, o('g') as g, o('h') as h:
pass
До этого вы могли бы использовать функцию nested из contextlib:
from contextlib import nested
with nested(o('f'), o('g'), o('h')) as (f, g, h):
pass
В этот раз мы с вами поговорим о декораторах, которые используются повсеместно практически во всех Python приложениях
Декораторы #урок 18
Декораторы #урок 18
Telegraph
Декораторы
Декоратор - это функция, которая принимает функцию и возвращает функцию. Звучит странно, но лучше запомните именно такое определение, это достаточно важно для понимания. А вообще, декораторы по сути являются некими модификаторами к нашим функциям. Первый…
В Python блок else может быть представлен не только после if, но и после for и while. Код внутри else выполняется, только если цикл не был прерван с помощью break.
Типичный пример - поиск чего-либо в цикле с использованием break при нахождении:
Типичный пример - поиск чего-либо в цикле с использованием break при нахождении:
for х in [2, 3, 4, 5]:
if x % 2 == 1:
print (x)
break
else:
print('Нет нечётных элементов в списке')
# Output: 3
for х in [2, 4, 6]:
if x % 2 == 1:
print(x)
break
else:
print('Нет нечётных элементов в списке')
# Output: Нет нечётных элементов в списке
В Python имя переменной может состоять из одного подчеркивания: _. Хотя обычно такие имена не достаточно описательны и не должны использоваться, есть по крайней мере три случая, когда _ имеет общепринятый смысл.
Во-первых, интерактивные интерпретаторы Python используют _ для хранения результата последнего выполненного выражения:
Во-вторых, руководство модуля gettext рекомендует псевдоним его функции gettext() для _(), чтобы минимизировать загромождение вашего кода.
В-третьих, _ используется, когда вам нужно придумать имена для значений, которые вам не нужны:
Во-первых, интерактивные интерпретаторы Python используют _ для хранения результата последнего выполненного выражения:
>>> 2 + 2
4
>>> _
4
Во-вторых, руководство модуля gettext рекомендует псевдоним его функции gettext() для _(), чтобы минимизировать загромождение вашего кода.
В-третьих, _ используется, когда вам нужно придумать имена для значений, которые вам не нужны:
for _ in range(10):
print('Hello!')
В этой статье мы разбираем основы работы с изображениями на Python и в частности смотрим на достаточно удобный модуль Pillow
Обработка изображений с помощью Pillow
Обработка изображений с помощью Pillow
Telegraph
Обработка изображений с помощью Pillow
Pillow - крайне полезный и простой инструмент для работы с изображениями на Python. Для того, чтобы установить модуль pillow достаточно просто ввести в терминал pip install pillow. Открытие и вывод изображения Для начала мы откроем картинку и выведем ее на…
Если dict запоминает порядок элементов в Python3.6 +, то тогда зачем может понадобится collection.OrderedDict? Вот зачем:
>>> OrderedDict(a=1, b=2) == OrderedDict(b=2, a=1)
False
>>> dict(a=1, b=2) == dict(b=2, a=1)
True