«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Продвинутые хаки Python или

Продвинутые хаки Python или

Опубликовано 30 июля 2024 г.
Просматривать:227

Advanced Python Hacks ou

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

Я написал 2 небольшие книги по Python, которые нужно прочитать на выходных, вот ссылки: (1) https://leanpub.com/learnpython_inweekend_pt1 и (2) https://leanpub.com/learnpython_inweekend_pt2


1. Используйте списки для краткого кода

Понимание списков предлагает краткий способ создания списков. Они часто могут заменить традиционные циклы 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]

2. Используйте выражения-генераторы для повышения эффективности памяти

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

# 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)

3. Используйте enumerate() для отслеживания индекса.

При переборе итерируемого объекта и необходимости отслеживать индекс каждого элемента функция enumerate() незаменима.

fruits = ['apple', 'banana', 'cherry']
for index, fruit in enumerate(fruits):
    print(f"Index: {index}, Fruit: {fruit}")

4. Упростите конкатенацию строк с помощью join()

Использование метода join() для объединения строк более эффективно, чем использование оператора, особенно для больших строк.

fruits = ['apple', 'banana', 'cherry']
fruit_string = ', '.join(fruits)
print(fruit_string)  # Output: apple, banana, cherry

5. Используйте __slots__, чтобы уменьшить использование памяти

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

class Point:
    __slots__ = ['x', 'y']
    def __init__(self, x, y):
        self.x = x
        self.y = y

6. Используйте contextlib.suppress для игнорирования исключений

Менеджер контекста contextlib.suppress позволяет игнорировать определенные исключения, упрощая ваш код за счет исключения ненужных блоков try-Exception.

from contextlib import suppress

with suppress(FileNotFoundError):
    with open('file.txt', 'r') as file:
        contents = file.read()

7. Используйте модуль itertools.

Модуль itertools предлагает набор эффективных функций для работы с итераторами. Такие функции, как произведение, перестановки и комбинации, могут упростить сложные операции.

import itertools

# Calculate all products of an input
print(list(itertools.product('abc', repeat=2)))

# Calculate all permutations
print(list(itertools.permutations('abc')))

8. Используйте functools.lru_cache для кэширования.

Декоратор functools.lru_cache может кэшировать результаты дорогостоящих вызовов функций, повышая производительность.

from functools import lru_cache

@lru_cache(maxsize=32)
def fibonacci(n):
    if n 



9. Мастер-декораторы для более чистого кода

Декораторы — мощный инструмент для изменения поведения функций или классов. Их можно использовать для ведения журналов, контроля доступа и многого другого.

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.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/hisham_elamir/10-advanced-python-hacks-4-you-j2o?1. Если обнаружено какое-либо нарушение прав, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3