2012-03-26 7 views
2

は、次のコード文はbool =(ブール式)Pythonicの形式ですか?

is_valid = command == "B" 

または

can_move = move in legal_moves() 

これらを取る形

bool = (boolean expression) 

に私は自分自身がこれらのような文を書き、それが「unpythonicと考えられていた場合、私は思ったんだけど発見されました" 何らかの方法で。私はそれが大好きだと確信していませんが、簡潔です。

だから誰もよりクリーンな選択肢がありますか?

+0

'is_valid = Trueならば(コマンド==" B ")else False' – KurzedMetal

答えて

5

あなたが持っているものは、ほとんどの人が大丈夫と思うでしょう。明らかに、簡潔で、正確に何をする必要があるのですか。標準的なライブラリには、その多くの例も含まれています。

0

これは問題ありません。もちろん、一度だけテストすれば、おそらく変数に代入する必要はありません(もちろん、状態を変更する前にテストする必要はありません)。

+0

これは複数のboolを含むタプルを返す関数用です。私はおそらく機能を完全に削除するだろうが、それは割り当ての要件です。私は式をいくつかの行に渡ってreturnステートメントに直接置くことができますが、それは読みにくいかもしれません。 – Lightbreeze

+1

変数名は何が起こっているのかを説明しているので、コードにコメントする役目もします。また、いくつかの集計ブール式が1行では長すぎる場合は、変数に格納されているブールチャンクに分割し、最終的に 'if right_room_for_an_argument not been_told_once:no_you_havent()'を実行することができます。 –

2

以来

  1. 私は明示的に代替

  2. PEP 308を示唆どのPEPがの条件式を導入して発見していない

  3. このだけでなく、標準ライブラリとドキュメントの使用罰金ですフォーム

    var = val1 if condition else val2 
    

    少なくともインラインブール代入を暗黙的に推奨します。そして

    bool = (boolean expression) 
    

    は私が `` IS_VALID =(コマンド== "B")のような、それをより明確にするために括弧を使用し `かと思いますと同等ですが、

    bool = True if (boolean expression) else False 
    
  4. として、より簡潔な
+0

er、 '真ならば(真理値表記)else False'、確かに? –

+0

もちろん。私は明らかにチューリング完全ではない。編集された答え。 –