操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    Python 的內(nèi)置函數(shù)基礎(chǔ)

    Python 的內(nèi)置函數(shù)是該語言不可或缺的一部分,無需額外的庫即可提供基本功能。這些函數(shù)始終可用,無需導(dǎo)入任何模塊即可使用。它們是在 C for CPython(標(biāo)準(zhǔn) Python 實現(xiàn))中實現(xiàn)的,這確保了它們針對性能進(jìn)行了高度優(yōu)化。

    為什么存在內(nèi)置函數(shù)

    內(nèi)置函數(shù)的存在使語言更加用戶友好和高效。它們提供了一種無需編寫其他代碼即可執(zhí)行常見任務(wù)的方法,這有助于開發(fā)人員節(jié)省時間并減少出錯的可能性。內(nèi)置函數(shù)還通過提供標(biāo)準(zhǔn)化的操作執(zhí)行方式來提高代碼的可讀性和可維護(hù)性。這種一致性使開發(fā)人員能夠快速理解和使用其他人編寫的代碼。

    此外,內(nèi)置函數(shù)封裝了復(fù)雜的邏輯和優(yōu)化,使開發(fā)人員更容易高效地執(zhí)行操作,而無需了解底層實現(xiàn)細(xì)節(jié)。這種抽象對初學(xué)者特別有益,因為它允許他們專注于學(xué)習(xí)語言和解決問題,而不是擔(dān)心性能和優(yōu)化。

    如何使用內(nèi)置函數(shù)

    幾乎每個 Python 程序都使用內(nèi)置函數(shù)。它們提供了廣泛的功能,從基本的輸入/輸出操作到復(fù)雜的數(shù)據(jù)操作。以下是如何使用內(nèi)置函數(shù)的一些關(guān)鍵方面:

    1. 基本操作: len()type()print() 函數(shù)用于基本操作,例如顯示輸出、確定對象長度和檢查變量類型。
    2. 數(shù)據(jù)操作: max()min()sorted()sum() 函數(shù)用于執(zhí)行各種數(shù)據(jù)操作,例如計算總和、查找最大值和最小值以及對數(shù)據(jù)進(jìn)行排序。
    3. 函數(shù)式編程:像 、 filter()reduce() (來自 functools 模塊)這樣的 map() 函數(shù)通過允許開發(fā)人員將函數(shù)應(yīng)用于序列和過濾數(shù)據(jù)來支持函數(shù)式編程范式。
    4. 迭代和聚合:、 enumerate()range()zip() 函數(shù)用于迭代和聚合,從而更輕松地遍歷數(shù)據(jù)和使用索引。

    使用內(nèi)置函數(shù)的好處

    1. 效率:內(nèi)置函數(shù)在 C for CPython 中實現(xiàn),使其非常高效。它們通常比用純 Python 編寫的等效代碼更快地執(zhí)行操作。
    2. 可靠性:內(nèi)置函數(shù)經(jīng)過全面測試并被廣泛使用,這意味著與自定義實現(xiàn)相比,它們更可靠且不易出現(xiàn)錯誤。
    3. 可讀性:使用內(nèi)置函數(shù)使代碼更具可讀性和可理解性。其他開發(fā)人員更容易閱讀和理解使用標(biāo)準(zhǔn)函數(shù)的代碼。
    4. 方便:內(nèi)置功能提供了一種執(zhí)行常見任務(wù)的便捷方式。開發(fā)人員無需為經(jīng)常執(zhí)行的任務(wù)編寫額外的代碼。

    關(guān)鍵內(nèi)置功能的實現(xiàn)和優(yōu)化

    在這里,將看看 Python 的一些關(guān)鍵內(nèi)置函數(shù)的實現(xiàn)細(xì)節(jié)和優(yōu)化。了解這些函數(shù)是如何實現(xiàn)和優(yōu)化的,可以幫助你編寫更高效的代碼,并更好地理解 Python 內(nèi)置功能的強(qiáng)大功能。

    print()

    print() 函數(shù)用于將數(shù)據(jù)輸出到控制臺。它可以處理多個參數(shù),默認(rèn)情況下,這些參數(shù)被轉(zhuǎn)換為字符串并與空格連接。

    print("Hello,", "world!")

    print() 函數(shù)是用 C 語言在 CPython 中實現(xiàn)的。它使用 sys.stdout file 對象來寫入輸出,該輸出被緩沖以提高性能。默認(rèn)情況下, print() 在輸出末尾添加換行符,可以使用 end 參數(shù)自定義該字符。

    print("Hello,", "world!", end=" ")
    print("This is on the same line.")

    緩沖的使用減少了系統(tǒng)調(diào)用的次數(shù),使函數(shù)更加高效。

    len()

    len() 函數(shù)返回對象的長度,該對象可以是序列(如字符串、列表或元組)或集合(如字典或集合)。

    my_list=[1, 2, 3, 4]
    print(len(my_list))

    對于序列,該 len() 函數(shù)直接從對象的元數(shù)據(jù)中檢索 length 屬性,元數(shù)據(jù)存儲為對象結(jié)構(gòu)的一部分。這意味著在恒定時間(O(1)) len() 下運(yùn)行,使其非常高效。

    sum()

    sum() 函數(shù)返回可迭代對象中所有項的總和,例如列表或元組。

    numbers=[1, 2, 3, 4]
    print(sum(numbers))

    sum() 函數(shù)使用用 C 編寫的高度優(yōu)化的循環(huán)來遍歷元素并將它們加在一起。此實現(xiàn)最大限度地減少了與 Python 中的循環(huán)相關(guān)的開銷,使函數(shù)非常快。此外, sum() 可以采用第二個參數(shù)來指定求和的初始值。

    numbers=[1, 2, 3, 4]
    print(sum(numbers, 10))  # Starts the sum at 10

    max()和min()

    max()min() 函數(shù)分別返回可迭代對象中的最大和最小項。

    numbers=[1, 2, 3, 4]
    print(max(numbers))
    print(min(numbers))

    這兩個 max() min() 函數(shù)都只迭代一次輸入可迭代,為當(dāng)前最大值或最小值保留單個變量。這確保了這些函數(shù)在線性時間 (O(n)) 內(nèi)運(yùn)行,其中 n 是可迭代對象中的元素數(shù)。這些函數(shù)是用 C 語言實現(xiàn)的,這增加了它們的效率。

    sorted()

    sorted() 函數(shù)從可迭代對象中的項返回一個新的排序列表。

    numbers=[4, 2, 1, 3]
    print(sorted(numbers))

    sorted() 函數(shù)使用 Timsort 算法,該算法是從合并排序和插入排序派生的混合排序算法。Timsort 非常高效,在最壞的情況下時間復(fù)雜度為 O(n log n)。它經(jīng)過優(yōu)化,可在真實數(shù)據(jù)上表現(xiàn)良好,這些數(shù)據(jù)通常包含部分有序序列。

    Timsort 的工作原理是將數(shù)據(jù)劃分為稱為“運(yùn)行”的小塊,然后合并它們。它利用數(shù)據(jù)中的現(xiàn)有順序來減少所需的比較和交換次數(shù)。

    更高級的內(nèi)置功能

    除了基本的內(nèi)置函數(shù)外,Python 還提供了一套高級內(nèi)置函數(shù),可實現(xiàn)更復(fù)雜的操作。這些函數(shù)支持函數(shù)式編程范式和高級數(shù)據(jù)操作技術(shù),使其成為開發(fā)人員武器庫中的強(qiáng)大工具。在本節(jié)中,我們將深入探討三個高級內(nèi)置函數(shù): map()filter()zip()

    map()

    map() 函數(shù)將指定的函數(shù)應(yīng)用于可迭代對象中的所有項,并返回一個映射對象,該對象是迭代器。

    用法示例:

    numbers=[1, 2, 3, 4]
    squared=map(lambda x: x**2, numbers)
    print(list(squared))

    在此示例中, map() 將 lambda 函數(shù) lambda x: x**2 應(yīng)用于列表中 numbers 的每個項目,從而生成一個新的平方值迭代器。

    map() 函數(shù)在 CPython 中用 C 語言實現(xiàn),這保證了其效率。它以懶惰的方式運(yùn)行,這意味著它只在需要時將該功能應(yīng)用于項目。這樣可以避免創(chuàng)建中間列表,因為中間列表對于大型數(shù)據(jù)集來說可能是內(nèi)存密集型的。

    延遲計算允許 map() 高度內(nèi)存效率,因為它動態(tài)生成每個值,而不是將所有結(jié)果存儲在內(nèi)存中。這在處理大型數(shù)據(jù)流或數(shù)據(jù)轉(zhuǎn)換管道時特別有用。

    filter()

    filter() 函數(shù)從指定函數(shù)返回 true 的可迭代對象的元素構(gòu)造迭代器。

    用法示例:

    numbers=[1, 2, 3, 4]
    even_numbers=filter(lambda x: x % 2==0, numbers)
    print(list(even_numbers))

    在此示例中, filter() 將 lambda 函數(shù) lambda x: x % 2==0 應(yīng)用于列表中 numbers 的每個項目,從而生成偶數(shù)的迭代器。

    filter() 函數(shù)也是用 C 語言實現(xiàn)的,并且像 一樣 map() ,可以延遲運(yùn)行。它僅在需要時計算可迭代的每個項目,如果函數(shù)返回 true,則包括輸出迭代器中的項目。

    這種延遲評估可最大程度地減少內(nèi)存使用并提高性能,尤其是在處理大型數(shù)據(jù)集或組合多個篩選步驟時。通過避免創(chuàng)建中間列表, filter() 可以減少與數(shù)據(jù)操作相關(guān)的開銷。

    zip()

    zip() 函數(shù)采用多個迭代對象(零個或多個),將它們聚合到元組中,并返回這些元組的迭代器。

    用法示例:

    list1=[1, 2, 3]
    list2=['a', 'b', 'c']
    zipped=zip(list1, list2)
    print(list(zipped))

    在此示例中, zip() 將列表 list1 合并 list2 為元組迭代器,其中每個元組都包含輸入列表中的相應(yīng)元素。

    zip() 函數(shù)是用 C 語言實現(xiàn)的,旨在提高效率。它并行迭代輸入可迭代對象,即時創(chuàng)建元組,而無需將它們存儲在內(nèi)存中。這樣 zip() 既省時又省內(nèi)存。

    zip() 一旦最短的輸入可迭代對象用盡,就會停止創(chuàng)建元組,確保不會發(fā)生越界錯誤。這種設(shè)計 zip() 特別適用于組合來自多個來源的數(shù)據(jù),同時保持性能和安全性。

    結(jié)合高級內(nèi)置功能

    Python 內(nèi)置函數(shù)的優(yōu)勢之一是它們的可組合性。通過組合 map()filter()zip() ,您可以使用最少的代碼創(chuàng)建功能強(qiáng)大且富有表現(xiàn)力的數(shù)據(jù)轉(zhuǎn)換。

    例:

    list1=[1, 2, 3, 4]
    list2=['one', 'two', 'three', 'four']
    combined=zip(list1, list2)
    filtered=filter(lambda x: x[0] % 2==0, combined)
    result=map(lambda x: (x[0], x[1].upper()), filtered)
    print(list(result))

    在此示例中, zip() 將 和 list2 合并 list1 為元組, filter() 選擇第一個元素為偶數(shù)的元組,并將 map() 每個元組的第二個元素轉(zhuǎn)換為大寫。最終結(jié)果是滿足指定條件的轉(zhuǎn)換元組列表。

    1、內(nèi)置函數(shù)


    Python3解釋器中內(nèi)置了69個常用函數(shù),屬于底層的函數(shù),它們到處可用。有些對大家來說比較熟悉,比如abs(), max(), sum()... 也有一些比較陌生,比如locals(), all(), compile(), getattr()... 今天按照類別扼要總結(jié)。


    2、類型相關(guān)


    69個內(nèi)置函數(shù)中,與類型相關(guān)的指,把入?yún)b為某種類型,這樣的內(nèi)置函數(shù)包括:


    bool()  #d布爾型
    int()  #d整形
    str()  #d字符型
    tuple() #d元包型
    dict() #d字典型
    list() #d列表型
    zip() #可迭代對象聚合,(,)
    complex() #d復(fù)數(shù)型
    float() #d浮點(diǎn)型
    bytes() #d字節(jié)型數(shù)組
    bytearray() #d字?jǐn)?shù)數(shù)組
    range() #d不可更改的序列
    object() #d無屬性的根類
    set() # 集合類型
    frozenset() # 凍結(jié)集合類型,不允許修改
    slice() # 返回一個slice對象,其中start, stop, step等都是只讀的


    比如bool(x),將入?yún)封裝為Boolean類型,返回值為True或False


    bool(10)
    >>> True
    bool(0)
    >>> False
    bool(\'false\')
    >>> True
    bool(0.0)
    >>> False


    關(guān)于bytes()和bytearray()的用法可參考:

    https://www.cnblogs.com/sesshoumaru/p/5980090.html


    3、數(shù)理統(tǒng)計相關(guān)


    有的內(nèi)置函數(shù)可以完成簡單的數(shù)理統(tǒng)計工作,這樣的內(nèi)置函數(shù)包括:


    abs() #d絕對值
    min() #d最小
    max() #d最大
    sum() #d求和
    pow() #d求次冪
    all() #d所有元素為true則為true
    any() #d至少一個元素為true則為true
    divmod() #d(商,余數(shù))
    round() #四舍五入
    len() #參數(shù)元素個數(shù)


    any()函數(shù)代碼等價于以下5行代碼:


    def any(iterable):
        for element in iterable:
            if element:
                return True
        return False


    divmod函數(shù):


    divmod(10,8)
    >>> (1,2)


    4、進(jìn)制轉(zhuǎn)換


    有些內(nèi)置函數(shù)可以幫助我們輕松實現(xiàn)進(jìn)制轉(zhuǎn)換,比如:


    chr() #unicode編碼
    ord() #chr()反操作
    bin() #轉(zhuǎn)化為ob開頭的二進(jìn)制字符
    hex() #轉(zhuǎn)化為ox開頭的十六進(jìn)制字符
    ascii() #可打印表示對象,類似于 repr() 
    oct() # 轉(zhuǎn)化為0o開頭的八進(jìn)制字符


    5、面向?qū)ο笙嚓P(guān)


    Python提供與對象屬性相關(guān)的操作函數(shù),它們?yōu)闈M足Python屬性的動態(tài)調(diào)整提供了可能。


    setattr(object, name, value) #為對象設(shè)置屬性
    delattr(object, name) # 刪除命名的屬性
    getattr(object,name) #獲取屬性的取值,如果對象無此屬性,會拋異常
    getattr(object,name, 123) #即便無此屬性,也不會拋異常,會返回123
    hasattr(object,name) # 判斷name屬性是否屬于object
    isinstance(object, classinfo) #判斷object是classinfo的實例嗎
    issubclass(class, classinfo) # 判斷class是否為classinfo的子類
    super() #調(diào)用父類, 方法
    property() #特性相關(guān),@property標(biāo)記為屬性
    type() #返回實例的類型
    vars() # 返回對象的信息等
    classmethod() # 轉(zhuǎn)化方法為類方法
    staticmethod() #方法是靜態(tài)方法


    比如,


    setattr(x,\'footbar\',12) #等價于 x.footbar=12
    issubclass(list,object) 
    >>> True
    issubclass(object,list)
    >>> False


    6、迭代器相關(guān)


    next, reversed, iter(), enumerate()這些都是與迭代相關(guān)的函數(shù),比如以下,就是返回一個逆向迭代器:


    rev = reversed([1,-2,4,0])
    for i in rev:
      print(i)
     >>> 0
     4
     -2
     1


    iter函數(shù)使用例子


    iter(\'abc\')
    >>> <str_iterator at 0x8b9fba8>
    for i in iter(\'abc\'):
      print(i)
    >>> a
    b
    c


    7、map函數(shù)


    map函數(shù)的原型為:map(function, iterable, ...) ,返回一個迭代器,在每一個可迭代對象的元素上應(yīng)用function.


    map應(yīng)用舉例:


    def f(x):
      reutn x**2
    
     mymap = map(f, [1,2,3]) # 返回一個迭代器
    
     for i in mymap:
       print(i)
      >>> 1
      4
      9


    8、排序相關(guān)


    sorted返回一個排序好的列表,比如:


    li = [1,-2,4,0]
    sorted(li)
    >>> [-2,0,1,4]


    9 其他


    compile函數(shù)與源碼編譯相關(guān);memoryview函數(shù)與內(nèi)存視圖相關(guān);help查看幫助;dir查看對象的方法和屬性;更多見下表:


    hash() # 返回對象的哈希碼
    id() #返回一個對象的標(biāo)識
    input()  #與標(biāo)準(zhǔn)輸出相關(guān)
    breakpoint() #調(diào)試相關(guān)
    exec() #動態(tài)執(zhí)行Python代碼
    callable() #判斷對象是否可調(diào)用
    format() #對象格式化


    format是一個比較常用的,用于格式化輸出的函數(shù),詳細(xì)的格式化參數(shù)標(biāo)準(zhǔn)形式,參考文檔:


    https://docs.python.org/3/library/string.html#formatspec


    參考官網(wǎng):

    https://docs.python.org/3/library/functions.html

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權(quán)所有