2016-04-11 7 views
0

pythonでは代入文を式で使用することはできませんが、再帰関数には適用されます。再帰関数fom if文の条件python3での呼び出し

Cコード:

if (ret = recursive_function("asdf")) return ret; 

のpython3

ret = recursive_function("asdf") 
if ret: 
    return ret 

同等のものを2つのコードはありますか?それをPython3に書き直す方法でない場合 別の例。 Python3で動作するのでしょうか?十分に型指定されたアプリケーションで

if recursive_function("asdf"): 
    #sth 

おかげ

答えて

1

、はい、これらは等価です。 しかし、これはより緩やかなCベースの意味で使用しているように見えます。返り値がのいずれかであるかどうかをテストします。真の場合またはです。これらはではなく、はC++とPythonの間で完全に一致します。同様の理由で多くの類似点がありますが、値に依存する前に確認する必要があります。

さらに、戻り値を確認してください。この機能から期待している「偽の」応答とは何ですか?たとえば、あなたは使用したいかもしれません

ret = recursive_function("asdf") 
if ret is not null: 
    return ret 

あなたは前進しますか?

+0

ありがとうございました。私は再帰的な降下パーサを書いているので、if文と関数呼び出しがたくさんある。 Python3でそれを実装する方法がより良い方法であるかどうかはわかりません。この古典的な古いスタイルのC方法だけ... – user3463614

+0

私は参照してください。 false/null /空の戻り値が不正な構文を示していますか? – Prune

+0

また、パーサージェネレータを使用する代わりに、再帰的な降下を行う理由がありますか? BNFを受け入れるツールがあり、動作中のスキャナとパーサーを撃退します。 LEX/YACCは初期の例です。 – Prune

関連する問題