Python'da belirli bir kod satırına atlayabilmek için bir goto
veya eşdeğeri var mı?
Python size birinci sınıf fonksiyonları kullanarak bir goto ile yapabileceğiniz bazı şeyleri yapma olanağı sunar. Örneğin:
void somefunc(int a)
{
if (a == 1)
goto label1;
if (a == 2)
goto label2;
label1:
...
label2:
...
}
Python'da şu şekilde yapılabilir:
def func1():
...
def func2():
...
funcmap = {1 : func1, 2 : func2}
def somefunc(a):
funcmap[a]() #Ugly! But it works.
Kabul etmek gerekir ki, bu goto'nun yerine geçmenin en iyi yolu değildir. Ancak goto ile tam olarak ne yapmaya çalıştığınızı bilmeden, spesifik bir tavsiye vermek zordur.
@ascobol:
Yapabileceğiniz en iyi şey, bunu bir fonksiyon içine almak veya bir istisna kullanmaktır. Fonksiyon için:
def loopfunc():
while 1:
while 1:
if condition:
return
İstisna için:
try:
while 1:
while 1:
raise BreakoutException #Not a real exception, invent your own
except BreakoutException:
pass
Başka bir programlama dilinden geliyorsanız, bu gibi şeyleri yapmak için istisnaları kullanmak biraz garip gelebilir. Ancak istisnaları kullanmaktan hoşlanmıyorsanız, Python'un sizin için uygun bir dil olmadığını iddia ediyorum :-)
@ascobol'un sorusunu][1] yorumlardan
@bobince`'nin önerisini kullanarak yanıtlamak:
for i in range(5000):
for j in range(3000):
if should_terminate_the_loop:
break
else:
continue # no break encountered
break
elsebloğu için girinti doğrudur. Kod, bir döngü Python sözdiziminden sonra belirsiz
else` kullanır. Bakınız Python for ve while döngülerinden sonra neden 'else' kullanır?