№8 сделает из вас профессионального программиста на Python

Если вы используете Python каждый день и хотите изучить несколько приемов, которые сделают ваш код более читабельным, вы можете ознакомиться с этими 18 фрагментами ниже.

1. Строки интерполированного формата

F-строки решают самые большие проблемы со строками формата в стиле C и являются мощным инструментом, поскольку позволяют напрямую встраивать произвольные выражения Python в спецификаторы формата.

val = 108
print(f'Value: {val}')

2. Предпочитаете несколько заданий, распаковывая чрезмерную индексацию

Удобочитаемость — одно из основных преимуществ Python, и он имеет специальный синтаксис, называемый распаковкой, для присвоения нескольких значений в одном выражении.

dict = {'apple' " 120, 'banana': 60, 'nuts': 102}
items = tuple(dict.items())
print(items)
apple, banana, nuts = items #unpacking

3. Тернарный оператор в Python

Однострочные выражения, которые слишком сложны для чтения, можно легко написать на Python. Выражение If/Else представляет собой более удобочитаемую альтернативу использованию логических операторов и выражений.

syntax : value if true else false

4. Перечислить — это новый диапазон.

Если вы хотите выполнить итерацию по итерируемому объекту, а также получить итератор, вы можете использовать функцию enumerate(). Вы можете указать второй параметр для перечисления, чтобы указать число, с которого следует начать подсчет (ноль: по умолчанию).

l = ['deku', 'bakugo', 'todoroki', 'naruto']
for indx, val in enumerate(l):
  print(f'Value at index {indx} is: {val}')

5. Используйте zip для параллельной обработки итераторов.

При повторении нескольких итераций проблема со всем оператором цикла выглядит визуально зашумленной. Использование enumerate немного улучшает ситуацию, но все равно не идеально. Zip приходит на помощь.

agents = ['Reyna', 'Jett', 'Viper']
kills = [13, 2, 14]
for agent, kill in zip(agents, kills):
  print(f'Agent {agent} : Kills {kill}')

6. Используйте новый оператор моржа

Много раз мы, программисты, сталкиваемся с этим шаблоном извлечения значения, проверки, не равно ли оно нулю, а затем его использования. Это затрудняет поддержку основной функции Python при написании программ, т. е. удобочитаемости. Так, в Python 3.8 был добавлен оператор walrus для оптимизации именно этого типа кода.

if killCount := mostKills('Jett', 0)
   killFeed(killCount)
else:
   print('Jett noob')

7. Знайте, как нарезать свои последовательности

Нарезка пирога и синтаксис нарезки в Python верны своей природе. Нарезка позволяет получить доступ к подмножеству элементов последовательности с минимальными усилиями.

l = [1, 2, 3, 4, 5, 6]
syntax : l[start:end]
l[:] # all elements
l[:3] # start at 0 and end at 3rd element
l[3:] # start from 3rd element and end at last
use negative slicing
l[:-1] # all elements except 6 (ie last)
l[2:-1] # start from 2nd element and end and remove last element

8. Знайте, когда использовать нарезку и индексацию

Вы можете полагаться на индексирование и нарезку, но во многих случаях вы не будете знать о размере итерируемого объекта, и в этот раз вы столкнетесь с ошибкой времени выполнения. Лучший способ решить эту проблему — использовать выражения со звездочкой.

first, *middleIDK, last = [1, 2, 3, 4, 5]
first # 1
middleIDK # 2, 3, 4
last # 5

9. Превратите любой класс в словарь

Классы имеют встроенный атрибут __dict__, который означает, что создаваемые объекты являются словарями и могут использоваться как один, когда это необходимо.

class Obj:
 def __init__(self, a = 'test', b = 108):
    self.a = a
    self.b = b
obj = Obj()
print(vars(obj)) # vars() is pythonic way to convert to dictionary

10. Обработайте отсутствующие ключи словаря с помощью get

Если вы обычно используете «in», чтобы проверить, присутствует ли ключ в словаре, вы упускаете лучший доступный вам вариант.

Вы можете использовать метод setdefault для получения значения ключа, если он отсутствует, метод присваивает этому ключу предоставленное значение по умолчанию.

agents = leaderboard.setdefault(key, [])

В идеале вы должны стараться не использовать это, так как это создаст значение по умолчанию для каждого не найденного ключа и может привести к снижению производительности.

Однако, если вам нужен лучший подход к удобочитаемости, вы можете использовать метод get вместе с оператором walrus, подобным этому.

if (agents := ) is None:
   leaderboad[key] = agents = [] 

Если вам понравилась эта статья и вы хотите узнать больше о таких вещах в Python, ознакомьтесь с этими статьями.









Вы можете проверить больше такого контента в моем профиле.