Итак, в качестве шутки я написал версию goto для python, которую я хотел использовать в качестве библиотеки. Функция, которую я написал для нее, выглядит следующим образом.Есть ли версия __file__, которая при использовании в функции получит имя файла, который использует библиотеку?
def goto(loc):
exec(open(__file__).read().split("# "+str(loc))[1],globals())
quit()
Это работает в случаях, когда он находится в файле, где используется Гото, например, как это:
def goto(loc):
exec(open(__file__).read().split("# "+str(loc))[1],globals())
quit()
# hi
print("test")
goto("hi")
Однако, если я импортировать Гото в другой файл, он не работает, как
__file__
всегда будет возвращать файл с функцией в нем, а не с той, в которой он используется. Есть ли эквивалент файла, который позволит мне импортировать файл с функцией goto в нем и заставить его работать?
Не удалось побеспокоить ответ, но да - вам нужно копаться в стеке вызовов , начните искать в 'inspect.currentframe(). f_back' – wim