5

私はPythonプログラムでこの種の式を数回見つけました:

if variable is not None:
    dothings(variable)

私には奇妙に思えますが、それ以上の意味はないと思います。

if variable:
    dothings(variable)

たぶん私はPythonを十分に知らず、式はどこかで説明されていますか?

4

4 に答える 4

14

variable、、、、、、、0または; False_ []_ ()言い換えれば、「偽り」であると、ifステートメントはスキップされます。

ブール値のコンテキストで偽と見なされるものの詳細については、真理テストを参照してください。

要するに、ブール値のコンテキストでFalseと見なされる値を含め、他の何かvariable is not Noneを許可variableするかどうかをテストします。

于 2012-11-29T15:07:43.707 に答える
5

一部の値は偽物ですが、そうではありませんNone。あなたはまだdothings()それらの値にしたいかもしれません。

Python 2で間違っている点は次のとおりです(Python 3の値を取得するには、URLの「2」を「3」に変更することをお勧めしますが、あまり変更されていません)。

于 2012-11-29T15:07:36.537 に答える
1

例えば

i = 0

if i is not None:
    print i    # prints i

if i:
    print i    # prints nothing
于 2012-11-29T15:08:35.407 に答える
0

google voice pythonの実装でも、これに出くわしました。それらの使用は、関数呼び出し中に行われました。パラメータはデフォルトで「なし」に設定されており、関数が呼び出されると、値が変更されているかデフォルトであるかを確認できます。IE

def login (user=None, password=None)
  if user is None:
     user = input('Please enter your username');
  ...
  return <something>;

によって呼び出されます

login()

また

login(user='cool_dude')

また

希望するユーザー/パスワードの任意の組み合わせ。

さらに、ロジックの「更新」は、変数==trueまたはfalseを意味します。これはすべての場合に正しいわけではありません(場合によっては機能する可能性がありますが、一般的なケースではないため、それらを破棄します)。「NONE」ロジックを使用してテストしているのは、変数にNONE以外のものが含まれているかどうかです。私が上で言ったことと同様に、「ログイン機能」が行っていたのは、値が有効かどうかなどではなく、ユーザーが何かを渡したかどうかを判断することだけでした。

于 2012-11-29T15:12:50.790 に答える