[解決済み] 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
はエラーを投げますし
a
は
b
...
どのように解決するのですか?
を圧縮する方法はありません。
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:
.)
関連
-
[解決済み] 複数の例外を1行でキャッチする(ブロックを除く)
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] 文字列が空かどうかを確認する方法は?
-
[解決済み] 最近のPythonでカスタム例外を宣言する適切な方法?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] Pythonの辞書にあるスレッドセーフについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] Spyderを仮想環境で動作させるには?
-
[解決済み] Python 3でバイナリデータを標準出力に書き込むには?
-
[解決済み] PythonからSMTPを使用してメールを送信する
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] 古いバージョンのPythonにおける辞書のキーの並び順
-
[解決済み] あるオブジェクトが数であるかどうかを確認する、最もパイソン的な方法は何でしょうか?
-
[解決済み] virtualenv の `--no-site-packages` オプションを元に戻す。
-
[解決済み] Pythonでランダムなファイル名を生成する最良の方法
-
[解決済み] 認証プラグイン 'caching_sha2_password' はサポートされていません。