中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

好程序員Python培訓分享Python編程中常見的異常處理

發布時間:2020-08-10 15:25:15 來源:ITPUB博客 閱讀:283 作者:好程序員 欄目:編程語言

  好程序員Python 培訓分享 Python 編程中常見的異常處理,今天將對 python 編程中經常會遇到的一些報錯與異常的進行總結與分析,雖然不會面面俱到,但是可以提供一種面對這樣的問題時的思考方法,會對 python 的編程能力的提高有所幫助。

  初學python 經常會遇到的一些錯誤:

  下面錯誤類型的先后順序基本上是按照從0 到有一定基礎的過程會遇到的一些報錯問題:

  NameError :在剛開始接觸編程的朋友,容易犯這個錯誤,沒有聲明定義對應引用的變量,即,你來了一個無中生有。找到對應的變量,聲明即可。

  SyntaxError :這個出錯,都是語法類型的錯誤,例如多個半括號,少個半括號, for 循環時,末尾忘記英文冒號等等。出現這個錯誤,說明你對 python 的語法很不熟悉,多練習就是。

  IndentationError :縮進不正確, python 語法不熟練的明顯表現,采用 tab 鍵進行縮進比較比較方便,例外科普一個小技巧,在 jupyter 中如果要對一堆代碼進行批量縮進時,選中這堆代碼,按 tab 來進行縮進,按 shift+tab 代碼整體前進。

  ImportError :開始出現這個錯誤,說明你有了一丟丟基礎,開始要調包了。但是還不是很熟練 python 中第三方包的使用方法。這里具體說一下每一種方法的差異,就拿最常見的 pandas 來舉例

  import pandas as pd

  導入pandas 包,記為 pd 。后續需要調用 pandas 庫底下的子函數 API 時,這樣操作: pd.read_csv 此時我們調用 pandas 下的一個文件讀取函數 read_csv ,它支持許多格式的文件的讀取,例如, csv,tsv,txt 等等,具體需要去探究。

  還有一種是:

  from pandas import *

  這個是導入pandas 一級下屬的所有 API 接口,相當于把 pandas 的一堆工具散亂的扔給你,一是占空間,二是用起來你得記住對應的函數才行,而第一種可以采用 tab 補全的方法,知道 API 接口大概拼寫即可。

  還有一種:

  from pandas import read_csv, concat

  這個就比較簡潔,只把自己需要的拿出來即可,在調用特別大的包的時候,這種方法比較好,例如sklearn ,很少有見 import sklearn as sl 吧,就像一直負重前行。在知道自己具體要用哪幾個 API 的情況下,這種最優。

  TypeError :這個類型的錯誤慢慢開始由于一些有些復雜的原因引起。例如:

  TypeError : argument of type 'int' is not iterable 此處是因為 int 不可迭代。

  TypeError: cannot unpack non-iterable int object 此處是循環的變量中的元素不是一個可以。這一類型的錯誤需要你對 python 有一些掌握,例如 dict key 是不可重復的等等,需要在錯誤中累積這一類的知識。

  MoudleNotFoundError :就是你導入的包當前是木有的,這里順便說一下各種下載包的方式,首先就是在編譯器里,此操作不論是在 Windows 下還是公司的 Linux 下都可以這樣: !pip install module_name 感嘆號為英文的

  但是如果是阿里云,騰訊云,百度的ai-stduio 這種云服務器的話,需要做一定的改變: !pip install --user module_name 這個是一個小 tip 。個人有一種預感,以后云服務器會越來越普及,至少是在大數據算法愛好者中, Windows 的,數據量稍微大一點,動不動就跑的死機,云服務器則不存在這個問題,而且現在慢慢開始有了限時免費的云服務器,再往以后可能就會像流量這樣便宜。

  ValueError :這個通常是在對一個數據容器進行拆解的時候,拆出來的元素個數與賦值的變量個數不匹配,例如:

  a,b,c = ['1','1','1','1'] 里面四個元素,外面配三個變量,肯定報錯

  ValueError: too many values to unpack (expected 3)

  當然還有其他的原因造成ValueError ,例如:

  ValueError: The truth value of a Series is ambiguous

  ZeroDivisionError :這個就是你在做除法時,除數為 0 所致, python2 python3 的除法有所不同,有時候容易犯這個錯誤。 python2 的只是取整數部分,不四舍五入,例如 :

  a=0.6

  1/a python2 中是會報錯的。其他情況下報這個錯,就需要檢查一下你的對應變量的精度設置了,并且在循環指定條件逐步對某一初始為 0 的變量進行迭代累加的時候,也容易出現這個錯誤,例如,在機器學習算法或者推薦算法的召回率,準確率時,計算 hit ,數據質量較差時就容易出現這個問題。

  IndexError :索引出錯了,超出范圍。

  IndexError: list index out of range

  KeyError :出現 KeyError ,基本說明你開始會用 python 了,因為字典 dict python 中應用最為廣泛的數據存儲容器,學會字典的各種操作很重要。

  FileNotFoundError :可能是在你開始采用 python 進行一些數據分析預測,或者推薦算法,或者 nlp 或者 cv 什么的時候,文件的路徑或者文件格式,文件名出錯導致文件找不到。

  AttributeError :說通俗一些,就是某個數據結構或者類型沒有某種操作,你卻非要用這種操作,那就要報錯了,例如:

  AttributeError: 'tuple' object has no attribute 'remove' 出現這樣的錯誤的時候,說明對 python 各種東西學習的有些多,混淆了一些操作。例如 list 的元素添加是 append ,你非要用 update 來給 list 添加,而 update set 或者 dict 的,如下:

  AttributeError: 'list' object has no attribute 'update'

  MemoryError :開始遇到這個錯誤的時候,說明你的 python 基礎基本掌握,就是在你在處理一個比較大的數據集的時候,你的程序太 low ,例如,各種循環,嵌套循環,電腦被你玩蒙圈了,內存不足。這個說明一點,要開始學習 python 的數據結構與算法了,正式開始難點了。一些像小頂堆,大頂堆,二叉樹,動態規劃,鏈表,隊列的家伙開始出現在你的視野里,并且開始看不懂一些詭異的很巧妙的小算法。

所以這就驗證了一個說法,python 入門容易,但請看清楚了,僅僅是入門容易,你不能一直站在門口吧,往里面走一點,你就要費點勁。因此,需要進一步去鞏固基礎的東西,這些日常的報錯異常只是在反饋你的 bug ,自己的學習過程也是一個機器學習的 train test 的過程,學到東西開始用習題擬合,如果習題都是你做過的,抱歉,過擬合了,當上 test 的時候,你的正確率就大幅下降,你就需要修正你的訓練集了;如果你是個懶家伙,習題沒做幾個,就直接上 test ,欠擬合了,結果還是不好。所以就是在這樣的不斷迭代優化的過程中,我們學習的知識模型的泛化能力越來越好。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邵阳县| 吉林省| 海口市| 拜城县| 额敏县| 南召县| 德惠市| 邵阳市| 上高县| 米林县| 武川县| 灵璧县| 黔西县| 新晃| 五大连池市| 元江| 左云县| 朝阳县| 乌拉特后旗| 雷波县| 察雅县| 浪卡子县| 波密县| 台北县| 三都| 南江县| 株洲市| 政和县| 武强县| 东光县| 望谟县| 保德县| 洛扎县| 抚顺县| 松潘县| 万荣县| 郓城县| 周至县| 晋城| 鄂伦春自治旗| 洛南县|