pythonの卵が痛いところといくつかのテクニック

1634 ワード

この文書のすべてのコードはpython 2に基づいている.7.10構文
卵が痛いところ:
  • 多重ループから飛び出した.複数サイクル(2つ以上)がある場合は、複数サイクルを飛び出してpythonで卵が痛い.goto文がなく、javaのようにループごとにlabelを割り当てることができず、ループごとに関数として書くか、ループごとにflagを付けるしかない.flagを使用すると、最下層の4番目のサイクルから最外層の1番目のサイクルに変更するには、
  • と書かなければなりません.
    flag1 = flag2 = flag3 = flag4 = 1
    while flag1:
            # do something
        while flag2:
            # do something
            while flag3:
                # do something
                while flag4:
                    # do something
                    flag2 = flag3 = flag4 = None

    これらのループがwhileではなくforでリストを巡る場合、コードはさらに見苦しいです.
  • pythonは他の多くの言語とは異なり、複数の比較オペレータは同じ行で行うことができ、評価順序は左から右であり、3 < 4 < 5という表現のサポートは手間が省け、快適に書くことができる.しかし、このルールを忘れてjavaやcの文法で見ると、卵が痛くなることがあります.例えば3 < 5 == False、結果はFalseである.一見、どう考えてもわかりませんが、(3 > 5) == Falseでも3 > (5 == False)でも結果はTrueです.よく考えてみると、
  • だった.
    >>> 3 > 5 == False  #    3>5 and 5==False
    False

    うっかりして理解を間違えた!
    pythonのテクニック
  • 削除リストの中の要素がリストを遍歴する時に要素を削除すると思わぬエラーが発生し、filterやリスト解析で代用することができる.