Я пытаюсь выполнить следующий простой кодне sys.exitfunc работает в питона
import sys
print("Starting Test Python Module");
def testmethod():
print("From test method")
sys.exitfunc = testmethod
print("Terminating Test Python Module");
и печатает
C:\Users\athakur\Softwares>python test.py
Starting Test Python Module
Terminating Test Python Module
Я не могу понять, почему он не печатает «От метода испытаний "
Использование atexit работает отлично, хотя
import atexit
print("Starting Test Python Module");
def testmethod():
print("From test method")
atexit.register(testmethod)
print("Terminating Test Python Module");
Выходы
C:\Users\athakur\Softwares>python test.py
Starting Test Python Module
Terminating Test Python Module
From test method
Да, я использую 'Python 3.4.3'. Таким образом, это объясняет поведение. Но не следует ли жаловаться на интерпретатор python? –
Защита от произвольных атрибутов, добавляемых к объектам * типов *, определенных в C, по-видимому, не распространяется на модули. Должно ли это? Возможно. –
@AniketThakur Нет, вы просто устанавливаете атрибут 'exitfunc' для' sys' модуля, в этом нет ничего плохого. Вы можете сделать 'sys.blahblahblah =', и он будет работать (пока что-то определено :-), как и для большинства других объектов в python). –