<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                按照一般的學習思路,掌握了前兩節內容,已經足夠編程所需了。但是,我還想再多一步,還是因為本教程的讀者是要from beginner to master。 ## [](https://github.com/qiwsir/StarterLearningPython/blob/master/218.md#assert)assert ~~~ >>> assert 1==1 >>> assert 1==0 Traceback (most recent call last): File "<stdin>", line 1, in <module> AssertionError ~~~ 從上面的舉例中可以基本了解了assert的特點。 assert,翻譯過來是“斷言”之意。assert是一句等價于布爾真的判定,發生異常就意味著表達式為假。 assert的應用情景就有點像漢語的意思一樣,當程序運行到某個節點的時候,就斷定某個變量的值必然是什么,或者對象必然擁有某個屬性等,簡單說就是斷定什么東西必然是什么,如果不是,就拋出錯誤。 ~~~ #!/usr/bin/env python # coding=utf-8 class Account(object): def __init__(self, number): self.number = number self.balance = 0 def deposit(self, amount): assert amount > 0 self.balance += balance def withdraw(self, amount): assert amount > 0 if amount <= self.balance: self.balance -= amount else: print "balance is not enough." ~~~ 上面的程序中,deposit()和withdraw()方法的參數amount值必須是大于零的,這里就用斷言,如果不滿足條件就會報錯。比如這樣來運行: ~~~ if __name__ == "__main__": a = Account(1000) a.deposit(-10) ~~~ 出現的結果是: ~~~ $ python 21801.py Traceback (most recent call last): File "21801.py", line 22, in <module> a.deposit(-10) File "21801.py", line 10, in deposit assert amount > 0 AssertionError ~~~ 這就是斷言assert的引用。什么是使用斷言的最佳時機?有文章做了總結: 如果沒有特別的目的,斷言應該用于如下情況: * 防御性的編程 * 運行時對程序邏輯的檢測 * 合約性檢查(比如前置條件,后置條件) * 程序中的常量 * 檢查文檔 (上述要點來自:[Python 使用斷言的最佳時機](http://www.oschina.net/translate/when-to-use-assert)?) 不論是否理解,可以先看看,請牢記,在具體開發過程中,有時間就回來看看本教程,不斷加深對這些概念的理解,這也是master的成就之法。 最后,引用危機百科中對“異常處理”詞條的說明,作為對“錯誤和異常”部分的總結(有所刪改): > 異常處理,是編程語言或計算機硬件里的一種機制,用于處理軟件或信息系統中出現的異常狀況(即超出程序正常執行流程的某些特殊條件)。 > > 各種編程語言在處理異常方面具有非常顯著的不同點(錯誤檢測與異常處理區別在于:錯誤檢測是在正常的程序流中,處理不可預見問題的代碼,例如一個調用操作未能成功結束)。某些編程語言有這樣的函數:當輸入存在非法數據時不能被安全地調用,或者返回值不能與異常進行有效的區別。例如,C語言中的atoi函數(ASCII串到整數的轉換)在輸入非法時可以返回0。在這種情況下編程者需要另外進行錯誤檢測(可能通過某些輔助全局變量如C的errno),或進行輸入檢驗(如通過正則表達式),或者共同使用這兩種方法。 > > 通過異常處理,我們可以對用戶在程序中的非法輸入進行控制和提示,以防程序崩潰。 > > 從進程的視角,硬件中斷相當于可恢復異常,雖然中斷一般與程序流本身無關。 > > 從子程序編程者的視角,異常是很有用的一種機制,用于通知外界該子程序不能正常執行。如輸入的數據無效(例如除數是0),或所需資源不可用(例如文件丟失)。如果系統沒有異常機制,則編程者需要用返回值來標示發生了哪些錯誤。 > > 一段代碼是異常安全的,如果這段代碼運行時的失敗不會產生有害后果,如內存泄露、存儲數據混淆、或無效的輸出。 > > Python語言對異常處理機制是非常普遍深入的,所以想寫出不含try, except的程序非常困難。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看