Технически, термин «переменная» является неправильным в Python. В Python все является объектом - когда вы присваиваете «переменную», вы действительно назначаете имя , которое ссылается на объект после знака =
.
В вашем случае File
является ссылкой на имя объекта, созданного open("File.txt", 'w')
. Вы говорите интерпретатору Python, что всякий раз, когда вы ссылаетесь на File
в своем коде, вы хотите получить доступ к объекту файла, заблокированному в режиме записи. Затем, когда вы переназначаете имя File
на буквальную строку "File"
, вы просто сообщаете своему Python интерпретатору, что когда вы ссылаетесь на File
, вы ищете "File"
вместо созданного объекта файла.
Поскольку вы переназначили ссылку на объект, но не сохранили ссылку на исходный объект, она больше не доступна и может в конечном итоге быть собрана сборщиком мусора и уничтожена, если интерпретатор посчитает, что это требуется больше ресурсов, и этот объект больше не требуется.
В этом случае, однако, более вероятно, что файловый объект будет заблокирован в режиме записи и останется открытым до тех пор, пока сценарий не будет полностью завершен, оставив вам пустой файл в конце.