日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pytho学习笔记:错误,测试,调试(合)

發布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pytho学习笔记:错误,测试,调试(合) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

最近在學習深度學習,已經跑出了幾個模型,但Pyhton的基礎不夠扎實,因此,開始補習Python了,大家都推薦廖雪峰的課程,因此,開始了學習,但光學有沒有用,還要和大家討論一下,因此,寫下這些帖子,廖雪峰的課程連接在這里:廖雪峰
Python的相關介紹,以及它的歷史故事和運行機制,可以參見這篇:python介紹
Python的安裝可以參見這篇:Python安裝
Python的運行模式以及輸入輸出可以參見這篇:Python IO
Python的基礎概念介紹,可以參見這篇:Python 基礎
Python字符串和編碼的介紹,可以參見這篇:Python字符串與編碼
Python基本數據結構:list和tuple介紹,可以參見這篇:Python list和tuple
Python控制語句介紹:ifelse,可以參見這篇:Python 條件判斷
Python控制語句介紹:循環實現,可以參見這篇:Python循環語句
Python數據結構:dict和set介紹Python數據結構dict和set
Python函數相關:Python函數
Python高階特性:Python高級特性
Python高階函數:Python高階函數
Python匿名函數:Python匿名函數
Python裝飾器:Python裝飾器
Python偏函數:Python偏函數
Python模塊:Python模塊
Python面向對象編程(1):Python面向對象
Python面向對象編程(2):Python面向對象(2)
Python面向對象編程(3):Python面向對象(3)
Python面向對象編程(4):Pyhton面向對象(4)
Python面向對象高級編程(上):Python面向對象高級編程(上)
Python面向對象高級編程(中上):Python面向對象高級編程(中上)
Python面向對象高級編程(中下):Python面向對象高級編程(中下)
Python面向對象高級編程(完):Python面向對象高級編程(完)
Python錯誤調試(起):Python調試:起
Python錯誤調試(承):Python調試:承
Python錯誤調試(轉):Python調試:轉

目錄:

  • 前言
  • 文檔測試
    • 練習

文檔測試

如果你經常閱讀Python的官方文檔,可以看到很多文檔都有示例代碼。比如re模塊就帶了很多示例代碼:

>>> import re >>> m = re.search('(?<=abc)def', 'abcdef') >>> m.group(0) 'def'

可以把這些示例代碼在Python的交互式環境下輸入并執行,結果與文檔中的示例代碼顯示的一致。

這些代碼與其他說明可以寫在注釋中,然后,由一些工具來自動生成文檔。既然這些代碼本身就可以粘貼出來直接運行,那么,可不可以自動執行寫在注釋中的這些代碼呢?

答案是肯定的。

當我們編寫注釋時,如果寫上這樣的注釋:

def abs(n):'''Function to get absolute value of number.Example:>>> abs(1)1>>> abs(-1)1>>> abs(0)0'''return n if n >= 0 else (-n)

無疑更明確地告訴函數的調用者該函數的期望輸入和輸出。

并且,Python內置的“文檔測試”(doctest)模塊可以直接提取注釋中的代碼并執行測試。

doctest嚴格按照Python交互式命令行的輸入和輸出來判斷測試結果是否正確。只有測試異常的時候,可以用…表示中間一大段煩人的輸出。

讓我們用doctest來測試上次編寫的Dict類:

# mydict2.py class Dict(dict):'''Simple dict but also support access as x.y style.>>> d1 = Dict()>>> d1['x'] = 100>>> d1.x100>>> d1.y = 200>>> d1['y']200>>> d2 = Dict(a=1, b=2, c='3')>>> d2.c'3'>>> d2['empty']Traceback (most recent call last):...KeyError: 'empty'>>> d2.emptyTraceback (most recent call last):...AttributeError: 'Dict' object has no attribute 'empty''''def __init__(self, **kw):super(Dict, self).__init__(**kw)def __getattr__(self, key):try:return self[key]except KeyError:raise AttributeError(r"'Dict' object has no attribute '%s'" % key)def __setattr__(self, key, value):self[key] = valueif __name__=='__main__':import doctestdoctest.testmod()運行python mydict2.py:$ python mydict2.py

什么輸出也沒有。這說明我們編寫的doctest運行都是正確的。如果程序有問題,比如把_getattr_()方法注釋掉,再運行就會報錯:

File "E:/python/example/example_doctest.py", line 8, in __main__.Dict Failed example: d1.x Exception raised: Traceback (most recent call last): File "C:\Users\challenger\AppData\Local\Programs\Python\Python36\lib\doctest.py", line 1330, in __run compileflags, 1), test.globs) File "<doctest __main__.Dict[2]>", line 1, in <module> d1.x AttributeError: 'Dict' object has no attribute 'x' ********************************************************************** File "E:/python/example/example_doctest.py", line 14, in __main__.Dict Failed example: d2.c Exception raised: Traceback (most recent call last): File "C:\Users\challenger\AppData\Local\Programs\Python\Python36\lib\doctest.py", line 1330, in __run compileflags, 1), test.globs) File "<doctest __main__.Dict[6]>", line 1, in <module> d2.c AttributeError: 'Dict' object has no attribute 'c' ********************************************************************** 1 items had failures:2 of 9 in __main__.Dict ***Test Failed*** 2 failures.

注意到最后3行代碼。當模塊正常導入時,doctest不會被執行。因為設置了name=main這個測試條件。

只有在命令行直接運行時,才執行doctest。所以,不必擔心doctest會在非測試環境下執行。

練習

對函數fact(n)編寫doctest并執行:

def fact(n):'''Calculate 1*2*...*n>>> fact(1)1>>> fact(10)?>>> fact(-1)?'''if n < 1:raise ValueError()if n == 1:return 1return n * fact(n - 1)if __name__ == '__main__':import doctestdoctest.testmod()

答案:

def fact(n):'''Calculate 1*2*...*n>>> fact(1)1>>> fact(10)3628800>>> fact(-1)Traceback (most recent call last):...ValueError'''if n < 1:raise ValueError()if n == 1:return 1return n * fact(n - 1)if __name__ == '__main__':import doctestdoctest.testmod()

總結

以上是生活随笔為你收集整理的Pytho学习笔记:错误,测试,调试(合)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。