1. ホーム
  2. python

[解決済み] Python: 1行でtry文を作成する。

2022-09-19 06:59:42

質問

Pythonでtry/exceptを1行にする方法はありますか?

みたいな

b = 'some variable'
a = c | b #try statement goes here

ここで b は宣言された変数で c はそうではありません...ですから c はエラーを投げますし ab ...

どのように解決するのですか?

を圧縮する方法はありません。 try / except のブロックをPythonの1行にまとめることができます。

また、いくつかの他の動的言語でのように、Pythonで変数が存在するかどうかを知らないことは悪いことです。より安全な方法(そして一般的なスタイル)は、すべての変数に何かを設定することです。もし変数が設定されないかもしれないなら、変数に None に設定します (または 0 または '' などとするとより適切です)。


もし、あなたが する であれば、選択肢はあります。

  • 最良の選択肢は、if文です。

    c = None
    b = [1, 2]
    
    if c is None:
        a = b
    else:
        a = c
    
    
  • ワンライナー・オプションは条件式です。

    c = None
    b = [1, 2]
    a = c if c is not None else b
    
    
  • の短絡的な挙動を悪用する人がいます。 or を利用して、このようなことをします。 これはエラーになりやすい。 になるので、私は決して使いません。

    c = None
    b = [1, 2]
    a = c or b
    
    

    次のようなケースを考えてみましょう。

    c = []
    b = [1, 2]
    a = c or b
    
    

    この場合 a おそらく でなければならない である [] であるべきですが、これは [1, 2] というのは [] はブーリアンコンテキストでは false になるからです。falseになりうる値はたくさんあるので、私は or というトリックは使いません。(これは、人々が if foo: という意味なのに if foo is not None: .)