成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一文帶您掌握十個強大的Python內置函數

開發 前端
將代碼編譯為字節碼,快速而簡潔。Python中的compile()函數將源代碼編譯為可以稍后執行的代碼對象。它允許你將一段Python代碼字符串轉換為代碼對象,然后可以將其傳遞給exec()或eval()進行執行。

我們經常有這樣的經歷:花了很長時間編寫和調試一個特定功能的函數,卻發現Python已經有類似的內置函數。我們常常在重復造輪子。Python包含了許多強大的內置函數,使用這些函數來簡化代碼可以為我們節省寶貴的時間。

接下來,我們將介紹一些我們經常忽略的強大Python內置函數。

ZIP_Longest

合并不同大小的可迭代對象。Python中的zip_longest()函數來自itertools模塊,允許你將多個長度不同的可迭代對象進行合并。與zip()不同,后者會在最短的可迭代對象處停止,zip_longest()會一直合并,直到最長的可迭代對象耗盡,缺失的值會用指定的fillvalue填充(默認為None)。

  • 處理不等長的可迭代對象:在處理長度不同的可迭代對象時非常有用,確保由于尺寸不均而沒有數據丟失。
  • 允許自定義填充:fillvalue參數允許你指定如何處理缺失值,這為合并來自多個來源的數據提供了靈活性。

zip_longest()函數可以用于:

  • 合并來自多個來源的數據,尤其是長度不均勻的數據。
  • 比較沒有直接關聯的數據點。
  • 處理不等維度的矩陣或網格。
from itertools import zip_longest


list1 = [1, 2, 3]
list2 = ['a', 'b']
list3 = ['X', 'Y', 'Z', 'W']


result = list(zip_longest(list1, list2, list3))
print(result) 


result = list(zip_longest(list1, list2, list3, fillvalue='-'))
print(result)

圖片圖片

Divmod

divmod(a, b)函數返回一個包含商和余數的元組,當將a除以b時。它是a // b(商)和a % b(余數)的組合形式。

這個函數在需要同時得到商和余數的情況下非常實用。它通過一步操作代替了兩個獨立的操作(整數除法和取模),從而減少了開銷。

divmod()在以下場景中非常有用:

  • 當你需要將秒轉換為分鐘和秒,小時轉換為分鐘和小時等時,divmod()可以快速計算這兩個值。
  • 計算貨幣分解,例如將總金額分解為較大的面額和較小的零錢。
a = 20
b = 6


result = divmod(a, b)
print(result)  


quotient, remainder = result
print(f"Quotient: {quotient}, Remainder: {remainder}")

圖片圖片

Compile

將代碼編譯為字節碼,快速而簡潔。Python中的compile()函數將源代碼編譯為可以稍后執行的代碼對象。它允許你將一段Python代碼字符串轉換為代碼對象,然后可以將其傳遞給exec()或eval()進行執行。

圖片圖片

compile()函數允許你動態執行存儲在字符串中的Python代碼,這在一些高級用例中非常有用,例如模板引擎、REPL系統或動態生成代碼時。

code_string = '3 * 4 + 5'
compiled_code = compile(code_string, '<string>', 'eval')
print(compiled_code)
result = eval(compiled_code)
print(result)

圖片圖片

Bytearray

創建和修改字節序列。bytearray()函數創建一個可變的字節序列,它是字節數據的靈活表示形式。與不可變的bytes不同,bytearray允許修改,適用于需要操作或更新字節數據的場景。

圖片圖片

bytearray允許修改,適用于需要動態構建或更改字節數據的場景。在處理文件、網絡協議或流中的二進制數據時,它非常有用,尤其是在需要頻繁修改的情況下。

data = bytearray("Hello, World!", "utf-8")
print(data) 
data[7:12] = b'Python'
print(data)

圖片圖片

Repr

查看對象背后的代碼。Python中的repr()函數返回對象的字符串表示形式,理想情況下可以使用eval()函數重新創建該對象。它提供對象的正式字符串表示,適用于調試和日志記錄。

圖片圖片

number = 42
string = "Hello, World!"
list_obj = [1, 2, 3]


print(repr(number))
print(repr(string))
print(repr(list_obj))

圖片圖片

Memoryview

輕松實現直接內存訪問。Python中的memoryview()函數創建一個內存視圖對象,允許你訪問支持緩沖區協議的對象的內部數據,而無需復制數據。這在高效處理大數據集時特別有用,因為它允許對數據的切片進行操作。

圖片圖片

memoryview()通過允許直接訪問對象的底層內存,避免了復制數據的開銷。在科學計算或數據分析中,處理大型數組或緩沖區非常常見,memoryview()可以通過減少內存使用大大提升性能。

data = bytearray(b"Hello, World!")


mv = memoryview(data)


print(mv[0:5].tobytes())

圖片圖片

Property

集成getter、setter和deleter于一體。property()函數是一個內置函數,它創建并返回一個屬性對象,這是一種特殊的屬性類型,允許對對象屬性進行管理式訪問。屬性支持為屬性定義getter、setter和deleter方法,促進了封裝和數據隱藏。

圖片圖片

  • 封裝:允許控制屬性的訪問和修改方式,支持驗證和日志記錄。
  • 惰性計算:支持屬性的惰性計算,只有在訪問時才計算其值。

當你希望對屬性的修改施加規則時,property()非常有用。

class Circle:
    def __init__(self, radius):
        self._radius = radius


    @property
    def radius(self):
        """The radius property."""
        return self._radius


    @radius.setter
    def radius(self, value):
        if value < 0:
            raise ValueError("Radius cannot be negative")
        self._radius = value


    @property
    def area(self):
        """The area property."""
        return 3.14159 * (self._radius ** 2)


circle = Circle(5)
print(circle.radius)  


circle.radius = 10
print(circle.area)  


try:
    circle.radius = -5 
except ValueError as e:
    print(e)

圖片圖片

Frozensets

用于高效操作的不可變集合。frozenset()函數返回一個不可變的集合對象,意味著一旦創建,其元素無法被更改(添加或刪除)。這允許創建可用于字典鍵或存儲在其他集合中的集合。

以下是一些使用此函數的場景:

  • 當你需要一個在其生命周期內不應更改的集合時。
  • 作為字典中的鍵,以確保項目的唯一性。
  • 由于frozenset是不可變的,它們可以用作字典的鍵。
my_frozenset = frozenset([1, 2, 3, 4, 5])
print(my_frozenset) 


my_frozenset.add(6)

圖片圖片

Callable

callable()是Python中的一個內置函數,用于檢查一個對象是否可調用。callable()通過在調用之前驗證對象是否可調用,防止運行時錯誤。當處理可能在運行時被調用的對象時,特別是在復雜的應用中,函數、lambda表達式或對象可能會被傳遞和互換使用,callable()非常有用。

這個內置函數適用于以下情況——當函數、lambda表達式或對象可能互換使用時,callable()可以幫助驗證它們是否可以被調用。

圖片圖片

還可以通過定義__call__()方法,使自定義類的實例變得可調用。

class Dog:
    def __call__(self, sound):
        return f"The dog says {sound}"


dog = Dog()


print(callable(dog)) 
print(dog("woof"))

圖片圖片

在這里,Dog類通過實現__call__()方法變得可調用。dog實例表現得像一個函數,允許你直接向其傳遞參數。

dis

Python中的dis模塊提供了用于反匯編Python字節碼的函數,這對于理解Python如何執行代碼以及調試非常有用。這個模塊使開發者能夠查看Python執行的低級操作。它還可以通過檢查字節碼來幫助識別性能瓶頸。

import dis


def fibonacci(n):
    if n <= 1:
        return n
    else:
        return fibonacci(n-1) + fibonacci(n-2)


dis.dis(fibonacci)

將輸出fibonacci的字節碼指令,顯示Python執行該函數時所執行的操作。

圖片圖片

Python的內置函數顯著提升了開發效率。常用函數包括:

  • zip_longest():合并不等長的可迭代對象,避免數據丟失。
  • divmod():同時獲取商和余數,簡化計算。
  • compile():動態執行代碼。
  • bytearray():處理可變字節序列,適合頻繁修改的場景。
  • memoryview():提供高效的內存訪問。
  • property():支持數據封裝與訪問控制。
  • frozenset():創建不可變集合,適用于字典鍵。
  • callable():檢查對象是否可調用。
  • dis模塊:幫助理解字節碼,識別性能瓶頸。

合理利用這些函數可以提升代碼的簡潔性和可讀性。

責任編輯:武曉燕 來源: 新語數據故事匯
相關推薦

2023-12-22 15:44:43

2024-01-24 13:14:00

Python內置函數工具

2024-07-11 12:14:20

Pythonmapfilter

2021-09-15 09:20:37

Python函數代碼

2024-10-06 14:01:47

Python裝飾器對象編程

2024-10-08 10:44:32

2022-07-14 11:06:07

React開發Web

2025-04-30 10:36:17

2023-05-14 22:55:00

插件IntelliJIDEA

2024-07-18 15:08:27

2024-03-12 17:54:55

容器類型Init

2024-08-19 00:01:00

2024-05-21 09:45:40

機器學習人工智能XAI

2024-05-28 14:36:00

Python開發

2022-12-20 07:39:46

2023-12-21 17:11:21

Containerd管理工具命令行

2024-11-19 09:00:00

Pythondatetime模塊

2024-06-26 13:11:40

2024-09-09 18:18:45

2023-12-06 07:13:16

RESTAPI客戶端
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91免费版在线观看 | 欧美h视频| aaaa网站| 国产一级片免费在线观看 | 99国产精品视频免费观看一公开 | 91精品国产色综合久久 | 成人亚洲视频 | 99热.com | 精品一区二区在线观看 | 中文字幕一区二区三区四区 | 亚洲高清一区二区三区 | 天天干,夜夜操 | 日韩高清中文字幕 | 国产成人av在线 | 成人在线视频免费观看 | 夜夜爽99久久国产综合精品女不卡 | 成人精品视频在线 | 日韩欧美一级精品久久 | 久久51 | 国产亚洲高清视频 | 一区二区三区四区免费观看 | av在线免费观看不卡 | 日本精品久久久一区二区三区 | 欧美福利 | 韩日精品在线观看 | 亚洲人成人一区二区在线观看 | 亚洲高清电影 | 中文字幕日韩欧美一区二区三区 | 中文区中文字幕免费看 | 久久久久久国产精品久久 | 自拍视频精品 | 日韩av成人 | 欧美日韩综合 | 日本小电影网站 | av电影一区二区 | 91免费在线 | 亚洲三区在线观看 | 国产乱码精品一区二三赶尸艳谈 | 国产免费国产 | 中国一级特黄毛片大片 | 亚洲国产精品视频一区 |