Python assert斷言聲明,遇到錯誤則立即返回問題

assert斷言聲明,遇到錯誤則立即返回

在使用python語言開發深度學習模型時,經常會遇到模型運行結束時才會發現的崩潰狀態,或者得到的結果不是預想的那樣。

這就需要在模型中善於使用assert語句,來判斷某些變量的類型或者shape等是否滿足要求。

用法為 :

assert expression(你想判斷的內容)

# 等價於
if not expression:
    raise AssertionError

例如:

在邏輯回歸中,z = W的轉置*X,樣本X含有五個特征,則我們在設置W時。要一直保證其shape為[5,1]

>>> import numpy as np
>>> w = np.zeros((5,1))
>>> w
array([[0.],
       [0.],
       [0.],
       [0.],
       [0.]])
>>> assert(w.shape == (5,1))
>>> assert(w.shape == (2,1))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError

assert斷言函數

說明一下代碼適用於python2,不完全適用與py3

使用assert斷言是學習python一個非常好的習慣,python assert 斷言句語格式及用法很簡單。在沒完善一個程序之前,我們不知道程序在哪裡會出錯,與其讓它在運行最崩潰,不如在出現錯誤條件時就崩潰,這時候就需要assert斷言的幫助。本文主要是講assert斷言的基礎知識。

python assert斷言的作用

python assert斷言是聲明其佈爾值必須為真的判定,如果發生異常就說明表達示為假。可以理解assert斷言語句為raise-if-not,用來測試表示式,其返回值為假,就會觸發異常。

assert斷言語句的語法格式

  • assert python 怎麼用?
  • expression assert 表達式

assert語句用來聲明某個條件是真的。

如果你非常確信某個你使用的列表中至少有一個元素,而你想要檢驗這一點,並且在它非真的時候引發一個錯誤,那麼assert語句是應用在這種情形下的理想語句。

當assert語句失敗的時候,會引發一AssertionError。

下面做一些assert用法的語句供參考

>>assert 1==1
>> assert 1 == 2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError

>>assert 2+2==2*2
>>assert len(['my boy',12])<10
>>assert range(4)==[0,1,2,3]
>>> mylist = ['item']
>>assert len(mylist) >= 1
>>mylist.pop()
'item'
>>assert len(mylist) >= 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError

如何為assert斷言語句添加異常參數

assert的異常參數,其實就是在斷言表達式後添加字符串信息,用來解釋斷言並更好的知道是哪裡出瞭問題。

格式如下:

assert expression [, arguments]
assert 表達式 [, 參數]

自定異常

class ShortInputException(Exception):
    '''自定義的異常類'''
    def __init__(self, length, atleast):
        #super().__init__()
        self.length = length
        self.atleast = atleast

def main():
    try:
        s = input('請輸入 --> ')
        if len(s) < 3:
            # raise引發一個你定義的異常
            raise ShortInputException(len(s), 3)
    except ShortInputException as result:#x這個變量被綁定到瞭錯誤的實例
        print('ShortInputException: 輸入的長度是 %d,長度至少應是 %d'% (result.length, result.atleast))
    else:
        print('沒有異常發生.')

main()

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: