Pythonのgoto文の使い方を現役エンジニアが解説【初心者向け】

初心者向けにPythonのgoto文の使い方について現役エンジニアが解説しています。goto文はFORTRANのコードで多用された処理方法で、プログラムのソースコードの好きな場所に移動することが出来ます。しかしソースコードが読みにくくなるために使用するのは控えたほうが良いです。

TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。

Pythonのgoto文の使い方について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して、初心者向けに解説します。

 

Pythonについてそもそもよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、Python講座の内容をもとに紹介しています。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Pythonのgoto文の使い方について詳しく説明していくね!

大石ゆかり

お願いします!

 

goto文とは

goto文は古くはFORTRANのコードで多用された手法です。

そのため、数学や物理学の分野でシミュレーションを作成した方にはなじみ深い手法であるといえます。その一方、Web系のプログラミング言語を用いている方々には馴染みが薄い言語かもしれません。

使用された理由は”どこでもドア”のように行きたいところに飛べるため、コードを一人で書いていく分には非常に使い勝手の良い構文でした。その一方、他の人が見た場合にはコードが様々なところに飛んでいくため、非常に読みにくくなってしまうといった欠点があります。そのため、現在では多くの言語でgoto文自体を扱うことができないようになっています。

ではなぜPythonで使えるのかというと、goto for Pythonで紹介されているようにApril Foolの冗談としてmoduleが作成されました。そのため、積極的に使っていきましょうではなく、どうやってgoto文をアップデートしていけばいいかの参考として使用していくことをお勧めいたします。
 

実際に書いてみよう

Pythonのgoto文の使い方例1

from goto import goto, label
for i in range(3, 10):
    for j in range(1, 20):
        print (i, j)
        if j == 3:
            goto .end
label .end
print ("Done")

 

解説

このコードではj==3になるとループ文を抜けて、Doneと表示されプログラムが終了します。

この結果と同じ状態を得るには以下のように書けます。

for i in range(3, 10):
    for j in range(1, 10):
        print(i, j)
        if j == 3:
            break
    if j == 3:
        break
print("Done")

Pythonのgoto文の使い方例2

from goto import goto, label
label .start
for i in range(1, 4):
   if i == 2:
      try:
         output = typeName
                     label .end
      except NameError:
         print ("Please define the typeName!  Start again.")
         typeName = "PRIUS"
         goto .start
label .end
print (output)

 

解説

このコードはi==2の時に条件分岐をし、try/except方法を用いて変数outputにtypeNameを設定してループを抜けます。

NameErrorが発生した場合には”Please define the typeName! Start again.”を表示、typeNameを設定、iを0として再度ループを走らせます。

goto文を使わずに書くと以下のようになります。
 

[PR] Pythonで挫折しない学習方法を動画で公開中

goto文を利用する際の注意点

先述したとおり、goto文の使用は推奨されていません。その一方、古いコードをアップデートしようとした際には多用されている可能性があります。

しかし例2で示したように様々な行数に飛んでいきます。これは大人数の人がプログラムを書いていく上で非常に読みにくくなります。

そのため、Python等の比較的新しい言語ではcontinue/breakを使った書き方が一般的です。
“どこでもドア”を使わないようにするというのは、プログラミングを専門としない方々にはなかなかの苦痛かもしれません。しかし、今後様々な人が共通の認識を持つことができるシンプルなコードを書くためにも使わないで書けるようになっていく必要があります。
 

まとめ

goto文は、慣れてない人にとっては非常に読みにくいです。慣れている人にとってはいい頭の体操になったのではないでしょうか?

しかし、goto文を使わなくても同様の結果を得られますので、使わなくても書けるようになることをおすすめします。
 

監修してくれたメンター

メンターkatoさん

学生時代に数値解析のためにプログラミングを始める。現在は企業にて専門職として働くかたわら、プログラムを書き業務効率化を図っている。

現在のメイン言語はPython, JavaScript。また、企業内の希望者にPythonのメンターとして基礎から教えている。テックアカデミーではJavaScriptを教える。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも、Pythonを使った人工知能(AI)や機械学習の基礎を習得できる、オンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。