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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] >[success] # 對被裝飾函數參做類型檢查 >[danger] ##### 了解signature 函數 ~~~ 1.signature 獲取函數中的形參個數s = signature(spam) ,參數是函數 2.s.bind_partial(int, int).arguments 獲取綁定參數規定類型字典 3.s.bind(4, 5).arguments 獲取實參和形參 ~~~ ~~~ from inspect import signature def spam(x, y, z=1): return x + y s = signature(spam) print(s) print(s.bind_partial(int, int).arguments) print(s.bind(4, 5)) print(s.bind(4, 5).arguments) 打印結果: (x, y, z=1) OrderedDict([('x', <class 'int'>), ('y', <class 'int'>)]) <BoundArguments (x=4, y=5)> OrderedDict([('x', 4), ('y', 5)]) ~~~ >[danger] ##### 裝飾器案例 ~~~ from inspect import signature from functools import wraps # 裝飾器接受參數層 用來接受數據類型 def typeassert(*ty_args, **ty_kwargs): def decorate(func): # 如果在優化模式下,禁用類型檢查 if not __debug__: return func # 檢查裝飾函數形參個數 sig = signature(func) # 獲取參數 類型和對應參數形成字典 bound_types = sig.bind_partial(*ty_args, **ty_kwargs).arguments @wraps(func) def wrapper(*args, **kwargs): # 獲取實參和形參 bound_values = sig.bind(*args, **kwargs) for name, value in bound_values.arguments.items(): if name in bound_types: if not isinstance(value, bound_types[name]): raise TypeError( 'Argument {} must be {}'.format(name, bound_types[name]) ) return func(*args, **kwargs) return wrapper return decorate @typeassert(int, z=int) def spam(x, y, z=42): print(x, y, z) spam("2",2) 打印結果: TypeError: Argument x must be <class 'int'> ~~~
                  <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>

                              哎呀哎呀视频在线观看