Python 2.7を使用すると、次のコードがあります。
if result != None:
(data,) = result
return data
return None
変数は、result
1つの値のみを返すsqlite3クエリから返されます。クエリが結果を返す場合は、データを解凍して返します。それ以外の場合は、Noneを返します。上記のコードは過度に冗長に見え、まったくpythonicではありません。もっと良い方法はありますか?
Python 2.7を使用すると、次のコードがあります。
if result != None:
(data,) = result
return data
return None
変数は、result
1つの値のみを返すsqlite3クエリから返されます。クエリが結果を返す場合は、データを解凍して返します。それ以外の場合は、Noneを返します。上記のコードは過度に冗長に見え、まったくpythonicではありません。もっと良い方法はありますか?
if
else
次の条件を使用できます。
return result[0] if result is not None else None
またはこれを次のように単純化します。
return result[0] if result else None
空のタプルなど、result
他のfalse-y値である可能性を気にしない場合。
空でないタプルまたはNoneのいずれかのみを取得すると仮定すると、最も簡単な方法は次のとおりです。
return result and result[0]
方法は次のとおりです。
if result is not None:
return result[0]
return None
これを行うためのよりコンパクトな方法もあります。
return (result or [None])[0]
しかし、最初のものはより明確です。
最後にセミコロン(Cコードではない)を使用しないでください。Pythonのドキュメントを読むと役立ちます。それはよく過ごした時間です。
私は答えがなければ完全ではないと思いますtry/except
:
try:
return result[0]
except TypeError,IndexError:
return None
あなたが残したものと、に置き換える必要が;
あるという事実を除けば、私はあなたのコードに問題はありません。result != None
result is not None
これは単純で非常に理解しやすく、最近のリクエストのいずれかが2つ以上の要素を返しても、黙って失敗することはありません。これまでのすべてのソリューションのように、最初の要素を黙って返すのではなく、例外が発生します。