国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Python 初學(xué)者常犯的5個錯誤,布爾型竟是整型的子類

開發(fā) 開發(fā)工具 后端
Python 是一種神奇的語言,看似簡單便捷,但總會有一些意想不到的驚喜在等著我們。比如說,assert 在正式環(huán)境下根本不會運行,isinstance(False, int) 竟然輸出 True。

Python 是一種高級的動態(tài)編程語言,它以易于使用著名。目前 Python 社區(qū)已經(jīng)非常完善了,近幾年它的發(fā)展尤為迅猛。但是易于使用同樣能帶來一些壞處,即易于誤用。在本文中,作者列舉了 5 個初學(xué)者常犯的錯誤,希望它們能幫助初學(xué)者寫更加正確與優(yōu)美的代碼。

[[275217]]

1. 可變的缺省參數(shù)

Python 中的缺省參數(shù)會在執(zhí)行函數(shù)定義時計算一次,這表示在函數(shù)完成定義后該表達式只執(zhí)行一次,因此缺省值可以用于后續(xù)的每一次調(diào)用。如果我們令缺省參數(shù)為可變的,例如列表或字典等,那么對于將來所有的調(diào)用,該參數(shù)都是一直保留且可變的。

如下為不正確的表達方式,如果我們第一次調(diào)用 add_item 增加「a」時,items=[『a』]。當(dāng)我們第二次調(diào)用 add_item 增加「b」時,由于定義中的 items=[] 只在初始化的時候運行一次,因此這時的 items=[『a』, 『b』]。

尤其是當(dāng)我們在調(diào)用 add_item 函數(shù)時沒傳入任何參數(shù),那么 items 還是能保留以前記住的內(nèi)容,相當(dāng)于將以前的內(nèi)容泄漏給了后續(xù)的調(diào)用。

  1. def add_item(new_item, items=[]): 
  2.     items.append(new_item) 

正確的表達方式應(yīng)該是如下,在我們沒傳入 items 時應(yīng)該要將它初始化為空白列表:

  1. def add_item(new_item, items=None): 
  2.     if items is None: 
  3.         items = [] 
  4.     items.append(new_item) 

2. 將 assert 聲明語句作為保證條件

因為 assert 語句很容易檢查一些條件是否滿足或執(zhí)行是否正確,開發(fā)者經(jīng)常用它來檢查某部分代碼的有效性。但是當(dāng) Python 解釋器調(diào)用時帶了-O (optimize) flag,那么 assert 語句會從字節(jié)碼中移除。所以,如果 assert 語句在面向用戶驗證的產(chǎn)品代碼中,根本就不會執(zhí)行,因為它可能會造成一些安全漏洞。

因此開發(fā)者應(yīng)該只在測試中使用 assert 語句,不正確的示例如下:

  1. assert re.match(VALID_ADDRESS_REGEXP, email) is not None 

正確的代碼要改成:

  1. if not re.match(VALID_ADDRESS_REGEXP, email): 
  2.     raise AssertionError 

3. 使用 isinstance 代替 type

type 和 isinstance 都能檢查某個對象的類別是什么。但是它們間有非常重要的區(qū)別,isinstance 在解析目標(biāo)類型時,它會關(guān)注繼承關(guān)系,而 type 并不會。正因為這個區(qū)別,isinstance 在某些時候并不是我們所想的那樣。例如以下案例:

  1. def which_number_type(num): 
  2.     if isinstance(num, int): 
  3.         print('Integer') 
  4.     else: 
  5.         raise TypeError('Not an integer') 
  6.  
  7. which_number(False)  # prints 'Integer', which is incorrect 

因為布爾類型的變量在 Python 中是 int 的子類,isinstance(num, int) 同樣會得出 True,這并不是我們想要的。在特定的類別中,使用 type 可能更加正確。

4. 不必要的 lambda 表達式

函數(shù)在 Python 中是最常用的結(jié)構(gòu),我們能將函數(shù)賦值給某個變量,并將該變量作為參數(shù)傳遞給另外一個函數(shù),這也是函數(shù)常見的用法。但這對于初學(xué)者或了解其它編程語言的開發(fā)者而言,這種傳遞方式是非常反直覺的。

一個比較常見的模式可以表示為:

  1. def request(self, method, **kwargs): 
  2.     # ... 
  3.     if method not in ("get", "post"): 
  4.         req.get_method = lambda: method.upper() 

上面采用匿名函數(shù) lambda 的方式,最好可以改成以下:

  1. def request(self, method, **kwargs): 
  2.     # ... 
  3.     if method not in ("get", "post"): 
  4.         req.get_method = method.upper 
  5.     # ... 

5. NotImplemented錯誤

這種命名可能會使開發(fā)者感到困惑,NotImplementedError 是一種 exception 類,當(dāng)派生類需要重寫某個方法時,Python 應(yīng)該觸發(fā)這類錯誤。而 NotImplemented 是一個常量,它用于實現(xiàn)二進制操作。當(dāng)我們觸發(fā) NotImplemented 時,Python 會給出「TypeError」的報錯。

錯誤的例子:

  1. class SitesManager(object): 
  2.     def get_image_tracking_code(self): 
  3.         raise NotImplemented 

正確表達方法應(yīng)該是:

  1. class SitesManager(object): 
  2.     def get_image_tracking_code(self): 
  3.         raise NotImplementedError 

原文鏈接:https://deepsource.io/blog/python-common-mistakes/

【本文是51CTO專欄機構(gòu)“機器之心”的原創(chuàng)譯文,微信公眾號“機器之心( id: almosthuman2014)”】 

戳這里,看該作者更多好文

 

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2022-07-22 15:55:32

Python代碼語言

2025-04-07 01:35:00

Go語言程序

2024-05-08 12:41:29

Python編程語言

2024-08-17 12:14:06

2023-01-17 09:27:18

Python語言

2024-06-04 00:00:06

Python初學(xué)者優(yōu)化

2022-10-19 23:18:27

KubernetesPod錯誤

2020-01-14 17:31:46

數(shù)據(jù)科學(xué)誤區(qū)人工智能

2024-03-11 18:17:18

Python字符串分隔符

2020-09-06 08:19:11

Python編程語言開發(fā)

2018-04-02 11:59:04

Linux命令ln

2014-01-03 14:09:57

Git學(xué)習(xí)

2020-07-27 13:49:47

Python編程語言開發(fā)

2020-03-02 14:20:46

PythonGitHub編程語言

2015-07-20 13:56:59

SDN

2022-10-10 15:28:45

負載均衡

2011-07-04 14:14:54

java

2009-09-28 09:45:00

CCNA學(xué)習(xí)經(jīng)驗CCNA

2011-06-17 15:06:14

Qt

2014-03-12 10:11:57

Python設(shè)計模式
點贊
收藏

51CTO技術(shù)棧公眾號

一区二区三区日韩视频| 亚洲色图美国十次| 秋霞电影一区二区| 国产精品777| 欧洲精品99毛片免费高清观看 | 亚洲国产精品yw在线观看 | 亚洲自拍偷拍九九九| 中文字幕欧美人妻精品一区| 成人免费视频免费观看| 欧洲美女和动交zoz0z| 麻豆久久久久久久| 亚洲视频在线二区| 久久超碰97人人做人人爱| 午夜视频久久久| 美国三级日本三级久久99| 欧美性大战久久久久| 国产精品老牛| 日韩精品久久一区二区三区| 亚洲一区二区三区四区五区午夜 | 精品欧美久久久| 国产一二区在线观看| 欧美精品乱码久久久久久| 成年人在线视频免费观看| 日韩欧美国产网站| 成人午夜影视| 91精品国产福利在线观看| 性欧美video高清bbw| 日韩经典第一页| 新片速递亚洲合集欧美合集| 在线观看久久av| 婷婷丁香久久| 欧美在线激情视频| 一区二区三区毛片免费| 精品无人乱码一区二区三区的优势| 亚洲婷婷免费| 一本色道婷婷久久欧美 | 99精品中文字幕在线不卡 | 欧美中文娱乐网| 精品一区二区三区欧美| 欧美 日韩 国产精品| 91亚洲精品久久久蜜桃| 99ri国产在线| 欧美午夜不卡在线观看免费| 欧美男男video| 久久手机精品视频| 久久国产小视频| 欧美成人在线免费观看| 精品系列免费在线观看| 激情五月俺来也| 亚洲国产成人高清精品| 怡红院av在线| 美日韩丰满少妇在线观看| 国产剧情在线观看一区| 免费国产在线精品一区二区三区| 国产成人综合亚洲网站| 毛片.com| 亚洲精品一区二区三区在线观看| 亚洲精品一区二区三区中文字幕| 91精品视频免费| 国产另类ts人妖一区二区| 成人免费视频网站在线看| 欧美亚洲尤物久久| 青草综合视频| 91在线看www| 国产电影一区在线| 高清色视频在线观看| 亚洲国产一区二区三区在线观看| 成人在线分类| 亚洲一区二区三区视频| 激情伊人五月天久久综合| 91最新在线观看| 91精品免费观看| 日本福利一区| 一本久道久久综合| 午夜久久久影院| 国模私拍国内精品国内av| 91九色在线视频| 成人国产电影网| 91精品国产91久久久久游泳池| 日韩在线国产精品| 亚洲看片一区| 成人午夜影院| 中文字幕国产亚洲2019| 亚洲视频一区| 91人人网站| 日韩中文字幕在线免费观看| 亚洲经典三级| 中国一级特黄毛片大片| 日韩亚洲精品视频| 亚洲免费影视| 亚洲人性生活视频| 午夜欧美大片免费观看| 国产福利一区在线观看| 免费av网站在线观看| 国产精品视频精品视频| 91色.com| 六月婷婷综合| 欧美日本韩国一区二区三区| 五月激情综合网| 老司机在线精品视频| 国产精品无码av在线播放| 亚洲成人av资源网| 亚洲国产高清一区| 中文产幕区在线观看| 久久久中文字幕| 成人国产免费视频| 白浆在线视频| 欧美日韩精品一区| 在线中文字幕一区二区| 日韩欧美一区二区三区免费看| 成人网18免费软件大全| 插插插亚洲综合网| av一区二区三区四区| 国产精品电影| 亚洲欧美精品在线观看| 欧美不卡一区二区三区| 亚洲在线视频| 免费a级人成a大片在线观看| 国产精品久久亚洲| 色婷婷av一区二区三区之一色屋| 大片网站久久| 亚洲1024| 国产精品爽爽爽| 一区二区三区在线观看国产 | 亚洲激情在线| 蜜桃视频在线观看网站| 国产精品亚洲综合天堂夜夜| 亚洲欧美日韩一区| 一道本一区二区三区| 成人av小说网| 国产91色在线| 一区二区三区精品视频在线| 要久久电视剧全集免费| 亚洲电影欧美电影有声小说| 国产日产久久高清欧美一区| 亚洲国产精品欧美一二99| 久久精品亚洲欧美日韩精品中文字幕| 在线观看免费av网| 成人区精品一区二区| 欧美综合亚洲图片综合区| 韩国亚洲精品| 免费看电影在线| 日本道在线视频| 久久中文字幕一区| 国产精品网曝门| 五月激激激综合网色播| 亚洲色图另类色图| 欧美激情论坛| 一区二区欧美日韩视频| 国产精品网站导航| 欧美日韩国产一区二区三区不卡| 欧美白人做受xxxx视频| 亚洲二区三区四区| 搡老女人一区二区三区视频tv| 国产精品久久久久久久久久久免费看 | 9999国产精品| 人人干在线视频| 在线看视频不卡| 爱福利视频一区| 国产精品不卡一区二区三区| 日韩大片在线播放| 欧美日韩在线看片| 一级性生活视频| 国产91精品视频在线观看| 成人一区二区三区视频在线观看| 亚洲激情自拍| 亚洲午夜久久久久久久久电影网 | 特级丰满少妇一级| 国产精品久久久久久久久久久新郎| 福利一区福利二区微拍刺激| 免费看的黄色欧美网站| 久久久加勒比| 97在线资源| 日韩欧美亚洲日产国产| 日韩最新在线视频| 亚洲国产成人高清精品| 久久九九国产| 亚洲一区二区三区四区电影 | 亚洲一区免费观看| 久久精品一区| 欧美另类中文字幕| 一级毛片在线播放| 日韩精品福利片午夜免费观看| 久久久久中文字幕| 欧美日韩午夜在线视频| 高清日韩电视剧大全免费| 国产精品一区2区3区| 午夜伦理大片视频在线观看| 黄色国产小视频| 激情伦成人综合小说| 久久精品国产成人| 91福利在线看| 91亚洲男人天堂| 欧美三级视频| 清纯唯美激情亚洲| 嫩草在线视频| 国产国产国产国产国产国产| 一区二区精品国产| 国产精品香蕉国产| www国产亚洲精品久久网站|