日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

八個重構技巧使得Python代碼更Pythonic

來源: 責編: 時間:2023-09-28 10:08:49 742觀看
導讀1.合并嵌套的if語句我們從簡單的開始。不要像這樣嵌套 if 語句,只需將它們合并為一個即可。if a: if b: pass# -> refactorif a and b: pass2.使用 any 而不是循環這里我們要檢查列表中是否至少有一個正

1.合并嵌套的if語句

我們從簡單的開始。不要像這樣嵌套 if 語句,只需將它們合并為一個即可。fzq28資訊網——每日最新資訊28at.com

if a:    if b:        pass# -> refactorif a and b:    pass

2.使用 any 而不是循環

這里我們要檢查列表中是否至少有一個正元素。更長的解決方案是遍歷所有數字,檢查當前數字,然后在條件為真時中斷。但是對于這個任務,在 Python 中有一個專門的方法,即 any 函數。如果可迭代對象的任何元素為真,則 any 返回 True。這比手動循環要短得多,也更像 pythonic。fzq28資訊網——每日最新資訊28at.com

numbers = [-1, -2, -4, 0, 3, -7]has_positives = Falsefor n in numbers:    if n > 0:        has_positives = True        break# -> refactorhas_positives = any(n > 0 for n in numbers)

3.從 for/while 循環中提取語句

很多時候你會看到循環中定義了一個變量,但它永遠不會改變。這些都是不必要的操作,所以把它從循環中拉出來,然后你只需要創建一次。fzq28資訊網——每日最新資訊28at.com

for building in buildings:    city = 'London'    addresses.append(building.street_address, city)# -> refactorcity = 'London'for building in buildings:    addresses.append(building.street_address, city)

4.去除只使用一次并立即返回的內聯變量

很多時候你會看到代碼在最后一個函數中定義了一個變量,一行之后它立即返回。如果清楚函數是干什么的,直接返回結果即可。這樣更簡潔并且避免了不必要的變量。但是,有時如果不是很清楚函數在做什么,它仍然會有幫助,然后您可以給最后一個變量一個有意義的名稱并將其用作自文檔代碼。fzq28資訊網——每日最新資訊28at.com

def state_attributes(self):    """Return the state attributes."""    state_attr = {        ATTR_CODE_FORMAT: self.code_format,        ATTR_CHANGED_BY: self.changed_by,    }    return state_attr# -> refactordef state_attributes(self):    """Return the state attributes."""    return {        ATTR_CODE_FORMAT: self.code_format,        ATTR_CHANGED_BY: self.changed_by,    }

5.用if表達式替換if語句

不用 if else 語句來設置變量的值,你可以像這樣用 if 表達式在一行中設置它。不過,這種重構技術有點值得商榷。有些人仍然喜歡第一個選項,這很好。fzq28資訊網——每日最新資訊28at.com

if condition:    x = 1else:    x = 2# -> refactorx = 1 if condition else 2

6.添加保護條款

查看此代碼時,很難快速掌握正在發生的事情。有多個 if-else 語句和多個縮進。一旦你仔細觀察,你可能會發現第一個 if 語句幾乎覆蓋了整個函數代碼,只是在最后我們有相應的 else 子句,我們只返回 False。fzq28資訊網——每日最新資訊28at.com

我們可以把這個 else 子句移到最開始。這也稱為警衛聲明。所以如果條件不成立,我們就不會執行其余的函數代碼。這樣就去掉了一個 else 子句,現在整個代碼中的縮進少了一層。這看起來更清晰,也更容易理解。fzq28資訊網——每日最新資訊28at.com

def should_i_wear_this_hat(self, hat):    if isinstance(hat, Hat):        current_fashion = get_fashion()        weather_outside = self.look_out_of_window()        is_stylish = self.evaluate_style(hat, current_fashion)        if weather_outside.is_raining:            print("Damn.")            return True        else:            print("Great.")            return is_stylish    else:        return False# -> refactordef should_i_wear_this_hat(self, hat):    if not isinstance(hat, Hat):        return False    current_fashion = get_fashion()    weather_outside = self.look_out_of_window()    is_stylish = self.evaluate_style(hat, current_fashion)    if weather_outside.is_raining:        print("Damn.")        return True    else:        print("Great.")        return is_stylish

7.將分配移近它們的用途

這是上一個示例的改進代碼,但仍然需要一些時間才能理解這里發生的事情。所以我們想檢查我們是否應該戴帽子。邏輯是這樣的:如果正在下雨,我們總是說 True,如果沒有下雨,如果帽子很時尚,我們就說 True。我們可以大大提高此邏輯的可讀性的一種簡單方法是將分配移至更接近其用法的位置。在使用 if 語句之前讓我們先了解天氣情況。現在 fashion 和 style 變量只在 else 子句中需要,所以將它們向下移動。現在應該更清楚發生了什么。fzq28資訊網——每日最新資訊28at.com

還記得我的第 4 條提示嗎?我們可以進一步縮短代碼并立即返回評估樣式結果。然而,在這個例子中,我也喜歡 is_stylish 這個名字,因為它讓你知道如果帽子很時尚,你就說 True,否則就說 False。所以這里把多余的變量留著就好了。fzq28資訊網——每日最新資訊28at.com

def should_i_wear_this_hat(self, hat):    if not isinstance(hat, Hat):        return False    current_fashion = get_fashion()    weather_outside = self.look_out_of_window()    is_stylish = self.evaluate_style(hat, current_fashion)    if weather_outside.is_raining:        print("Damn.")        return True    else:        print("Great.")        return is_stylish# -> refactordef should_i_wear_this_hat(self, hat):    if not isinstance(hat, Hat):        return False    weather_outside = self.look_out_of_window()    if weather_outside.is_raining:        print("Damn.")        return True    else:        print("Great.")        current_fashion = get_fashion()        return self.evaluate_style(hat, current_fashion)        # is_stylish = self.evaluate_style(hat, current_fashion)        # return is_stylish

8.簡化序列檢查

這是我經常看到的另一件事。當你需要檢查集合中是否有元素時,例如在列表中,你不需要寫if len(your_list) > 0. 你可以簡單地說if your_list。這是 pep 8 推薦的方法,也稱為真值測試。這是可能的,因為在 Python 中,空序列和集合的計算結果為 False。所以這可以應用于字符串、元組、列表、字典和集合。fzq28資訊網——每日最新資訊28at.com

if len(list_of_hats) > 0:    hat_to_wear = choose_hat(list_of_hats)# -> refactorif list_of_hats:    hat_to_wear = choose_hat(list_of_hats)

本文鏈接:http://m.www897cc.com/showinfo-26-11875-0.html八個重構技巧使得Python代碼更Pythonic

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 聊一聊Java 21,虛擬線程、結構化并發和作用域值

下一篇: C++循環優化:提升性能的關鍵技巧

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美一区三区二区在线观看| 一区在线观看视频| 欧美久久影院| 欧美日韩中文在线| 国产欧美高清| 亚洲国产中文字幕在线观看| 一本色道久久| 欧美伊人久久| 蜜臀91精品一区二区三区| 欧美www视频| 国产精品裸体一区二区三区| 加勒比av一区二区| 一本一道久久综合狠狠老精东影业| 香蕉精品999视频一区二区 | 国产精品海角社区在线观看| 狠狠色伊人亚洲综合成人| 日韩视频免费观看高清在线视频| 亚洲女爱视频在线| 免费试看一区| 国产日韩在线看片| 一区二区日韩伦理片| 久热re这里精品视频在线6| 国产精品美女久久久久aⅴ国产馆| 亚洲福利久久| 欧美一区二区在线免费播放| 欧美日韩1234| 影音先锋中文字幕一区| 亚洲男女毛片无遮挡| 理论片一区二区在线| 国产精品一页| 亚洲乱码精品一二三四区日韩在线| 欧美一区2区三区4区公司二百| 欧美日韩国产成人在线| 在线精品视频一区二区三四| 欧美一二三区在线观看| 欧美日韩在线第一页| 在线观看不卡| 欧美一级午夜免费电影| 欧美日韩在线高清| 精品不卡一区二区三区| 午夜精品成人在线| 欧美日韩在线一二三| 亚洲国产成人在线播放| 欧美在线啊v| 91久久精品国产91性色tv| 久久久久青草大香线综合精品| 国产精品一二三四| 一区二区三区鲁丝不卡| 欧美国产日本在线| 1204国产成人精品视频| 久久久久综合| 国模叶桐国产精品一区| 欧美一区二区三区在线观看| 欧美性事免费在线观看| 夜夜精品视频一区二区| 欧美精品一区在线观看| 亚洲国产影院| 免费在线观看成人av| 伊甸园精品99久久久久久| 久久狠狠一本精品综合网| 国产精品一区=区| 亚洲图片欧洲图片av| 欧美日韩一区高清| 亚洲毛片在线| 欧美精品日日鲁夜夜添| 亚洲精品国精品久久99热一 | 国产欧美不卡| 亚洲欧美制服中文字幕| 欧美日韩一区二区三区在线看| 最新国产精品拍自在线播放| 欧美3dxxxxhd| 91久久在线| 欧美sm视频| 亚洲国产视频一区| 欧美成年人网站| 亚洲激情视频在线观看| 欧美在线短视频| 国产视频观看一区| 久久精品国产一区二区三区免费看| 国产午夜精品全部视频播放| 久久国产精品久久精品国产| 国产日产亚洲精品| 久久久国产91| …久久精品99久久香蕉国产| 欧美69视频| 日韩午夜激情| 欧美视频一二三区| 亚洲尤物在线视频观看| 国产精品一区二区视频| 久久av资源网| 亚洲成人在线免费| 欧美激情麻豆| 亚洲午夜av电影| 国产欧美亚洲视频| 久久久精品国产免大香伊| 在线观看欧美精品| 欧美交受高潮1| 亚洲图片在线观看| 国产日韩视频| 久久夜色精品| 亚洲毛片在线观看.| 欧美午夜宅男影院| 亚欧美中日韩视频| 一色屋精品视频免费看| 欧美高清一区| 亚洲小视频在线| 国产一区二区三区四区在线观看 | 国产精品亚洲а∨天堂免在线| 欧美中文字幕视频| 亚洲电影自拍| 欧美日韩一区国产| 欧美中文字幕精品| 91久久黄色| 国产精品久久久久久久久免费| 久久国产福利国产秒拍| 亚洲黄色三级| 国产精品免费一区二区三区在线观看 | 亚洲免费在线精品一区| 黄色日韩网站视频| 欧美日韩国产精品一区| 久久爱91午夜羞羞| 亚洲伦理自拍| 国内成+人亚洲| 欧美日韩欧美一区二区| 久久国产欧美| 夜夜嗨av色一区二区不卡| 国产色综合网| 欧美另类女人| 久久精品国产精品| 一本色道久久88亚洲综合88| 国产一区二区视频在线观看| 欧美激情精品久久久久久变态| 亚洲欧美日韩一区二区| 亚洲国产精品精华液2区45| 国产精品伦一区| 欧美大片91| 欧美一区二区三区在| 亚洲另类视频| 国产在线播精品第三| 亚洲激情影院| 国产精品最新自拍| 欧美激情第3页| 欧美一区二区日韩| 99精品视频免费观看| 国外成人性视频| 国产精品成人一区二区三区吃奶 | 午夜精品电影| 日韩一级黄色大片| 狠色狠色综合久久| 国产精品久久久久国产精品日日 | 国产精品一二三| 欧美精品不卡| 久久人人九九| 欧美一级黄色网| 一本色道久久88综合亚洲精品ⅰ| 精品二区视频| 国产欧美日韩视频| 欧美三级日韩三级国产三级| 欧美不卡福利| 久久久7777| 香蕉尹人综合在线观看| 一区二区久久久久久| 亚洲激情另类| 精品动漫一区二区| 国产视频精品免费播放| 欧美午夜一区| 欧美日韩国产999| 欧美成人精品福利| 久久综合九色综合久99| 欧美自拍偷拍午夜视频| 亚洲女爱视频在线| 亚洲午夜在线视频| 9人人澡人人爽人人精品| 91久久久久久久久| 在线观看国产精品淫| 国外精品视频| 国模一区二区三区| 国产精品一区亚洲| 国产精品女人网站| 欧美午夜电影在线观看| 欧美日本不卡高清| 欧美精品久久久久久久| 欧美国产高潮xxxx1819| 麻豆视频一区二区| 浪潮色综合久久天堂| 久久久久久夜精品精品免费| 久久国产视频网站| 久久国产精品久久w女人spa| 性感少妇一区| 欧美一区视频| 久久国产一区| 久久精品国产亚洲一区二区| 久久精品91久久久久久再现| 欧美在线视频观看免费网站| 欧美一级久久| 久久国产精品一区二区三区四区 | 国产精品日本一区二区| 国产精品免费观看在线| 国产精品女主播一区二区三区| 国产精品乱人伦一区二区| 国产精品一区一区| 国产日韩欧美精品| 国产一区二区三区高清播放| 国内精品久久久久久影视8|