ホームページ > バックエンド開発 > Python チュートリアル > Python の and または戻り値の詳細な分析

Python の and または戻り値の詳細な分析

大家讲道理
リリース: 2016-11-07 11:11:54
オリジナル
1222 人が閲覧しました

Python では、and and or はご想像のとおり、ブール値を返しません。代わりに、実際に比較する値の 1 つを返します。

1. and:

>>> 'a' and 'b'
'b'
>>> '' and 'b'
''
>>> 'a' and 'b' and 'c'
'c'
ログイン後にコピー

は、ブールコンテキスト内の式を左から右に評価し、ブールコンテキスト内のすべての値が true の場合、最後の値を返します。

ブールコンテキストの値が false の場合、and は最初の false 値を返します

2. or:

>>> 'a' or 'b'
'a'
>>> '' or 'b'
'b'
>>> '' or [] or {}
{}
>>> 0 or 'a' or 'c'
'a'
ログイン後にコピー

or を使用する場合、値は and と同様にブールコンテキストで左から右に評価されます。値が true の場合、またはその値をすぐに返します

すべての値が false の場合、または最後の false 値を返します

ブール値コンテキストの または は、最初の true 値が見つかるまで式の計算を実行し続けることに注意してください。その後、残りの比較値は無視されます

3. and-or:

and-or は前の 2 つの構文を組み合わせて推論できます。

>>> a='first'
>>> b='second'
>>> 1 and a or b
'first'
>>> (1 and a) or b
'first'
>>> 0 and a or b
'second'
>>> (0 and a) or b
'second'
>>>
ログイン後にコピー

この構文は、C 言語の bool ? a : b 式に似ています。式全体が左から右に評価されるため、and 式が最初に評価されます。 1 と 'first' は 'first' と評価され、次に 'first' または 'second' は 'first' と評価されます。

0 と 'first' は False と評価され、次に 0 または '2 番目' は '2 番目' と評価されます。

and-or は主に三項演算子 bool?a:b を模倣するために使用されます。つまり、式 bool が true の場合は a を取得し、それ以外の場合は b を取得します。

and-or トリック、bool および a または b 式は、ブール値コンテキストで a が false と評価される場合、C 言語の式 bool a : b のように機能しません。


4. and-or を安全に使用する

>>> a=""
>>> b="second"
>>> (1 and [a] or [b])
['']
>>> (1 and [a] or [b])[0]
''
>>>
ログイン後にコピー

[a] は空ではないリストなので、 false になることはありません。 a が 0 や ''、あるいは他の false 値であっても、要素が 1 つあるため list [a] は true になります。

責任あるプログラマーは、and-or テクニックを関数にカプセル化する必要があります:

def choose(bool,a,b):
    return (bool and [a] or [b])[0]
print  choose(1,'','second')    #''
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート