Python の goto 関数の使い方は?
Pythonでは構造化プログラミングの原則に反するので、goto関数が備わっていません。構造化プログラミングでは、gotoなどの無条件ジャンプ文の使用をできる限り避けます。
goto文をPythonで本当にシミュレートする必要がある場合は、ラベルとgotoという2つの関数を使うと実現できます。以下に簡単な例を示します。
class Label:
def __init__(self, name):
self.name = name
self.target = None
def __call__(self):
if self.target:
self.target()
def set_target(self, target):
self.target = target
def goto(label):
label()
# 使用示例
def main():
start = Label('start')
loop = Label('loop')
end = Label('end')
i = 0
start()
i += 1
print(i)
if i < 5:
loop()
i += 1
print(i)
goto(start)
else:
end()
print('Done')
if __name__ == '__main__':
main()
上述のサンプルで定義したLabelクラスは、ラベルを表し、インスタンスを呼び出すとジャンプできます。goto関数はLabelインスタンスを引数にとり、インスタンスを呼び出すことで、対応する位置にジャンプします。
goto関数とラベルクラスを使用してgoto文をエミュレートするのは良い習慣ではないことに注意してください。ほとんどの場合、構造化プログラミング手法を使用してgoto文の代わりに使用できます。