Программирование на 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 Codefrom
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, увидимся в следующий раз в другой статье.