Python — это универсальный и мощный язык, и освоение его расширенных функций может значительно повысить эффективность и читабельность вашего кода. Вот несколько дополнительных советов по Python, которые помогут вам писать более качественный, чистый и эффективный код.
Я написал 2 небольшие книги по Python, которые нужно прочитать на выходных, вот ссылки: (1) https://leanpub.com/learnpython_inweekend_pt1 и (2) https://leanpub.com/learnpython_inweekend_pt2
Понимание списков предлагает краткий способ создания списков. Они часто могут заменить традиционные циклы for и условные операторы, что приводит к созданию более чистого и читаемого кода.
# Traditional approach numbers = [1, 2, 3, 4, 5] squared_numbers = [] for num in numbers: squared_numbers.append(num ** 2) # Using list comprehension squared_numbers = [num ** 2 for num in numbers]
Выражения-генераторы позволяют создавать итераторы в сжатой форме, не сохраняя всю последовательность в памяти, что делает их более эффективными с точки зрения использования памяти.
# List comprehension (creates a list) squared_numbers = [num ** 2 for num in numbers] # Generator expression (creates an iterator) squared_numbers = (num ** 2 for num in numbers)
При переборе итерируемого объекта и необходимости отслеживать индекс каждого элемента функция enumerate() незаменима.
fruits = ['apple', 'banana', 'cherry'] for index, fruit in enumerate(fruits): print(f"Index: {index}, Fruit: {fruit}")
Использование метода join() для объединения строк более эффективно, чем использование оператора, особенно для больших строк.
fruits = ['apple', 'banana', 'cherry'] fruit_string = ', '.join(fruits) print(fruit_string) # Output: apple, banana, cherry
По умолчанию Python хранит атрибуты экземпляра в словаре, который может занимать значительный объем памяти. Использование __slots__ может сократить использование памяти за счет выделения памяти для фиксированного набора переменных экземпляра.
class Point: __slots__ = ['x', 'y'] def __init__(self, x, y): self.x = x self.y = y
Менеджер контекста contextlib.suppress позволяет игнорировать определенные исключения, упрощая ваш код за счет исключения ненужных блоков try-Exception.
from contextlib import suppress with suppress(FileNotFoundError): with open('file.txt', 'r') as file: contents = file.read()
Модуль itertools предлагает набор эффективных функций для работы с итераторами. Такие функции, как произведение, перестановки и комбинации, могут упростить сложные операции.
import itertools # Calculate all products of an input print(list(itertools.product('abc', repeat=2))) # Calculate all permutations print(list(itertools.permutations('abc')))
Декоратор functools.lru_cache может кэшировать результаты дорогостоящих вызовов функций, повышая производительность.
from functools import lru_cache @lru_cache(maxsize=32) def fibonacci(n): if n9. Мастер-декораторы для более чистого кода
Декораторы — мощный инструмент для изменения поведения функций или классов. Их можно использовать для ведения журналов, контроля доступа и многого другого.
def my_decorator(func): def wrapper(): print("Something is happening before the function is called.") func() print("Something is happening after the function is called.") return wrapper @my_decorator def say_hello(): print("Hello!") say_hello()10. Используйте трюк For-Else
Конструкция for-else в Python позволяет выполнить блок else после нормального завершения цикла for (т. е. без появления оператора прерывания). Это может быть особенно полезно при поисковых операциях.
for n in range(2, 10): for x in range(2, n): if n % x == 0: print(f"{n} equals {x} * {n//x}") break else: # Loop fell through without finding a factor print(f"{n} is a prime number")Заключение
Включив эти расширенные советы по Python в свой рабочий процесс разработки, вы сможете писать более эффективный, читаемый и поддерживаемый код.
Независимо от того, оптимизируете ли вы использование памяти с помощью __slots__, упрощаете строковые операции с помощью join() или используете возможности модуля itertools, эти методы могут значительно улучшить ваши навыки программирования на Python.
Продолжайте изучать и практиковать эти концепции, чтобы оставаться впереди в своем путешествии по Python.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3