諸事情により、外側のループを抜ける方法を探してます。
コードを簡素にして、やりたい事を下記です。
実行ではシステムエラーですが、何とか、break文通す方法は有りませんか?
python
1 2def xxx(): 3 return break 4 5for i in range(5): 6 if i==3: 7 xxx()
xxx()をbreakと書き直すと言う回答は求めていません。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答6件
0
def xxx(): return 'break' for i in range(5): if i==3: eval(xxx())
投稿2018/10/16 19:24
総合スコア34
0
... xxx()をbreakと書き直すと言う回答は求めていません。 ...
この理由、事情が知りたいです。
対応が必要な箇所がたくさんあるなら try -catch に書き換えるより, break に書きけるほうが、編集間違する可能性は低いです。
正常な実行の制御を例外を使って行うのはアンチパターンの一つです。
- 例外設計における大罪
https://www.slideshare.net/t_wada/exception-design-by-contract
page 14
...
例外を使用する• 例外は、その名が示す通り、例外的条 件に対してのみ使用するべきです。通 常の制御フローに対しては、決して使 用すべきではありません。
...
投稿2018/10/15 21:36
総合スコア22328
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
ベストアンサー
例外処理する方法。
python
1def xxx(): 2 raise StopIteration 3 4try: 5 for i in range(5): 6 print(i) 7 if i==3: 8 xxx() 9except StopIteration: 10 pass 11
投稿2018/10/14 14:53
総合スコア30939
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
Python詳しくないですが、例外処理をしないならば、関数分割の性質上できるはずないです。下請け関数の中で呼び出し側に影響を与えるならば設計が怪しいものになります。
戻り値を判定してbreakするならわかりますが。
投稿2018/10/14 14:32
総合スコア4853
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
Python
1For example:: 2 3 from greenlet import greenlet 4 5 def test1(): 6 print(12) 7 gr2.switch() 8 print(34) 9 10 def test2(): 11 print(56) 12 gr1.switch() 13 print(78) 14 15 gr1 = greenlet(test1) 16 gr2 = greenlet(test2) 17 gr1.switch()
投稿2018/10/14 14:26
編集2018/10/14 14:38総合スコア5739
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。