Эквивалент GOTO в условиях Python - PullRequest
5 голосов
/ 14 декабря 2010

Поскольку в Python нет оператора goto, какой метод можно использовать вместо этого?

Состояние Если это правда, перейти к потоку 1, если ложь, перейти к потоку 2 В потоке мы делаем что-то маленькое и после этого переходим в поток 2, где выполняются все остальные действия.

Ответы [ 5 ]

14 голосов
/ 14 декабря 2010

Поскольку в Python нет оператора goto, какой метод можно использовать вместо этого?

Создание кода логически и семантически.

if condition:
    perform_some_action()

perform_other_actions()
6 голосов
/ 14 декабря 2010
def thread_1():
  # Do thread_1 type stuff here.

def thread_2():
  # Do thread_2 type stuff here.

if condition:
    thread_1()

# If condition was false, just run thread_2(). 
# If it was true then thread_1() will return to this point.
thread_2()

edit: я предполагаю, что под «потоком» вы подразумеваете кусок кода (иначе называемый подпрограммой или функцией). Если вы говорите о потоках, как при параллельном выполнении, вам понадобится больше деталей в этом вопросе.

5 голосов
/ 14 декабря 2010

Насколько мне известно, его нет (к счастью), но вы должны проверить эту ссылку

Модуль "goto" был первоапрельской шуткой, опубликованной на1 апреля 2004 года. Да, это работает, но, тем не менее, это шутка.Пожалуйста, не используйте его в реальном коде!

2 голосов
/ 14 декабря 2010

Python разработан для поддержки хороших методов кодирования , и GOTO не является одним из них. Это может привести к нечитаемой логике программы, если она не используется должным образом.

Я предлагаю изучать код вашей программы Python , не придерживаться (иногда вредных) привычек других языков программирования. Смотрите документацию по Python, настоящие зрелые программы на Python и изучайте.

0 голосов
/ 24 октября 2017
def thread1():
    #write your thread 1 code here

    print("entered no is 1")

def thread2():
    #write your thread 2 code here
    print("Number is greater or less then one.")

def main():
   a=input()
   if a==1:
   thread1()
   elif a<=1 or a>=1:
   thread2()
    #you can use recursion here in case if you want to use agin and again
    #if you want to print serveral time you can use looping.
    for i in range(4):
        main()
    #if you want to run goto forever and ever and ever then remove loop in 
    #this code.

#this code will enable you the equivalent of goto statement.

Это то, что я использую каждый раз в Python 3.x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...