#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 (переменная), чтобы значение переменной было напечатано.
При использовании нескольких операторов вам редко захочется печатать все переменные, используемые в операторах. Таким образом, это не реализовано для этого случая