Python基礎教程(一) - 錯誤和異常

2020-12-05 百家號

程式設計師的一生中,錯誤幾乎每天都在發生。在過去的一個時期,錯誤要麼對程序是致命的,要麼產生一堆無意義的輸出。所以,人們需要一個柔和的處理錯誤的方法,而不是終止執行。當然,這一切都是在異常和異常處理出現之前的事了。

Python中的異常

從軟體方面來說,錯誤是語法或是邏輯上的。語法錯誤是軟體的結構上有錯誤,導致不能被解釋器解釋或編譯器無法編譯。這些錯誤必須在程序執行前糾正。當語法正確後,剩下的就是邏輯錯誤了。邏輯錯誤可能是由於不完整或是不合法的輸入所致。當Python檢測到一個錯誤時,解釋器就會指出當前流已經無法繼續執行下去,這時候就出現了異常。我們來看幾個異常的例子。

NameError:嘗試訪問一個未申明的變量SyntaxError:Python解釋器語法錯誤IndexError:請求的索引超過序列範圍KeyError:請求一個不存在的字典關鍵字IOError:輸入/輸出錯誤AttributeError:嘗試訪問未知的對象屬性

檢測和處理異常

異常可以通過try語句來檢測。任何在try語句塊裡的代碼都會被監測,檢查有無異常發生。

try語句有兩種主要形式:try-except和try-finally。一個try語句可以對應一個或多個except子句,但只能對應一個finally子句,或是一個try-except-finally複合語句。我們還可以在一個except子句裡處理多個異常,except語句在處理多個異常時要求異常被放在一個元組裡。

with語句

類似try-except-finally,with語句也是用來簡化代碼的,with語法的基本用法如下:with context_expr [as var]: with_suite。看起來如此簡單,但並不如看上去那麼容易。簡單演示下打開文件的例子。

觸發異常

到目前為止,我們見到的所有異常都是由解釋器引發的。由於執行期間的錯誤而引發。程式設計師在編寫API時也希望在遇到錯誤的輸入時觸發異常,為此,Python提供了一種機制讓程式設計師明確的觸發異常,這就是raise語句。raise一般的用法是:raise [SomeException [, args, [, traceback]]],第一個參數觸發異常的名字。如果有,必須是一個字符串,類或實例。第二個符號為可選的args(比如參數,值),來傳給異常。最常見的用法為SomeException是一個類,不需要其他的參數。

異常和sys模塊

另一種獲取異常信息的途徑是通過sys模塊中的exc_info()函數。此功能提供了一個3元組的信息,多於我們單純用異常參數所能獲得的。

相關焦點

  • python基礎教程之python是什麼?
    這是最近10年最常用的10種程式語言的變化圖:python是什麼--python的功能總的來說,這幾種程式語言各有千秋。第一個缺點就是運行速度慢,和C程序相比非常慢,因為Python是解釋型語言,你的代碼在執行時會一行一行地翻譯成CPU能理解的機器碼,這個翻譯過程非常耗時,所以很慢。而C程序是運行前直接編譯成CPU能執行的機器碼,所以非常快。但是大量的應用程式不需要這麼快的運行速度,因為用戶根本感覺不出來。
  • Python基礎教程(一) - 快速入門
    從今天開始學習python,會將學習到的相關知識整理到這裡。今後的所有內容都基於Ubuntu系統中進行的,和其他語言一樣,讓我們先來"Hello World!"吧。Hello world!#!/usr/bin/python為Linux系統下Python解釋器的路徑,通常python解釋器的路徑安裝在/usr/local/bin或/usr/bin目錄下。
  • Python程式設計師最常犯的10個錯誤,你中招了嗎?
    因其內置了高級數據結構,並支持動態類型和動態綁定,使用Python進行快速應用程式開發十分便利。同時作為一門腳本語言,它兼容部分現有的組件和服務。Python還支持模塊和各種庫的擴展,有助於實現模塊化編程和提高代碼復用率。
  • Python基礎教程(一) - 函數和函數式編程
    前面使用過很多print()來進行列印,這是python提供的內建函數,你也可以自己創建函數,這叫做用戶自定義函數。創建函數你可以定義一個由自己想要功能的函數,用def語句來創建,標題行由def關鍵字,函數的名字,以及參數的集合(如果有的話)組成。
  • Python新手入門最容易犯的錯誤匯總
    該錯誤發生在如下代碼中:spam = ['cat', 'dog', 'mouse']for i in range(spam):print(spam[i])python一些最重要的內建異常類名總結AttributeError:屬性錯誤,特性引用和賦值失敗時會引發屬性錯誤NameError:試圖訪問的變量名不存在SyntaxError:語法錯誤,代碼形式錯誤Exception:所有異常的基類,因為所有python異常類都是基類
  • 《小灰教你零基礎學python》-Python入門語言
    一、什麼是程序?所以可以與Perl、Ruby、和Java等語言相媲美。Python目前是分成2個大版本,python2 和python3,python是完全免費的,所以不用擔心版權問題,因為python2已經廢棄,所以咱們這套課程完全基於python3。
  • Python基礎教程(一) - 條件和循環
    單個if語句可以通過使用布爾操作符and、or和not實現多重判斷條件或是否定判斷條件。和其他語言一樣,Python提供了與if語句搭配使用的else語句。如果if語句的條件表達式的結果布爾值為假,那麼程序將執行else語句後的代碼。
  • python迭代器和生成器總結——新的斐波那契數列
    python迭代器題目:給定一個序列,循環輸出序列中的每個元素。通過一個for循環就可以實現,如下:StopIteration我們看到,在控制臺上,得到了一個異常,StopIteration,即停止迭代。
  • 中科大統計學python_python 中科大 - CSDN
    p=24課程介紹:這門課程將學會理解如何診斷機器學習系統中的錯誤;能夠優先減小誤差最有效的方向;理解複雜ML設定,例如訓練/測試集不匹配,比較並/或超過人的表現;知道如何應用端到端學習、遷移學習以及多任務學習。
  • Python新手爬蟲,簡單製作抓取廖雪峰的教程的小爬蟲
    Python 數據處理 Python編程從入門到實踐 核心編程基礎教程 網絡爬蟲入門書籍 python視頻編程從入門到精通 程序設計教材人民郵電¥72.2領3元券話不多說,先來看看整個爬蟲過程吧!目標:廖雪峰官網—python教程工具:pycharm、python3.6、requests庫、time庫、lxml庫思路:85 抓取所有的目錄章節 url85 找到 url內教程主體所在的 div85 遍歷 div下所有標籤,文本和代碼部分內容直接保存85 區分其中的代碼、圖片、視頻 3個內容,
  • Pytest丨如何使用全功能的Python測試框架?小白必看
    pytest斷言前面說到pytest的斷言比較強大,它直接可以使用python自帶的斷言內容,當然不止而已,pytest還有一個重要的功能是可以重寫assert關鍵字,pytest會截斷對python中自帶的assert的調用然後替換成自己定位的assert,從而可以獲取更多的錯誤信息,讓我們知道具體哪裡出現了問題。編寫一個加法進行通過斷言驗證。
  • 如何自學成 Python 大神?這裡有些建議
    以下是我推薦的一些步驟: 了解 Python 的基礎知識掌握任何一門程式語言的基礎都是非常重要的。你至少首先應該明白如何輸入和輸出。然後學習錯誤處理(異常: http://www.techbeamers.com/python-try-except-beginners )和文件管理(文件I/O: http://www.techbeamers.com/python-file-handling-tutorial-beginners )。
  • 簡單火箭2基礎教程
    01前言「火箭」一詞,對於大多數人是既熟悉又陌生的詞語。熟悉是因為總是能看到某某火箭的成功發射,其中最振奮人心的應該非中國長徵火箭莫屬了,至2020年,中國已經連續兩年奪得火箭發射數量的世界冠軍,而陌生則是因為火箭製造與應用背後的原理很少被人所熟知。
  • 200個精選ML、NLP、Python及數學最佳教程(附連結)
    本文中我將分四個主題進行整理: 機器學習,自然語言處理,Python和數學。在每個主題中我將包含一個例子和多個資源。當然我不可能完全覆蓋所有的主題啦。如果你發現我在這裡遺漏了好的教程資源,請聯繫告訴我。為了避免資源重複羅列,我在每個主題下只列出了5、6個教程。
  • python sys模塊的常見用法匯總
    python的內置模塊sys,提供了系統相關的一些變量和函數,在實際開發中,常見的有以下幾種用法1.版本有限制的代碼,可以通過以上方法來判斷python版本是否符合要求。 標準輸入,輸出和錯誤流sys模塊提供了變量來表示標準輸入,輸出和錯誤流,列表如下sys.stdin, 標準輸入流sys.stdout,標準輸出流
  • 奉賢區初級Solidworks裝配體培訓基礎教程
    奉賢區初級Solidworks裝配體培訓基礎教程這些問題是否很耳熟?不單單是您,大多數快速發展的企業都面臨這些問題。儘管您還感覺不到這方面的問題,但這些問題確實需要面對和解決。埃森哲諮詢公司對250名製造業企業高管進行了調查,並發布了《製造業領先者如何在持續變化和不確定的環境下茁壯成長》研究報告。
  • Python還能火多久?
    Web服務是指可以利用Python實現開發網頁的功能,這個方向也是當前各種程式語言在就業方面需求最大的一個方向,在這個方向上Flask和Django是python的好搭檔。這兩本選一本學就可以,《Python基礎教程》講得非常詳細,Python的各種語法基本全部都講到了。如果只是想要快速應用這門語言的話,可以學習一些快速應用類的書。機器學習機器學習推薦三本書。
  • python數據類型總結——列表
    python用列表或元組來幫助我們。python列表一系列元素組成一個集合,可能通過索引,對每個元素進行訪問。這種數據類型統稱為序列。在python中,字符串就是一種序列。如下:拼接和重複in 和 not in 也同樣可以。
  • python基礎課程 第5章 奇妙的內建函數
    今天我們來講講 python 的常用內建函數,以便於大家在日常編程過程中遇到類似的場景可以直接拿來使用,不用再重複自己了。python 內建函數(python自帶的函數) 數量加起來大概有70多個,今天我們主要講常用的一些,至於更多的內容可以在以後的基礎教程裡慢慢學到。
  • Python和人工智慧有什麼關係?Python 和人工智慧的區別是什麼?
    人工智慧是一個大的範疇,包括很多方面的應用,比如機器學習,在機器學習中的回歸算法,它們是通過統計分析所有數據來建立多因式,然後求解式子,而在這個過程中程式語言起到的作用是清洗數據、處理數據、建立關係求解結果的作用,python適用於數據清洗且學習成本低,所以在一定程度上,好一部分人傾向於將python應用於人工智慧應用領域。