Оператор 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 не делал ничего такого странного раньше, что случилось?



Вот визуализация. Код в Редакторе



Введите описание изображения здесь



Результат после запуска кода в Редакторе отображается в консоли



Введите описание изображения здесь

562   2  

2 ответов:

Предполагая, что недостающие выходные данные строк 116-118-это то, что вас расстраивает:

Редактор обрабатывает ваш код как обычный скрипт python, что означает, что операторы ala test() не печатают свой результат.

То, что вы получаете результат чего-то, отображаемого немедленно, является специальной функцией консоли 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 есть различные модели оценки:

  1. Run file, что эквивалентно python my_file.py.
  2. Run line и Run cell, которые копируют содержимое строки или ячейки в консоль IPython и запускают ее там. Эта модель не требует добавления print в ваш код.

Comments

    Ничего не найдено.