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

язык python 3

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

Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 21:26:53) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> bottles = 99
>>> base = ''
>>> base = base + 'current inventory: '
>>> base = base + str(bottles)
>>> print(base)
current inventory: 99
>>> bottles = 99
>>> base = ''
>>> base += 'current inventory: '
>>> base += str(bottles)
>>> base
'current inventory: 99'
>>> 

Ответы (2 шт):

Автор решения: n1tr0xs

Вызывая функцию print вы говорите вывести значение переменной base.
Если вы просто пишите base - интерпретатор Python показывает вам содержимое переменной, т.е. делает так, чтобы перед выводом вы подставили (к примеру) base1 = и у вас создалась переменная base1 с тем же самым значением.

→ Ссылка
Автор решения: CrazyElf

Фактически, происходит примерно следующее:

text = 'hello world'
print(str(text))
print(repr(text))

Вывод:

hello world
'hello world'

При печати объекта на нём вызывается str и результат выводится на печать. При этом печатается просто содержимое объекта, сами внешние кавычки в строке не содержатся и они не печатаются.

А вот при выводе объекта в интерактивной среде на самом деле вызывается метод repr и вот он то и добавляет кавычки к выводу, чтобы внести ясность, что показываемый объект - это строка.

→ Ссылка