Pythonで「#ifdef」をどのように実装しますか?

blueFast:

C私のプログラミングでは、以前はデバッグ目的(ロギングコマンドなど)にのみ使用されるコードセクションがありました。これらのステートメントは#ifdef、次のようにプリプロセッサディレクティブを使用することで、本番環境で完全に無効にすることができます

 #ifdef MACRO

 controlled text

 #endif /* MACRO */

同様のことをする最良の方法は何pythonですか?

nneonneo:

ロギングメソッドを無効にするだけの場合は、loggingモジュールを使用します。ログレベルが、たとえばデバッグステートメントを除外するように設定されている場合、logging.debugno-opに非常に近くなります(ログレベルをチェックして、ログ文字列を補間せずに戻るだけです)。

特定の変数を条件としてバイトコードのコンパイル時にコードのチャンクを実際に削除したい場合、唯一の選択肢はかなり不可解__debug__なグローバル変数です。この変数はTrue-OフラグがPythonに渡さない限り(またはPYTHONOPTIMIZE環境内で空でないものに設定されていない限り)に設定されます。

ステートメントで__debug__使用される場合ififステートメントは実際にはTrueブランチのみにコンパイルされます。この特定の最適化は、Pythonがこれまでと同様にプリプロセッサマクロに近いものです。

マクロとは異なり、コードはの両方のブランチで構文的に正しい必要がありますif


どのように__debug__機能するかを示すために、次の2つの機能を検討してください。

def f():
    if __debug__: return 3
    else: return 4

def g():
    if True: return 3
    else: return 4

今すぐそれらをチェックしてくださいdis

>>> dis.dis(f)
  2           0 LOAD_CONST               1 (3)
              3 RETURN_VALUE        
>>> dis.dis(g)
  2           0 LOAD_GLOBAL              0 (True)
              3 JUMP_IF_FALSE            5 (to 11)
              6 POP_TOP             
              7 LOAD_CONST               1 (3)
             10 RETURN_VALUE        
        >>   11 POP_TOP             

  3          12 LOAD_CONST               2 (4)
             15 RETURN_VALUE        
             16 LOAD_CONST               0 (None)
             19 RETURN_VALUE        

ご覧のとおり、f「最適化」のみされています。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonで「#ifdef」をどのように実装しますか?

分類Dev

Pythonはどのように辞書を実装しますか?

分類Dev

Pythonはどのように連結を実装しますか?

分類Dev

Pythonはどのようにstr [::-1]を実装しますか?

分類Dev

ReactでuseEffectを使用してshouldComponentUpdateをどのように実装しますか?

分類Dev

これにJavaScriptをどのように実装しますか

分類Dev

androidはsetuidなしでrun-asをどのように実装しますか

分類Dev

HaskellのIO型をJavaでどのように実装しますか?

分類Dev

Firestoreで複数のnodemailsendMail関数をどのように実装しますか?

分類Dev

Pythonはどのように相互再帰を実装しますか?

分類Dev

FPSカメラをどのように実装しますか?

分類Dev

JVMはIdentityHashMapをどのように実装しますか?

分類Dev

AWSはgetbucketlocationをどのように実装しますか?

分類Dev

「show」末尾再帰をどのように実装しますか?

分類Dev

React Native:DatePickerAndroidをどのように実装しますか?

分類Dev

JavaでLRUキャッシュをどのように実装しますか?

分類Dev

Flaskでトークン認証をどのように実装しますか?

分類Dev

Angular 2でChart.jsをどのように実装しますか?

分類Dev

CRTPでデストラクタをどのように実装しますか?

分類Dev

Flaskでトークン認証をどのように実装しますか?

分類Dev

Tensorflow.JSでsoftmaxをどのように実装しますか

分類Dev

Pythonで./executableをどのように実行しますか?

分類Dev

Goでさまざまな型のコンテナをどのように実装しますか?

分類Dev

この状況でどのように実装するかを約束しますか?

分類Dev

securesocialpluginを使用してPlay2でFacebook用のUserServicePluginをどのように実装しますか?

分類Dev

securesocialpluginを使用してPlay2でFacebook用のUserServicePluginをどのように実装しますか?

分類Dev

KerasでのLSTM実装はどのように機能しますか

分類Dev

Swift4でUITextFieldの「次へ」および「完了」関数をどのように実装しますか?

分類Dev

PythonでハウスホルダーベースのQR分解をどのように実装できますか?

Related 関連記事

  1. 1

    Pythonで「#ifdef」をどのように実装しますか?

  2. 2

    Pythonはどのように辞書を実装しますか?

  3. 3

    Pythonはどのように連結を実装しますか?

  4. 4

    Pythonはどのようにstr [::-1]を実装しますか?

  5. 5

    ReactでuseEffectを使用してshouldComponentUpdateをどのように実装しますか?

  6. 6

    これにJavaScriptをどのように実装しますか

  7. 7

    androidはsetuidなしでrun-asをどのように実装しますか

  8. 8

    HaskellのIO型をJavaでどのように実装しますか?

  9. 9

    Firestoreで複数のnodemailsendMail関数をどのように実装しますか?

  10. 10

    Pythonはどのように相互再帰を実装しますか?

  11. 11

    FPSカメラをどのように実装しますか?

  12. 12

    JVMはIdentityHashMapをどのように実装しますか?

  13. 13

    AWSはgetbucketlocationをどのように実装しますか?

  14. 14

    「show」末尾再帰をどのように実装しますか?

  15. 15

    React Native:DatePickerAndroidをどのように実装しますか?

  16. 16

    JavaでLRUキャッシュをどのように実装しますか?

  17. 17

    Flaskでトークン認証をどのように実装しますか?

  18. 18

    Angular 2でChart.jsをどのように実装しますか?

  19. 19

    CRTPでデストラクタをどのように実装しますか?

  20. 20

    Flaskでトークン認証をどのように実装しますか?

  21. 21

    Tensorflow.JSでsoftmaxをどのように実装しますか

  22. 22

    Pythonで./executableをどのように実行しますか?

  23. 23

    Goでさまざまな型のコンテナをどのように実装しますか?

  24. 24

    この状況でどのように実装するかを約束しますか?

  25. 25

    securesocialpluginを使用してPlay2でFacebook用のUserServicePluginをどのように実装しますか?

  26. 26

    securesocialpluginを使用してPlay2でFacebook用のUserServicePluginをどのように実装しますか?

  27. 27

    KerasでのLSTM実装はどのように機能しますか

  28. 28

    Swift4でUITextFieldの「次へ」および「完了」関数をどのように実装しますか?

  29. 29

    PythonでハウスホルダーベースのQR分解をどのように実装できますか?

ホットタグ

アーカイブ