国产探花免费观看_亚洲丰满少妇自慰呻吟_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"]

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吉首市| 张家港市| 博乐市| 沂水县| 塔城市| 新密市| 炎陵县| 曲周县| 洞口县| 桦南县| 祁阳县| 普格县| 青海省| 阿城市| 全椒县| 周宁县| 江陵县| 佳木斯市| 蒲江县| 萍乡市| 化州市| 繁峙县| 桐梓县| 庆安县| 株洲县| 遂平县| 双鸭山市| 武隆县| 清镇市| 丹寨县| 江门市| 南安市| 连城县| 汕尾市| 教育| 民权县| 琼中| 鞍山市| 霞浦县| 寻乌县| 黑山县|