Jupyter lab: почему переменная в одной строке не генерирует выходные данные?

#python #python-3.x #jupyter #jupyter-lab

#python #python-3.x #jupyter #jupyter-lab

Вопрос:

Я следую руководству о Jupyter и Python, где говорится, что если две последовательные команды следующие:

 in: x = 2
in: x
  

Я должен получить

 out: 2
  

в результате. Однако x в одной строке в объединенном блоке, подобном:

 in: x = 2
in: if x == 2:
       x
  

не выводит переменную x. Это x в одной строке несколько отличается от x как отдельной команды? Когда я пишу это, я вижу, что строка отличается как целая команда, но какова основная концепция или вещь, которая приводит к тому, что первые две команды дают результат 2, а вторые три команды — ничего?

Ответ №1:

Это связано с разницей между выражением и оператором (ссылки см. Ниже) в python.

Выражение может содержать только идентификаторы, литералы и операторы.

Инструкции могут быть значительно более сложными. Смотрите Простые операторы и составные операторы

Оболочка python выведет оценку выражения, но не с помощью инструкции, потому что нет гарантии, что она вычисляет что-то, что может быть выведено. Вы должны использовать print для вывода значений из инструкции.

Подумайте, что произойдет, если вы замените x ее значение ( 2 ):

 if 2 == 2:
    2
  

Ожидаете ли вы, что интерпретатор будет выводить 2 ?

Ответ №2:

Когда вы записываете переменную в строку и выполняете ее, jupyter notebook предполагает, что вы хотите узнать значение переменной, и неявно преобразует его в print (переменная), чтобы значение переменной было напечатано.

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