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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 期货交易_Python期货量化交易基础教程(8)

發布時間:2025/3/21 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 期货交易_Python期货量化交易基础教程(8) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

8、錯誤和異常處理

Python中常見的錯誤有兩類,一是語法錯誤,二是異常。

語法錯誤是違反了Python語法規則,導致代碼無法執行。

異常是語法沒有錯誤,但在執行過程中因為代碼邏輯問題又發生了故障。

8.1、try語句:

Python中用try語句處理異常。

我們先從示例開始:

>>> if:

File "", line 1

if:

^

SyntaxError: invalid syntax

>>>

此例是一個不完整的if語句,報了語法錯誤:SyntaxError,具體內容為invalid syntax,語法錯誤在編寫代碼時就應當避免。

再看下一個例子:

>>> def func(a):

... print(a+5)

...

>>> a='xyz'

>>> func(a)

Traceback (most recent call last):

File "", line 1, in

File "", line 2, in func

TypeError: can only concatenate str (not "int") to str

>>> func(b)

Traceback (most recent call last):

File "", line 1, in

NameError: name 'b' is not defined

>>>

此例定義一個函數func和一個變量a,然后調用func并把a作為參數傳入,語法沒有錯誤,但a是字符串不能與整型相加,產生了邏輯錯誤,所以拋出了異常類型錯誤:TypeError,具體內容為can only concatenate str(not"int") to str。調用func(b)由于b沒有定義,所以拋出了異常名字錯誤:NameError,具體內容為name 'b'is not defined

我們先用一簡單的try語句捕捉上例異常,因為我們已經知道了異常是類型錯誤和名字錯誤,所以可如下寫:

>>> try :

... func(a)

... func(b)

... except TypeError:

... print('a值不能運算')

... except NameError:

... print('b未定義')

...

a值不能運算

>>>

try后跟可能拋出異常的語句func(a)、func(b),except后跟異常名,表示捕捉指定異常,try按字面意思就是嘗試運行其后的語句,如果發生異常就由后面的except捕捉。此例有兩個異常,所以用兩個except捕捉,指定的異常是TypeError和NameError,捕捉到了異常則執行該異常下的語句塊,輸出結果只有'a值不能運算',說明當捕捉到一個異常后,其余的異常不再捕捉,因為其余可能產生異常的語句沒有再執行的意義。

如果多個異常會用到同樣的處理語句,則多個異??梢苑旁谕粋€except后面,例如:

>>> try :

... func(a)

... func(b)

... except (TypeError,NameError):

... print('a值不能運算或b值未定義')

...

a值不能運算或b值未定義

>>>

表示捕捉異常TypeError或NameError。

我們可以用as語句獲取異常的具體內容,并將內容賦值給變量,如下:

>>> try :

... func(a)

... except TypeError as T:

... print('a值不能運算')

... print(T)

...

a值不能運算

can only concatenate str (not "int") to str

>>>

用as語句把TypeError的具體內容賦值給T,再輸出T,即:can only concatenate str(not"int") to str

如果except后跟Exception,則捕捉所有的常規異常錯誤,例如:

>>> try :

... func(a)

... except Exception as e:

... print('捕捉到了異常:',e)

...

捕捉到了異常: can only concatenate str (not "int") to str

>>>

如果except后不跟異常名,則捕捉所有的異常,包括自定義的異常,例如:

>>> try :

... func(a)

... except :

... print('捕捉到了異常')

...

捕捉到了異常

>>>

但不建議這么做,因為不知道異常的具體內容是什么,難以對異常排查,所以except后至少應跟常規異常Exception,自定義的異常也應該繼承Exception。

我們可用mro()函數查看異常的繼承順序,例如:

>>> TypeError.mro()

[, , , ]

>>>

從繼承的順序可知,異常的太上皇是BaseException,BaseException是所有異常的基類,BaseException一般用不到,常規錯誤基類Exception是皇上,用到Exception就夠了,自定義的異常也應直接或間接繼承Exception。通常對于不確定的異常用Exception捕捉,并放在最后捕捉,如果放前面則異常都被Exception截獲,其后的異常不會再被檢驗。

更全異常捕捉示例:

>>> try :

... func(a)

... func(b)

... except TypeError as T:

... print('a值不能運算')

... print(T)

... except NameError as N:

... print('b值未定義')

... print(N)

... except Exception as e:

... print(e)

...

a值不能運算

can only concatenate str (not "int") to str

>>>

如果執行語句沒有異常,try語句便可以執行結束了,但若需要在沒有異常時也執行某些語句,可以用else語句執行,例如:

>>> a=4;b=6

>>> try :

... func(a)

... func(b)

... except TypeError as T:

... print('a值不能運算')

... print(T)

... except NameError as N:

... print('b值未定義')

... print(N)

... except Exception as e:

... print(e)

... else:

... print('沒有異常')

...

9

11

沒有異常

>>>

重新定義了a、b兩個整數,則調用func(a)、func(b)便可正常執行,沒有捕捉到異常則執行else語句。

最后,如果不管是否有異常,都要執行某些操作,比如釋放資源,則用finally語句來執行,例如:

>>> try :

... func(a)

... func(b)

... except TypeError as T:

... print('a值不能運算')

... print(T)

... except NameError as N:

... print('b值未定義')

... print(N)

... except Exception as e:

... print(e)

... else:

... print('沒有異常')

... finally:

... print('刪除變量釋放資源')

... del a,b

...

9

11

沒有異常

刪除變量釋放資源

>>> a

Traceback (most recent call last):

File "", line 1, in

NameError: name 'a' is not defined

>>> b

Traceback (most recent call last):

File "", line 1, in

NameError: name 'b' is not defined

>>>

finally語句里刪除了變量a、b,所以再調用a、b時報了NameError。以上便是try異常處理語句的基本結構。

8.2、raise語句:

我們除了讓程序運行時自動拋出異常外,還可以按需要主動拋出異常,Python中用raise語句拋出指定的異常,并可向異常傳遞數據。

我們先看一個示例:

def func(a):

if type(a) != int:

raise ValueError

print(a+5)

函數中用if語句判斷參數a,不是整型時拋出ValueError異常,執行效果如下:

>>> a='xyz'

>>> func(a)

Traceback (most recent call last):

File "", line 1, in

File "", line 3, in func

ValueError

>>> try:

... func(a)

... except ValueError as e:

... print(e,'不是整型')

...

不是整型

前面我們把字符串傳入func由程序拋出異常時拋出的是TypeError,這次我們用raise主動拋出異常,則拋出了指定異常ValueError 。

ValueError并沒有具體信息,所以print語句沒有輸出e的值,我們可以用raise拋出異常的同時傳入數據,例如:

>>> def func(a):

... if type(a) != int:

... raise ValueError('不是整型')

... print(a+5)

...

>>> a='xyz'

>>> try:

... func(a)

... except ValueError as e:

... print(e)

...

不是整型

>>>

這次拋出的ValueError異常輸出了具體信息“不是整型”。

8.3、自定義異常類:

我們可自己定義異常類,自定義異常應繼承常規異常類Exception,例如:

class ZiError(Exception):

def __init__(self, arg):

self.arg = arg

def __str__(self):

return self.arg

自定義異常需要用raise語句主動拋出,且會自動調用__str__()函數返回異常具體信息,例如:

>>> def func(a):

... if type(a) != int:

... raise ZiError('不是整型') #拋出ZiError的實例,arg值為'不是整型'

... print(a+5)

...

>>> a='xyz';b=5

>>> try:

... func(b)

... func(a)

... except ZiError as z:

... print(z)

...

10

不是整型

>>>

func(b)可正常執行,但func(a)拋出自定義異常ZiError,并輸出異常信息:不是整型。

總結

以上是生活随笔為你收集整理的python 期货交易_Python期货量化交易基础教程(8)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 韩日一区 | www.成人 | 激情福利社 | 98国产精品 | 国产亚洲精品美女 | 精品视频一区二区在线观看 | 婷婷四房播播 | 久草福利在线视频 | 真实偷拍激情啪啪对白 | 黄a视频| 男女黄床上色视频免费的软件 | 日韩大尺度视频 | 午夜成人免费视频 | 黄色在线观看视频网站 | 日韩一级淫片 | av在线不卡一区 | 女性生殖扒开酷刑vk | 无码人妻aⅴ一区二区三区69岛 | 长腿校花无力呻吟娇喘的视频 | 99热只有这里有精品 | 黄色另类小说 | 黄色片网站在线免费观看 | 欧美另类z0z变态 | 日本福利在线观看 | 国产精品免费一区二区三区都可以 | 亚洲精品乱码 | 女性裸体视频网站 | 日本jizzjizz| 精品国产乱码久久久久久郑州公司 | 麻豆传媒网 | 丁香花高清在线 | 一级片网址 | 亚洲 欧美 激情 另类 校园 | 91老肥熟| 国模私拍在线 | 日本一区二区三区视频在线观看 | 国精产品一区一区三区mba下载 | 黄色亚洲视频 | 男女黄色录像 | 天堂资源在线播放 | 国产主播在线看 | 亚洲香蕉久久 | 中午字幕在线观看 | 青青av| 中文亚洲欧美 | 性生活视频软件 | 视频一区在线播放 | 日本打白嫩屁股视频 | 国产喷水视频 | 婷婷第四色| av首页在线观看 | 欧美精品动漫 | 亚洲一区二区三区综合 | 日本一区二区不卡在线 | 日韩bbw| 封神榜二在线高清免费观看 | 日本吃奶摸下激烈网站动漫 | 本站只有精品 | 欧美大尺度做爰啪啪床戏明星 | 99精品视频在线观看免费 | 天天av天天干 | 国产在线一区二区 | 国产精品v欧美精品v日韩精品 | 玉米地疯狂的吸允她的奶视频 | 久久精品第一页 | 欧美成视频 | av不卡中文字幕 | 亚欧洲精品视频在线观看 | 玖玖玖视频 | 久操热线 | 老女人一毛片 | 午夜黄色在线观看 | 丝袜老师让我了一夜网站 | 高清毛片aaaaaaaaa片 | 天堂久久久久久 | 欧美性xxxxx极品娇小 | 日本欧美黄色 | 制服诱惑一区二区三区 | 欧美群妇大交群 | 91久久久久久| 蜜臀99久久精品久久久久久软件 | 一区二区传媒有限公司 | 中文字幕一区二区在线观看视频 | 丁香激情六月 | 国产精品一区二区三区免费看 | 少妇又紧又爽视频 | 久久久久高清 | 九色精品 | 毛片网在线 | 国产做爰全过程免费视频 | 黄色福利视频 | 一级做a视频 | 在线观看wwww| 久章操| 娇妻被肉到高潮流白浆 | 四季av综合网站 | 99re在线观看 | 久久婷婷丁香 | 狠狠操狠狠插 |