首頁  >  文章  >  後端開發  >  進階 Python Hacks 或

進階 Python Hacks 或

王林
王林原創
2024-07-24 09:26:41788瀏覽

Advanced Python Hacks ou

Python 是一門多功能且功能強大的語言,掌握其高級功能可以顯著提高您的編碼效率和可讀性。以下是一些進階 Python 技巧,可協助您編寫更好、更簡潔、更有效率的程式碼。

我寫了兩本週末閱讀的關於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-except 區塊來簡化程式碼。

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 < 2:
        return n
    return fibonacci(n-1) + fibonacci(n-2)

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技巧

Python 中的 for-else 結構可讓您在 for 迴圈正常完成後執行 else 區塊(即,不會遇到break語句)。這在搜尋操作中特別有用。

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 之旅中保持領先。

以上是進階 Python Hacks 或的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn