Следующий код записывается в файл morph.py:Возможно ли код самофиксации на Python?
with open("morph.py", "r+") as f:
old = f.read() # read everything in the file
f.seek(0,2) # rewind
f.write("1") # write the new line before
a="BAD"
a1="Worked"
print a
Идея заключается в том, что файл morph.py будет переписан, и текст «Работали» будет напечатано.
Это не тот случай, я думаю, что это связано с тем, как интерпретатор Python загружает файлы. Единственное, что имеет смысл, это то, что весь файл загружен, а затем запускается.
Может ли кто-нибудь пролить свет? Возможно ли даже иметь собственный морфинг-код в python?
Частично связанный с этим вопрос: Self decompressing and executing code in python
'f.seek (-0,2)' - отрицательный ноль ??? – selbie
Я проголосовал за закрытие простой типографской ошибки: ['os.SEEK_SET == 0'] (https://docs.python.org/3/library/os.html#os.lseek), а не' 2'. Просто используйте предопределенные константы вместо магического числа. (См. Также: ['imp.reload'] (https://docs.python.org/3/library/imp.html#imp.reload)) – kay
Функция поиска выполняет то, что я ожидаю от нее. Если я запускаю код во второй раз, он выводит «Работал». Как Python запускает файлы? Загружает ли он весь файл в памяти? Это кажется немного бессмысленным, так как может быть множество операторов if, которые никогда не будут запущены. –