[解決済み] Pythonのループの`else`句の意味を理解するにはどうしたらいいですか?
質問
多くのPythonプログラマーは、おそらく
while
ループと
for
ループには、オプションで
else:
節があります。
for val in iterable:
do_something(val)
else:
clean_up()
の本文は
else
節は、ある種のクリーンアップ処理を行うのに適した場所であり、ループの正常終了時に実行される。つまり、ループの終了時に
return
または
break
はスキップします。
else
句の後に終了します。
continue
が実行されます。これを知っているのは、私がちょうど
調べる
を(またもや)思い出すことができないからです。
いつ
その
else
節が実行される。
常に?その名の通り、ループの失敗時?通常の終了時?ループが
return
? 調べてみないと完全にはわからないのですが。
私は、この不確かさを、キーワードの選択のせいにしています。
else
このセマンティクスは信じられないほど記憶に残らない。私の質問は、「なぜこのキーワードがこの目的に使われるのか」ではなく、(回答とコメントを読んでからですが、私はおそらく閉じるに一票を投じます)、「なぜこのキーワードがこの目的に使われるのか」です。
をどのように考えたらよいのでしょうか?
else
キーワードの意味を理解し、それを記憶することができますか?
との整合性を考えての選択であることは想像がつきます。
try
ステートメントの
else:
節(これも調べないといけませんが)と、Pythonの予約語のリストを増やさないという目的からです。おそらく
else
を使えば、その機能が明確になり、記憶に残りやすくなるのですが、私は名前と機能を結びつけたいのであって、歴史的な説明そのものをしたいわけではありません。
の答えは
この質問
私の質問と重複しているとして一時的に締め切られたものですが、興味深い裏話がたくさんあります。私の質問は別の焦点を持っています。
else
しかし、この質問にはどこかにリンクがあるはずです。
どのように解決するのですか?
その
while
ステートメント
を付けて
else
節
while condition:
suite
else:
exhausted
とは全く同じです。
while True:
if not condition:
exhausted
break
suite
は
for
ステートメント
を付けて
else
節
for item in iterable:
suite
else:
exhausted
とは全く同じです。
iterator = iter(iterable)
try:
while True:
item = next(iterator)
suite
except StopIteration:
exhausted
の効果を理解するのに役立ちます。
break
または
continue
ステートメントを使用します。
注
- については
while
と
for
ステートメントを使用せず
else
節を使用する場合は、排出されるステートメントを
pass
という文を、相当するコードに追加します。
の意味を覚えるために
else
節を使用すると、ループ文は次のように解釈できます。
if loop_breaks:
pass
else:
exhausted
関連
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件
-
[解決済み] 関数デコレータを作成し、それらを連鎖させるには?
-
[解決済み] for'ループでインデックスにアクセスする?
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] Javaでネストされたループから抜け出すには?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
python call matlab メソッドの詳細
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
[解決済み】RuntimeWarning: 割り算で無効な値が発生しました。
-
[解決済み】 AttributeError: モジュール 'matplotlib' には属性 'plot' がない。
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】Python: SyntaxError: キーワードは式になり得ない
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない
-
[解決済み] なぜpythonはforやwhileループの後に'else'を使うのですか?