Сегодня мы разберем с виду сложную, но легкую в использовании конструкцию, которую можно применить практически везде
*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('୧৬𝟙༣')
Out: 1613
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 - не единственные символы, которые считаются цифрами. Python следует правилам Юникода и обрабатывает несколько сотен символов как цифры, полный список вот здесь.Это влияет на такие функции, как 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
Начиная с Python 3.5, есть возможность использовать распаковку со словарями и списками.
Для словарей эта форма даже более мощная, чем функция dict, поскольку она позволяет переопределять значения:
In: {**{'a': 1}, 'b': 2, **{'c': 3}}
Out: {'a': 1, 'b': 2, 'c': 3}
In: [1, 2, *[3, 4]]
Out: [1, 2, 3, 4]Для словарей эта форма даже более мощная, чем функция dict, поскольку она позволяет переопределять значения:
In: {**{'a': 1, 'b': 1}, 'a': 2, **{'b': 3}}
Out: {'a': 2, 'b': 3}Статья рекомендуется всем тем, кто проводит много времени сидя на компьютером, да и не только, потому что поддерживать своё состояние необходимо всем
Здоровье программиста
Здоровье программиста
Telegraph
Здоровье программиста
Думаю, абсолютно все программисты и не только сталкиваются с проблемами, связанными со здоровьем, в связи с работой перед монитором. В этой статье мы разберем самые частые ошибки и приведем рекомендации, как поддерживать своё здоровье даже с сидячим образом…
Часто бывает очень удобно использовать namedtuple. Например, у вас есть словарь по типу "имя": "оценка", и вы хотите сортировать по "оценке".
Сортировка с наименьшей оценкой сначала:
Сортировка по наивысшему рангу:
Теперь вы можете получить имя и оценку следующим образом:
import collections
Player = collections.namedtuple('Player', 'score name')
d = {'John': 5, 'Alex' : 10, 'Richard': 7}
Сортировка с наименьшей оценкой сначала:
worst = sorted(Player(v ,k) for (k, v) in d.items())
Сортировка по наивысшему рангу:
best = sorted([Player(v, k) for (k, v) in d.items()], reverse=True)
Теперь вы можете получить имя и оценку следующим образом:
player = best[1]
player.name
# Out: 'Richard'
player.score
# Out: 7
Counter из модуля collections - вид словаря, который позволяет считать количество неизменяемых объектов (в большинстве случаев, строк). Например, можно проверить, составлены ли разные слова из одного и того же набора букв.
from collections import Counter
def check(str1, str2):
return Counter(str1) == Counter(str2)
print(check('abc', 'cba'))
# True
print(check('sdf', 'asd'))
# False
Начинаем новую серию уроков, где будем создавать приложения с пользовательским интерфейсом с помощью модуля Tkinter
Tkinter: часть 1
Tkinter: часть 1
Teletype
Tkinter: часть 1
Создаем свои первые приложения с пользовательским интерфейсом.
В отличие от некоторых языков программирования типы данных Python преобразуются в False, если они пусты, и в True, если нет. Это означает, что вам не нужно проверять, например, что длина строки, кортежа, списка или словаря равна 0. Достаточно просто проверить "правдивость" объекта.
Как и следовало ожидать, нулевое число ложно, в то время как все остальные числа истинны.
Например, следующие выражения эквивалентны. Здесь my_object - это строка, но это может быть другой тип Python (с соответствующими изменениями в тесте на равенство)
Как и следовало ожидать, нулевое число ложно, в то время как все остальные числа истинны.
Например, следующие выражения эквивалентны. Здесь my_object - это строка, но это может быть другой тип Python (с соответствующими изменениями в тесте на равенство)
my_object = 'Test' # True example
# my_object = '' # False example
if len(my_object) > 0:
print('my_object is not empty')
if len(my_object):
print('my_object is not empty')
# 0 will evaluate to False
if my_object != '':
print('my_object is not empty')
if my_object:
print('my_object is not empty')
# an empty string will evaluate to False
Enumerate - встроенная функция Python. Ее полезность не может быть сведена в одну строку. Тем не менее, большинство новичков и даже некоторые опытные программисты не знают об этом. Это позволяет нам итерировать что-либо в цикле и иметь автоматический счетчик. Вот пример:
И это еще не все, enumerate также принимает необязательный аргумент, который делает функцию еще более полезной.
Необязательный аргумент позволяет нам указать перечислить, откуда начинать индекс. Вы также можете создавать кортежи, содержащие индекс и элемент списка, используя список. Вот пример:
for counter, value in enumerate(some_list):
print(counter, value)И это еще не все, enumerate также принимает необязательный аргумент, который делает функцию еще более полезной.
my_list = ['apple', 'banana', 'grapes', 'pear']
for c, value in enumerate(my_list, 1):
print(c, value)
# Output:
# 1 apple
# 2 banana
# 3 grapes
# 4 pearНеобязательный аргумент позволяет нам указать перечислить, откуда начинать индекс. Вы также можете создавать кортежи, содержащие индекс и элемент списка, используя список. Вот пример:
my_list = ['apple', 'banana', 'grapes', 'pear']
counter_list = list(enumerate(my_list, 1))
print(counter_list)
# Output: [(1, 'apple'), (2, 'banana'), (3, 'grapes'), (4, 'pear')]Продолжаем осваивать модуль Tkinter, в этот раз учимся использовать Canvas и сразу же применяем его на практике
Tkinter: часть 2
Tkinter: часть 2
Teletype
Tkinter: часть 2
Продолжим изучение модуля Tkinter, сделав приложение, которые покажет график синусоиды.
Константы модуля string
Так как это встроенный модуль, то мы должны импортировать его перед использованием любых его констант и классов. А теперь давайте посмотрим на те самые константы, определенные в этом модуле.
Так как это встроенный модуль, то мы должны импортировать его перед использованием любых его констант и классов. А теперь давайте посмотрим на те самые константы, определенные в этом модуле.
>>> import string
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.digits
'0123456789'
>>> string.hexdigits
'0123456789abcdefABCDEF'
>>> string.whitespace
' \t\n\r\x0b\x0c'
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_{|}~'