Python中那些簡單又好用的特性和用法

ops-coffee發表於2024-03-06

Python作為我的主力語言幫助我開發了許多DevOps運維自動化系統,這篇文章總結幾個我在編寫Python程式碼過程中用到的幾個簡單又好用的特性和用法,這些特性和用法可以幫助我們更高效地編寫Python程式碼

1.鏈式比較

x = 5
y = 10
z = 15

if x < y < z:
    print("x is less than y and y is less than z")

2.鏈式賦值

total_regions = region_total_instances = total_instances = 0

3.三元運算子

x = 10
result = "Greater than 10" if x > 10 else "Less than or equal to 10"

4.使用argskwargs傳遞多個位置引數或關鍵字引數給函式

def example_function(*args, **kwargs):
    for arg in args:
        # 執行相關操作
    for key, value in kwargs.items():
        # 執行相關操作

5.使用enumerate函式同時獲取索引和值

my_list = ['apple', 'banana', 'orange']
for index, value in enumerate(my_list):
    print(f"Index: {index}, Value: {value}")

6.使用zip函式同時迭代多個可迭代物件

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
for item1, item2 in zip(list1, list2):
    print(f"Item from list1: {item1}, Item from list2: {item2}")

7.使用itertools模組進行迭代器和迴圈的高階操作

import itertools
for item in itertools.chain([1, 2, 3], ['a', 'b', 'c']):
    print(item)

8.使用collections.Counter進行計數

from collections import Counter
my_list = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
counter = Counter(my_list)
print(counter)  # 輸出為Counter({'apple': 3, 'banana': 2, 'orange': 1})

9.使用anyall函式對可迭代物件中的元素進行邏輯判斷

my_list = [True, False, True, True]
print(any(my_list))  # 輸出為True
print(all(my_list))  # 輸出為False

10.使用sorted函式對可迭代物件進行排序

my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_list = sorted(my_list)
print(sorted_list)  # 輸出為[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

11.使用set進行集合操作

set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
print(set1.union(set2))  # 輸出為{1, 2, 3, 4, 5, 6, 7}
print(set1.intersection(set2))  # 輸出為{3, 4, 5}

12.上下文管理器

class CustomContextManager:
    def __enter__(self):
        # 在程式碼塊執行之前執行的操作
        # 可以返回一個值,該值將被賦值給as子句中的變數

    def __exit__(self, exc_type, exc_val, exc_tb):
        # 在程式碼塊執行之後執行的操作
        # 可以處理異常,返回True表示異常被處理,False則會重新丟擲異常

# 使用自定義上下文管理器
with CustomContextManager() as obj:
    # 在這裡執行一些操作

13.生成器表示式

# 使用生成器表示式計算1到10的平方和
squared_sum = sum(x**2 for x in range(1, 11))
print(squared_sum)

14.使用str.endswith()方法來檢查字串是否以元組中的任何一個字串結尾

filename = "example.csv"
if filename.endswith((".csv", ".xls", ".xlsx")):
    # 執行相關操作

同樣的用法還有str.startswith()來檢查字串是否以元組中的任何一個字串開頭

15.else語句與for和while迴圈結合使用

for item in some_list:
    if condition:
        # 執行相關操作
        break
else:
    # 如果迴圈自然結束,執行相關操作

16.靜態型別檢查

# 使用mypy進行靜態型別檢查
def add_numbers(a: int, b: int) -> int:
    return a + b

result = add_numbers(5, 10)
print(result)

先總結這麼多,歡迎補充

相關文章