91208


下記はテキストを整形するメソッドを定義したものですが、  
if文の条件文がelementという変数名のみとなっており、elifやelseifが存在しません。

この場合、if文による条件分岐の処理の流れはどのようなものになるのでしょうか？

[code]

    def strip_person(element):
        if element:
            return element.replace('人', '')
        return element
    
[/code]


CC BY-SA 4.0
2022-09-20T09:03:19.853
91194
2022-09-21T06:12:15.547
2022-09-20T18:17:07.230
3060
27812
question
python
条件分岐のない？if文の挙動について


elementが空文字であればif文の下の文は実行されず、  
一番下のreturn elementが実行されます。  
elementが空文字で無ければreturn element.replace('人', '')が  
実行されます。  
つまりelementが空文字で無ければ'人'が''に変換されますので、  
'人'の文字を消していることになります。


CC BY-SA 4.0
2022-09-20T09:17:53.617
91195
2022-09-20T09:23:27.723
2022-09-20T09:23:27.723
24490
24490
91194
answer


論理演算子、比較演算子は「演算子」というように、計算して値を返すものです。

例えば`and`演算子は

> 式 x and y は、まず x を評価します; x が偽なら x の値を返します; それ以外の場合には、 y の値を評価し、その結果を返します。

[6\. 式 (expression) — Python 3.10.6
ドキュメント](https://docs.python.org/ja/3/reference/expressions.html#boolean-
operations)

if文の

[code]

    if [cond.] : 
    
[/code]

の[cond.]部は論理演算子や比較演算子を使った式がよく使われているだけで、  
実際には式を評価した値を見ています。

というわけで

[code]

    if element:
    
[/code]

は`element`が真かどうかみています。

Pythonにおいて何を真、偽と扱うかはこちら

> ブール演算のコンテキストや、式が制御フローの文で使われる際には、次の値は偽だと解釈されます: False 、 None 、すべての型における数値の
> 0、空の文字列、空のコンテナ (文字列、タプル、リスト、辞書、集合、凍結集合など)。 それ以外の値は真だと解釈されます。

[6\. 式 (expression) — Python 3.9.12
ドキュメント](https://docs.python.org/ja/3.9/reference/expressions.html#booleans)


CC BY-SA 4.0
2022-09-21T06:12:15.547
91208
2022-09-21T06:12:15.547
13127
91194
answer