Ти щойно поставив Python 3.12, але команда python3 --version уперто показує 3.9. Що найімовірніше сталося?
Чому так. Оболонка не шукає «найновіший» Python — вона проходить теки зі списку PATH по черзі й запускає перший знайдений. Стара версія просто стоїть вище. Перевстановлення тут не допоможе: файли на місці, справа в порядку тек. Це рівно та ситуація, яку показує інтерактив «Куди дивиться оболонка».
Питання 2 / 7
Файл hello.py лежить у теці ~/projects. Термінал стоїть у ~/Downloads. Яка команда запустить файл, не змінюючи поточну теку?
Чому так. Відносний шлях рахується від поточної теки, тому спершу треба піднятися на рівень вище (..), а вже потім зайти в projects. Варіант projects/hello.py шукав би теку projects всередині Downloads — її там немає. А python3 hello.py дав би «canʼt open file» зі шляхом ~/Downloads/hello.py у повідомленні.
Питання 3 / 7
У файлі demo.py рівно два рядки: спершу «2 + 2», потім «print("готово")». Що з'явиться в терміналі після python3 demo.py?
Чому так. Вираз 2 + 2 у файлі обчислюється, але результат нікуди не йде: автоматично друкує значення тільки REPL. Файл мовчить, поки його не попросили print. Саме ця відмінність між режимами single і exec і показана в інтерактиві «REPL проти файлу».
Питання 4 / 7
У файлі десять рядків. Перший — коректний print, а в десятому забули закрити дужку. Що побачить читач після запуску?
Чому так. Граматику Python перевіряє для всього файлу до початку виконання. Не пройшов перевірку — не виконався жоден рядок. Порівняй із NameError: він виявляється вже під час роботи, тому рядки до нього встигають спрацювати. Побічна ознака: у SyntaxError немає шапки «Traceback (most recent call last)».
Питання 5 / 7
У REPL ти написав ім'я змінної й побачив 'Оля' — з лапками. А print(imya) показав Оля без лапок. Чому?
Чому так.repr показує запис, за яким обʼєкт можна відтворити в коді — для рядка це текст у лапках. print використовує str, тобто представлення для людини. Перевірити просто: len(repr("Оля")) дорівнює 5, а len("Оля") — 3. Лапки справді додані REPL, а не збережені у значенні. Число REPL покаже без жодних прикрас, бо для нього repr і str збігаються.
Питання 6 / 7
Чому досвідчені радять писати python3 -m pip install X замість короткого pip install X?
Чому так. У системі зазвичай кілька Python, а отже кілька команд pip, і гола команда бере ту, що трапиться першою в PATH. Звідси класична загадка «я ж встановив пакет, а імпорт не працює»: пакет ліг в один інтерпретатор, а код запускається іншим. Форма -m привʼязує pip до конкретного інтерпретатора й знімає питання.
Питання 7 / 7
Дві помилки виглядають схоже. Перша: «command not found: python3». Друга: «python3: can't open file ...». У чому принципова різниця?
Чому так. Перша помилка йде від оболонки: вона пройшла теки з PATH і не знайшла програми з такою назвою. Друга — від самого Python: він запустився й доповідає, що файлу за вказаною адресою немає (адреса надрукована прямо в повідомленні — читай її). Різні винуватці — різні ліки: у першому випадку лагодять PATH, у другому роблять cd і ls.