Программирование на Python

Как написать питонический код

Десять примеров стиля кода Python, которые сделают вашу жизнь программиста на Python проще

Стиль кода Pythonic экономит мое время и упрощает жизнь моей профессии инженера по машинному обучению и веб-разработчика. До того, как я научился писать код на Python, мой код был беспорядочным и больше напоминал стиль Java, чем сам Python. Я все еще не могу уйти от кода в стиле Java, java действительно влияет на мой код стиля на всех языках программирования. Но после того, как я научился писать элегантный код на Python или код на Python, все стало выглядеть чище, легче читается, и многие вещи начинают сиять.

Мой опыт программирования начинается с изучения паскала в старшей школе. Изучив паскаль в старшей школе, я снова встречаюсь с паскалем в моем университете. Но мое любопытство к языку программирования заставляет меня начать изучать другой язык программирования, например, C / C ++, Java и PHP.

Один из языков программирования, который действительно повлиял на меня, - это язык программирования Java. Это действительно открывает мне дорогу к объектно-ориентированному программированию, которое облегчает мне жизнь при разработке программного обеспечения для моей диссертации на степень бакалавра информационных технологий.

Когда я впервые интенсивно изучаю Python, то, как я пишу переменную, функцию, метод, неосознанно взяты из кода в стиле java. Итак, позвольте мне показать вам, чем похож питонический код и чем похож непифонический код.

Су, начнем.

Пример 1 Объявление переменной

notPythonicVarName = "hai this is string"
pythonic_var_name = "hai this is string, with pythonic code"
a, b = 0, 1
d, e = "data", 100
f = "single variable"
name:str = "variable with type, only work with python 3"

Пример 2 Цикл по списку

# Bad Code (Not Pythonic Code)
data = ["one", "two", "three"]
for i in range(0, len(data)):
    print(data[i])
# Pythonic Code
data = ["one", "two", "three"]
for val in data:
    print(val)
# output from both code
# one
# two
# three

Пример 3 Цикл по списку с индексом

# Bad Code (Not Pythonic Code)
data = ["one", "two", "three"]
for i in range(len(data)):
    print(f'{i}:{data[i]}')
# Pythonic Code
data = ["one", "two", "three"]
for idx, val in enumerate(data):
    print(f'{idx}:{val}')
# output from both code
# 0:one
# 1:two
# 2:three

Пример 4: повторение списков в обратном направлении

# Bad Code (Not Pythonic Code)
colors = ["red", "green", "blue", "black", "white"]
for idx in range(len(colors)-1, -1, -1):
    print(f"{colors[idx]}")
# Pythonic Code
colors = ["red", "green", "blue", "black", "white"]
for color in reversed(colors):
    print(f"{color}")
# output from both code
# white
# black
# blue
# green
# red

Пример 5: повторение двух коллекций

names = ["fandi", "hasan", "umar"]
colors = ["red", "green", "blue", "black", "white"]
# Bad Code (Not Pythonic Code)
n = min(len(names), len(colors))
for idx in range(n):
    print(f'{names[idx]} --- {colors[idx]}')
# Pythonic Code 
for name, color in zip(names, colors):
    print(f'{name} --- {color}')
# output from both code
# fandi --- red
# hasan --- green
# umar --- blue

Пример 6 Создание списка номеров

# Not Soo Good (Not so Pythonic Code)
list_number = []
for i in range(10):
    list_number.append(i)
print(list_number)
# Pythonic Code
# List Comprehension
list_number = [idx for idx in range(10)]
print(list_number)
# output from both code
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Пример 7 Цикл по словарю

dc = {"umar": "red", "hasan":"green", "fandi":"blue"}
# Good Pythonic
for key in dc:
    print(f'{key} --- {dc[key]}')
# More Pythonic
for key, val in dc.items():
    print(f'{key} --- {val}')
# output from both 
# umar --- red
# hasan --- green
# fandi --- blue

Пример 7 Создание словаря из пар

names = ["fandi", "hasan", "umar"]
colors = ["red", "green", "blue"]
# Not So Pythonic
d = {}
for name, color in zip(names, colors):
    d[name] = color
# More Pythonic Code
d = dict(zip(names, colors))
# output from both code
# {'fandi': 'red', 'hasan': 'green', 'umar': 'blue'}

Пример 8 Подсчет со словарем

colors = ["red", "green", "blue", "green", "red", "green"]
# Not Soo Pythonic Code
d = {}
for color in colors:
    if color not in d:
       d[color] = 0
    d[color] += 1
# Pythonic Code
d = {}
for color in colors:
    d[color] = d.get(color, 0) + 1
# Another Pythonic Code
from collections import defaultdict
d = defaultdict(int)
for color in colors:
    d[color] += 1

# code output
# {'red': 2, 'green': 3, 'blue': 1}

Пример 9 Объявление функции

# Bad Code (Not Pythonic Code)
def addNumber(a, b):
    return a + b
print(addNumber(10,5))
# Pythonic Code
def add_number(a, b):
    return a + b
print(add_number(10,5))
# output from both code
# 15

Пример 10 Объявление класса и метода

#Not Pythonic Class Method
class BadClass:
    def sumAllNumber(self, list_number):
        return sum(list_number)
obj = BadClass()
out = obj.sumAllNumber([5,5,2])
print(out)
# Pythonic Class Method
class PythonicClass:
    def sum_numbers(self, numbers):
        return sum(numbers)
obj = PythonicClass()
out = obj.sum_numbers([2,5,5])
print(out)
# output from both code
# 12

Как отличить питонический код?

Душа стиля кода Python была высечена в дзен Python. Вы можете получить дзен Python из Python, написав import this в консоли Python. Подробно вы можете увидеть это на этой картинке ниже.

Пример, который вы видели в этой статье, взят из многих ресурсов, один из них взят из выступления Раймонда Хеттингера на YouTube. Я несколько раз слежу за видео Рэймонда Хеттингера на YouTube, он открывает мне дорогу к написанию кода на Python, чтобы он был более питоническим, простым и элегантным.

Этот старик - мой любимый человек в питоне, одна из фраз, которые я выделил из видео Раймонда Хеттингера, если я не ошибаюсь,

хороший код на Python похож на бизнес-логику

Я настоятельно рекомендую вам посмотреть его лекцию на python, мировоззрение программиста на python отличается от других программистов. Итак, чтобы сформировать свое мнение и сделать ваш код более быстрым, читаемым, простым в управлении и сопровождении, я предлагаю вам следить за Раймондом Хеттингером и следить за ним в Youtube и Twitter.

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