2015-10-02 86 views
3

工作我想下面的简单代码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 

回答

3

sys.exitfunc在Python 3.x的does not exist

+0

是的我正在使用'Python 3.4.3'。所以这会解释行为。但是不应该对python解释器抱怨吗? –

+0

防止任意属性被添加到C中定义的*类型的对象*显然不适用于模块。应该是?有可能。 –

+0

@AniketThakur不,你只是简单地将'exitfunc'属性设置为'sys'模块,这没有什么错。你可以做'sys.blahblahblah = ',它可以工作(只要定义了一些东西:-),就像它适用于python中的大多数其他对象一样)。 –