<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                >[success] # 裝飾器 ~~~ 1.不用通過更改代碼,進行代碼 擴展的一種手段 --- 裝飾器個人理解 2.使用的時候創建一個閉包的函數,然后@+閉包函數名給要裝飾的函數上 ~~~ >[danger] ##### 裝飾器理解案例 --- 通過裝飾器創建一個代碼計時器 ~~~ 1.現在有一個方法 countdown,我們想在不改變countdown 方法的基礎上創建一個裝飾 2.裝飾器 timethis 利用閉包的原理 3.閉包原理,最外層函數作為一個函數用來接收要傳入的函數,內存函數用來處理擴展當前需要擴展的函數 ~~~ ~~~ import time from functools import wraps def timethis(func): @wraps(func) def wrapper(*args, **kwargs): start = time.time() result = func(*args, **kwargs) end = time.time() print(func.__name__,end-start) return result return wrapper @timethis def countdown(n): while n>0: n-=1 countdown(100000) 打印結果: countdown 0.0059795379638671875 ~~~ * 其實上面的代碼等同于 ~~~ # 在不利用裝飾器修飾的情況下直接調用等同于 n = timethis(countdown) n(100000) ~~~ >[danger] ##### 裝飾器中的 wraps ~~~ 1.保存被裝飾函數的一些元數據(就是一些魔法方法,個人理解就是函數指向問題) 2.下面的代碼吧@wraps(func) 注釋掉后打印結果wrapper,現在執行是閉包函數最內層函數 3.如果加上@wraps(func) 打印結果是 ountdown 也就是當前被裝飾函數 ~~~ ~~~ import time from functools import wraps def timethis(func): # @wraps(func) def wrapper(*args, **kwargs): start = time.time() result = func(*args, **kwargs) end = time.time() print(func.__name__,end-start) return result return wrapper @timethis def countdown(n): while n>0: n-=1 print(countdown.__name__) ~~~
                  <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>

                              哎呀哎呀视频在线观看