Оператор Return на Python, похоже, не работает (на Spyder)
Я уже некоторое время использую Python, и у меня не было проблем с IDE, которую я использовал (я использовал WingIDE, теперь я использую Spyder).
Но когда я начал тестировать некоторый код, который я набрал в Редакторе, сегодня, оператор return, кажется, не работает. Затем я написал еще более простые тесты, которые видят, что делает return, и обнаружил, что другие функции также не работают должным образом.
Например для функции,
def test():
return 2
'''the code below is written in the editor'''
test()
print(type(test()))
print(test())
После выполнения кода на редактор.
test() возвращает 'nothing' (но на самом деле это не 'nothing / None/blank space')
type(test()) возвращает 'nothing' (но на самом деле это не 'nothing / None/blank space')
print(type(test()) выводит 'class' int ''
print(test()) отпечатки 2
Но когда я набираю
test() на консоли, он возвращает 2, а когда я набираю type(test()) на консоли, он возвращает class: int.Обратите внимание, что те же результаты появляются до и после обновления Spyder. А ранее код в Редакторе функционирует так же, как и код в консоли, так как при вводе
test() в Редакторе возвращалось бы 2, Когда я запускаю код в Редакторе.Python / Spyder не делал ничего такого странного раньше, что случилось?
Вот визуализация. Код в Редакторе
Результат после запуска кода в Редакторе отображается в консоли
2 ответов:
Предполагая, что недостающие выходные данные строк 116-118-это то, что вас расстраивает:
Редактор обрабатывает ваш код как обычный скрипт python, что означает, что операторы alatest()не печатают свой результат.То, что вы получаете результат чего-то, отображаемого немедленно, является специальной функцией консоли python, а не нормальным поведением python.
Чтобы на самом деле напечатать результат, вы должны вызвать
print(test()), Как вы сделали в строке 119-120
Обновление: после некоторого тестирования в PyCharm У меня получилось следующее поведение:
Копирование и вставка в консоль python:
def test(): return 2 test() >>press enterДействительно приводит к пустому выходу, но это:
def test(): return 2 >>press enter test() >>press enterПечатает
2, как и ожидалось. Таким образом, мой вывод заключается в том, что Spyder, возможно, не отображает возвращаемое значение, потому что он выполнял сценарий с несколькими командами вместо одной операции.
Чтобы расширить ответ Фабиана N., у Spyder есть различные модели оценки:
Run file, что эквивалентноpython my_file.py.Run lineиRun cell, которые копируют содержимое строки или ячейки в консоль IPython и запускают ее там. Эта модель не требует добавления


Comments