国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

《Effective Python 編寫高質(zhì)量Python代碼的59個有效方法》學(xué)習(xí)筆記2

這篇具有很好參考價值的文章主要介紹了《Effective Python 編寫高質(zhì)量Python代碼的59個有效方法》學(xué)習(xí)筆記2。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

盡量用enumerate取代range

#當(dāng)需要循環(huán)的是數(shù)值時可以使用range()
for x in range(10):
    pass
#或者獲取列表元素時可直接迭代
food = ['apple','egg','rice']
for x in food:
    pass

#而當(dāng)需要元素所在索引時,一般我們用
for x in range(len(food)):
    pass

#這樣很生硬

'''
Python內(nèi)置函數(shù)enumerate()可把各種迭代器(包括各種序列及各種支持迭代的對象)包裝為生成器
每次產(chǎn)生一對輸出值,前者表示循環(huán)下標(biāo),后者表示從迭代器中獲取到的下一個序列元素
同時可以有第二個參數(shù),指明開始計數(shù)的索引值,默認(rèn)為0
'''

for i,food in enumerate(food):
    print i,food
#輸出
#0 apple
#1 egg
#2 rice

for i,food in enumerate(food,2):
    print i,food
#輸出
#2 apple
#3 egg
#4 rice

用zip()同時遍歷兩個迭代器

names = ['tom','jack','jy']
letters = [len(n) for n in names] #注意這里列表推導(dǎo)用法

#要獲取最長的名字及其長度多少
longest_name = None
max_letter = 0

#常規(guī)做法 、看上去比較混亂 不易閱讀
for i in range(len(names)):
    count = letters[i]
    if count > max_letter:
        longest_name = names[i]
        max_letter = count

#使用zip
for name,count in zip(names,letters):
    if count > max_letter:
        longest_name =name
        max_letter = count

'''
當(dāng)遍歷的兩個迭代器長度不同時,會在最短的那里停止
python3中zip相當(dāng)于生成器,會在遍歷時逐次產(chǎn)生元組
'''

合理使用try-except-else-finally

如果既要異常向上傳播,又要在異常發(fā)生時執(zhí)行清理工作,可使用try/finally結(jié)構(gòu)
try/except/else結(jié)構(gòu)可以清晰描述哪些異常由自己的代碼處理,哪些傳播到上一級
無論try塊是否異常,都可用try/finally復(fù)合語句的finall塊執(zhí)行清理工作
else塊可縮減try中代碼量,并把沒有異常時要執(zhí)行的語句與try/except隔離開
順利運行try后,若想使某些操作能在finally塊的清理代碼之前執(zhí)行,則可將這些操作寫到else塊中

使用異常表示特殊情況而不要返回None

用None作返回值來表示特殊意義的函數(shù),很容易使調(diào)用者犯錯,因為None和0及空字符串之類的值,在條件表達(dá)式中都會被評估為False。
函數(shù)在遇到特殊情況時,應(yīng)該拋出異常,而不要返回None.調(diào)用者在看到該函數(shù)的文檔中所描述的異常后,應(yīng)該就會編寫相應(yīng)的代碼來處理了。文章來源地址http://www.zghlxwxcb.cn/news/detail-424840.html

閉包里使用外圍作用域中的變量

#對list排序,但是要把出現(xiàn)在某個列表中的數(shù)字排在其他數(shù)字之前


def sort_priority(values,group):
    def helper(x):
        if x in group:
            return (0,x)
        return (1,x)
    values.sort(key=helper)

numbers = [8,3,1,2,5]
group = {2,3,5}
sort_priority(numbers,group)
print(numbers)
#>>[2, 3, 5, 1, 8]
'''
python支持閉包(closure):閉包是一種定義在某個作用域中的函數(shù),它引用了那個作用域里的變量。
helper之所以能訪問sort_priority的group參數(shù),原因在于它是閉包
python函數(shù)是一級對象,即可直接引用函數(shù)、把函數(shù)賦給變量、把函數(shù)當(dāng)成參數(shù)傳給其他參數(shù),并通過表達(dá)式及if語句對其進(jìn)行比較和判斷。
所以這里可以把helper這個閉包函數(shù)傳給sort的key參數(shù)
python使用特殊的規(guī)則比較兩個元組。首先比較各元組中下標(biāo)為0的對應(yīng)元素,如果相等,再比較下標(biāo)為1 的對應(yīng)元素...以此類推
'''

##########獲取閉包內(nèi)的數(shù)據(jù)
###【python3】###
#nonlocal語句的意思是在給相關(guān)變量賦值時應(yīng)在上層作用域中查找該變量 / 唯一限制在于不能延伸到模塊級別,防止污染全局作用域
#與global相對
def sort_priority3(numbers,group):
    found = False
    def helper(x):
        nonlocal found
        if x in group:
            found = True  #表示是否出現(xiàn)了優(yōu)先級更高的元素。使函數(shù)調(diào)用者能夠做出相應(yīng)處理
            return (0,x)
        return (1,x)
    numbers.sort(key=helper)
    return found
    #為了防止濫用,只推薦在很簡單的函數(shù)里使用nonlocal

#新浪面試題
li = [lambda :x for x in range(10)]
print(type(li))
print(type(li[0]))
# <class 'list'>
# <class 'function'>

res = li[0]()
print(res)
#輸出:9
#函數(shù)在沒有執(zhí)行前,內(nèi)部代碼不執(zhí)行
#因為x最后循環(huán)成了9,所以每一個return x出來的值都是9
'''
Python中是沒有塊級作用域的,代碼塊里的變量,外部可以調(diào)用;
即使執(zhí)行了一下函數(shù),name的作用域也只是在函數(shù)內(nèi)部,外部依然無法進(jìn)行調(diào)用
'''
##【關(guān)于函數(shù)名】##
'''
假如定義了函數(shù)f1()
那么訪問f1(),就會得到f1()中的返回值
訪問f1,就會得到f1函數(shù)的內(nèi)存地址
'''

到了這里,關(guān)于《Effective Python 編寫高質(zhì)量Python代碼的59個有效方法》學(xué)習(xí)筆記2的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 如何寫出高質(zhì)量的代碼

    你是否曾經(jīng)為自己寫的代碼而感到懊惱?你是否想過如何才能寫出高質(zhì)量代碼?那就不要錯過這個話題!在這里,我們可以討論什么是高質(zhì)量代碼,如何寫出高質(zhì)量代碼等問題。無論你是初學(xué)者還是資深開發(fā)人員,都可以在這個話題下進(jìn)行分享,汲取靈感和知識,共同提高自

    2023年04月25日
    瀏覽(100)
  • 代碼優(yōu)美,搬磚不累:探索高質(zhì)量代碼之路

    代碼優(yōu)美,搬磚不累:探索高質(zhì)量代碼之路

    寫出高質(zhì)量代碼是每個程序員的追求,也是提高自己編程能力的必經(jīng)之路。高質(zhì)量的代碼可以提高軟件的可維護(hù)性、可讀性、可擴(kuò)展性和可移植性等,降低軟件開發(fā)和維護(hù)的成本。本文將介紹一些如何寫出高質(zhì)量代碼的實用技巧和方法。 可讀性與可維護(hù)性 可讀性指代碼應(yīng)該

    2024年02月02日
    瀏覽(106)
  • 程序員如何高質(zhì)量重構(gòu)代碼?

    程序員如何高質(zhì)量重構(gòu)代碼?

    有道無術(shù),術(shù)尚可求也,有術(shù)無道止于術(shù)。你好,我是程序員雪球,今天和你聊聊程序員重構(gòu)代碼那些事。 ? 程序員重構(gòu)代碼的重要性不言而喻,但如何進(jìn)行有效的重構(gòu)呢?下面是一些建議和指導(dǎo)。 為什么要重構(gòu)? 重構(gòu)是提高代碼質(zhì)量和可維護(hù)性的重要手段,旨在在不改變

    2024年02月15日
    瀏覽(42)
  • Go語言——【高質(zhì)量編程 | 代碼規(guī)范】

    Go語言——【高質(zhì)量編程 | 代碼規(guī)范】

    作者 :非妃是公主 專欄 :《Golang》 博客主頁 :https://blog.csdn.net/myf_666 個性簽:順境不惰,逆境不餒,以心制境,萬事可成?!鴩?高質(zhì)量編程,就是指編寫的代碼能夠達(dá)到正確可靠的同時,具備簡潔清晰、結(jié)構(gòu)明了等特點,可以讓團(tuán)隊成員很快的上手。具體來說,有

    2024年02月01日
    瀏覽(253)
  • 袋鼠云代碼檢查服務(wù),揭秘高質(zhì)量代碼背后的秘密

    袋鼠云代碼檢查服務(wù),揭秘高質(zhì)量代碼背后的秘密

    質(zhì)量是產(chǎn)品的生命線,代碼檢查是軟件開發(fā)過程中至關(guān)重要的一環(huán),它可以幫助我們發(fā)現(xiàn)并糾正潛在的錯誤,提高軟件質(zhì)量,降低維護(hù)成本。 在袋鼠云產(chǎn)品中也存在這個問題,由于離線數(shù)據(jù)開發(fā)人員 SQL 水平不一,導(dǎo)致代碼書寫混亂、SQL 代碼運行問題較多。本文將介紹在離線

    2024年02月08日
    瀏覽(102)
  • 高質(zhì)量病毒——暴風(fēng)一號(BoyFine)代碼.vbs

    最近我看到了一些很有趣的代碼(主要是因為他是病毒),來,話不多說 直接上代碼,希望對大家有幫助,此外,我要對它的名稱進(jìn)行說明,他的 中文名是暴風(fēng)一號,英文名是BoyFine

    2024年02月11日
    瀏覽(102)
  • 你是否曾經(jīng)為自己寫的代碼而感到懊惱?那如何才能寫出高質(zhì)量代碼呢?

    你是否曾經(jīng)為自己寫的代碼而感到懊惱?那如何才能寫出高質(zhì)量代碼呢?

    寫出高質(zhì)量代碼是每個程序員的追求,因為高質(zhì)量的代碼可以提高程序的可維護(hù)性、可擴(kuò)展性和可讀性,從而減少代碼的bug和維護(hù)成本。 當(dāng)你的代碼寫的不好的時候會產(chǎn)生各種各樣的問題,可能會導(dǎo)致以下問題: 1.代碼可讀性差: 代碼結(jié)構(gòu)混亂、命名不規(guī)范、注釋不清晰等

    2024年02月02日
    瀏覽(98)
  • 2022數(shù)學(xué)建模國賽B題和C題高質(zhì)量論文代碼數(shù)據(jù)

    2022數(shù)學(xué)建模國賽B題和C題高質(zhì)量論文代碼數(shù)據(jù)

    目錄 B題論文 5.1 問題一的建模與求解 5.1.1 使用極坐標(biāo)求解具體位置 C題論文 1.1 研究背景 1.2 問題的提 5.1 問題一的建模與求解 5.1.1 數(shù)據(jù)的預(yù)處理 5.1.1 使用極坐標(biāo)求解具體位置 假設(shè)圓周的半徑為, .以無人機(jī)FY00為極點, 以FY00為端點且經(jīng)過FY01的射線為極軸建立極坐標(biāo)系.不失一般

    2024年02月17日
    瀏覽(29)
  • 基于Python的100+高質(zhì)量爬蟲開源項目(持續(xù)更新中)

    基于Python的100+高質(zhì)量爬蟲開源項目(持續(xù)更新中)

    以下是項目所使用的框架,不同的項目所使用的框架或許有不同,但都萬差不離: Scrapy:一個快速的高級Web爬蟲框架,可用于從網(wǎng)站中提取結(jié)構(gòu)化數(shù)據(jù)。 BeautifulSoup:一個用于從HTML和XML文件中提取數(shù)據(jù)的Python庫。 PySpider:一個輕量級,跨平臺并基于事件的Python爬蟲框架。 T

    2024年01月16日
    瀏覽(64)
  • 小破站有許多“高質(zhì)量”東西,懷揣著“學(xué)習(xí)”的目的,我用Python將它們通通采集下來

    小破站有許多“高質(zhì)量”東西,懷揣著“學(xué)習(xí)”的目的,我用Python將它們通通采集下來

    前言 大家早好、午好、晚好吖 ? ~歡迎光臨本文章 事情是這樣的,昨晚室友拉著我去他的電腦,說帶我欣賞一點高雅的作品~ 于是這一坐下,便是一晚上… 作為一個樂于分享的博主,本來我是決定直接分享的, 但是轉(zhuǎn)念一想:有句俗話不是說授人以魚不如授人以漁, 我還是

    2024年02月07日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包