2015-10-02 120 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中的大多數其他對象一樣)。 –