Возврат значения функции не работает в течение нескольких итераций через цикл for

#python #return

#python #Возврат

Вопрос:

Я определил следующую функцию:

 def test():
    return 1
  

И как только я наберу следующее в консоли:

 test()
  

Я получаю ожидаемое возвращаемое значение 1. Но я хочу, чтобы значение 1 возвращалось дважды, поэтому я ввожу это в консоль:

 values = [1,2]
for i in values:
    test()
  

Но вместо этого я не получаю никаких выходных данных сейчас. Почему он не выдает никаких выходных данных и как я мог бы отредактировать его, чтобы это было так?

Комментарии:

1. print(test()) ? Если вы работаете в REPL, подобном интерпретатору, выходные данные отображаются только для выражений или явных print выражений.

2. В первом случае REPL выводит возвращаемое значение 1, во втором случае блок кода ничего не возвращает и, следовательно, ничего не печатается

Ответ №1:

Прежде всего, вы должны исправить свой цикл for . Если вы хотите указать, сколько раз должен выполняться цикл for, вам следует использовать функцию range() .

 for x in range(2):
    test()
  

и, во-вторых, возвращаемое значение не выводит значения, если вы его не распечатаете, т.е print(test())

Ответ №2:

На самом деле, вам нужно распечатать возвращаемое значение, чтобы отобразить его в консоли. Попробуйте это:

 values = [1, 2]
for i in values:
    print(test())
  

Вы можете спросить, почему это сработало в первом случае. У меня нет точного ответа, но я могу дать вам подсказку. Возвращаемое значение «последней строки кода» автоматически печатается. Это неправильное / хорошее объяснение. Возможно, кто-то еще может помочь с этим.

Кстати, вот лучший способ написания вышеупомянутого фрагмента кода:

 for i in range(2):
    print(test())
  

Ответ №3:

Я не знаю, почему у вас это не работает, но когда я запускаю этот код на своем компьютере, все в порядке

 def test():
    return 1

print("First case:")
print(test())

print("Second case:")
list = [1,2]
for i in list:
    print(test())  
  

ВЫВОД:

 First case:
1
Second case:
1
1
  

Ответ №4:

просто поместите print в test() внутри цикла for, как показано ниже

 for i in values:
    print(test())
  

Теперь вывод будет:

    1
   1

  

Ответ №5:

Как указывают другие ответы, выполнение print внутри цикла выведет значение. Тонкость, о которой никто больше не упоминал, заключается в том, что причина, по которой цикл for не работает сам по себе, заключается в том, что for не возвращает значение. Выражения внутри цикла вычисляются, но их значения отбрасываются.

Если вы хотите выполнить цикл, который возвращает значение выражений внутри него (чтобы вы могли видеть эти значения в интерпретаторе без необходимости их распечатывать или делать что-то еще с этими значениями в следующей части вашей программы), просмотр списка — хороший способ:

 >>> def test():
...     return 1
...
>>> values = [1,2]
>>> [test() for i in values]
[1, 1]