2011-05-13 10 views
5

戻り値がNoneであるかどうかをチェックするPython関数がありますか?そうであれば、MySQLのIFNULL関数のような別の値に設定できますか?MySQLのIFNULLに相当するPython

答えて

8

実際には、引数を再バインドできないためです。このよう

if foo is None: 
    foo = 42 

または

def ifnull(var, val): 
    if var is None: 
    return val 
    return var 

foo = ifnull(foo, 42) 
+1

'ifnull()'の本体は 'varがNone else var'の場合は' val 'に短縮されます。 –

+0

実際に 'return var or val'に短縮することができます。 –

+3

@IonutHulub:いいえ、' None'以外の値が多いので、falseです。 –

2

x = SOME_VALUE if x is None else x 
-2

この質問は今、2歳以上ですので、私は、これは、将来の参照のためのより多くのだと思い:)

何I好きなのはmax('', mightBeNoneVar)またはmax(0, mightBeNoneVar)です(状況によって異なります)。

より複雑な例:
print max('', col1).ljust(width1) + ' ==> '+ max('', col2).ljust(width2)

+0

私は少し畳み込まれているようですが、Python 3.xの2.xでのこのような比較は、 'NoneType'は順序付けできないので、 'TypeError' –

8

あなたはすべて "falsy" 値(すなわちNone0""[]False、など)他の特定の値にしてみましょうがすべてそのまま通過を変換したい場合orを使用できます。例えば:それはtruthyだ、とdefault_value場合xの値がfalsyある場合

print (x or default_value) 

xの値を出力します。

これは、IFNULLがデータベースのブール値列と数値列のNULLをクリーンアップするためにこの方法でよく使用されるため、このことが言及されています。明らかに、を0,Falseなどと異なる方法で処理したい場合は、これは機能しません。