国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python程序員開發中常犯的10個錯誤

2020-02-23 05:32:42
字體:
來源:轉載
供稿:網友

Python是一門簡單易學的編程語言,語法簡潔而清晰,并且擁有豐富和強大的類庫。與其它大多數程序設計語言使用大括號不一樣 ,它使用縮進來定義語句塊。

  在平時的工作中,Python開發者很容易犯一些小錯誤,這些錯誤都很容易避免,本文總結了Python開發者最常犯的10個錯誤,一起來看下,不知你中槍了沒有。

1.濫用表達式作為函數參數默認值

  Python允許開發者指定一個默認值給函數參數,雖然這是該語言的一個特征,但當參數可變時,很容易導致混亂,例如,下面這段函數定義:
代碼如下:
>>> def foo(bar=[]):        # bar is optional and defaults to [] if not specified
...    bar.append("baz")    # but this line could be problematic, as we'll see...
...    return bar
  在上面這段代碼里,一旦重復調用foo()函數(沒有指定一個bar參數),那么將一直返回'bar',因為沒有指定參數,那么foo()每次被調用的時候,都會賦予[]。下面來看看,這樣做的結果:
代碼如下:
>>> foo()
["baz"]
>>> foo()
["baz", "baz"]
>>> foo()
["baz", "baz", "baz"]

解決方案:
代碼如下:
>>> def foo(bar=None):
...    if bar is None:  # or if not bar:
...        bar = []
...    bar.append("baz")
...    return bar
...
>>> foo()
["baz"]
>>> foo()
["baz"]
>>> foo()
["baz"]

2.錯誤地使用類變量

先看下面這個例子:
代碼如下:
>>> class A(object):
...     x = 1
...
>>> class B(A):
...     pass
...
>>> class C(A):
...     pass
...
>>> print A.x, B.x, C.x
1 1 1

這樣是有意義的:
代碼如下:
>>> B.x = 2
>>> print A.x, B.x, C.x
1 2 1
再來一遍:
代碼如下:
>>> A.x = 3
>>> print A.x, B.x, C.x
3 2 3
  僅僅是改變了A.x,為什么C.x也跟著改變了。

  在Python中,類變量都是作為字典進行內部處理的,并且遵循方法解析順序(MRO)。在上面這段代碼中,因為屬性x沒有在類C中發現,它會查找它的基類(在上面例子中只有A,盡管Python支持多繼承)。換句話說,就是C自己沒有x屬性,獨立于A,因此,引用 C.x其實就是引用A.x。

3.為異常指定不正確的參數

  假設代碼中有如下代碼:
代碼如下:
>>> try:
...     l = ["a", "b"]

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 灵寿县| 华亭县| 四子王旗| 客服| 大兴区| 通河县| 哈巴河县| 怀集县| 娄烦县| 孝昌县| 涞源县| 祁东县| 盐亭县| 新源县| 额尔古纳市| 南平市| 敖汉旗| 黄大仙区| 博白县| 玉田县| 开阳县| 榆树市| 南华县| 丰县| 冕宁县| 原平市| 太仓市| 呼玛县| 漳浦县| 南雄市| 新晃| 高邮市| 礼泉县| 株洲市| 武威市| 辽阳市| 安多县| 牟定县| 长武县| 邢台市| 历史|