Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन प्रोग्राम एग्ज़िट हैंडलर्स (atexit मॉड्यूल)

पायथन के स्टैंडर्ड डिस्ट्रीब्यूशन में atexit मॉड्यूल में दो फ़ंक्शन्स हैं - register() और unregister(). दोनों फ़ंक्शन्स किसी मौजूदा फ़ंक्शन को तर्क के रूप में लेते हैं। रजिस्टर्ड फ़ंक्शन्स स्वचालित रूप से तब एक्ज़ीक्यूट होते हैं जब इंटरप्रेटर सेशन सामान्य रूप से समाप्त होता है।

यदि एक से अधिक फ़ंक्शन्स रजिस्टर्ड हैं, तो उनका एक्ज़ीक्यूशन रजिस्ट्रेशन के रिवर्स ऑर्डर में होता है। इसका मतलब है, यदि फ़ंक्शन्स f1(), f2() और f3() एक के बाद एक रजिस्टर्ड हैं, तो उनका एक्ज़ीक्यूशन ऑर्डर f3(), f2() और f1() होगा।

unregister() फ़ंक्शन स्वचालित रूप से आमंत्रित किए जाने वाले फ़ंक्शन्स की सूची से निर्दिष्ट फ़ंक्शन को हटा देता है।

निम्न कोड दिखाता है कि कोड समाप्ति पर स्वचालित एक्ज़ीक्यूशन के लिए फ़ंक्शन कैसे रजिस्टर किया जाता है। (नोट: इस कोड को कमांड लाइन से चलाना होगा न कि IDLE के माध्यम से)। प्रोग्राम यूजर से क्रमिक रूप से नंबर इनपुट करने को कहता है और उन्हें जोड़ता है। जब लूप खत्म होता है, तो रजिस्टर्ड फ़ंक्शन savetotal() स्वचालित रूप से कॉल होता है ताकि जोड़ को फ़ाइल में सेव किया जा सके।

import atexit

sum = 0

def savetotal():
    fo = open("atexit.txt", "w")
    fo.write(str(sum))
    print("sum written to file")
    fo.close()

atexit.register(savetotal)

while True:
    n = int(input("enter a number. -1 to exit"))
    if n == -1:
        break
    sum = sum + n
    print(sum)

उपरोक्त कोड को atexit-example.py के रूप में सेव करें और कमांड लाइन से चलाएं। क्रमिक नंबर इनपुट जोड़े जाते हैं और कुल अंत में atexit.txt में लिखा जाता है।

C:\python36>python atexit-example.py
enter a number. -1 to exit 4
enter a number. -1 to exit 6
enter a number. -1 to exit 3
enter a number. -1 to exit 5
enter a number. -1 to exit 2
enter a number. -1 to exit -1
20
sum written to file

atexit.txt फ़ाइल करंट डायरेक्टरी में बनेगी और यह कुल (इस मामले में 20) स्टोर करेगी।

विभिन्न तर्कों के साथ फ़ंक्शन रजिस्टर करना भी संभव है। उस स्थिति में, प्रत्येक तर्क के साथ फ़ंक्शन स्वतंत्र रूप से रजिस्टर होगा और रजिस्ट्रेशन के रिवर्स ऑर्डर में एक्ज़ीक्यूट होगा।

import atexit

names = ['Ashok', 'Radha', 'Abdul', 'John']

def hello(name):
    print("Hello", name)

for name in names:
    atexit.register(hello, name)

आउटपुट:

C:\python36>python atexit-example2.py
Hello John
Hello Abdul
Hello Radha
Hello Ashok

atexit.unregister(hello) विभिन्न पैरामीटर्स के साथ hello() की सभी कॉपीज़ को फ़ंक्शन्स की सूची से हटा देगा।

डेकोरेटर सिंटैक्स

फ़ंक्शन रजिस्टर करने का एक सुविधाजनक विकल्प register() फ़ंक्शन को डेकोरेटर के रूप में उपयोग करना है।

import atexit

@atexit.register
def hello():
    print('Hello World!')

print('Say Hello')

आउटपुट

C:\python36>python atexit-example3.py
Say Hello
Hello World!

यदि प्रोग्राम अचानक समाप्त होता है या os.exit() फ़ंक्शन कॉल किया जाता है तो रजिस्टर्ड फ़ंक्शन्स स्वचालित रूप से आमंत्रित नहीं होंगे।

atexit मॉड्यूल डेटाबेस और फ़ाइलों को बंद करने, संसाधनों को मुक्त करने आदि जैसे क्लीन ऑपरेशन्स को स्वचालित रूप से करने में उपयोगी है।

  1. पायथन प्रोग्राम: क्विकसॉर्ट पायथन प्रोग्राम: क्विकसॉर्ट

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक सरणी दी गई है, हमें क्विकसॉर्ट की अवधारणा का उपयोग करके इसे क्रमबद्ध करना है। यहां हम पहले सरणी को पार्टीशन करते हैं और क्रमबद्ध सरणी प्राप्त करने के लिए अलग-अलग पार्टीशन को क्रमबद्ध करते हैं। उदाहरण # विभाजन फ़ंक्शन def pa

  1. पायथन प्रोग्राम में सिंपल इंटरेस्ट पायथन प्रोग्राम में सिंपल इंटरेस्ट

    इस लेख में, हम पायथन 3.x में सिंपल इंटरेस्ट की गणना के बारे में सीखेंगे। या इससे पहले। सिंपल इंटरेस्ट दैनिक ब्याज दर को मूल राशि से गुणा करके और भुगतान के बीच बीते दिनों की संख्या से गुणा करके गणना की जाती है। गणितीय रूप से, सिंपल इंटरेस्ट = (P x T x R) / 100 जहां, P मूल राशि है T समय है और R दर ह

  1. पायथन प्रोग्राम में सिलेक्शन सॉर्ट पायथन प्रोग्राम में सिलेक्शन सॉर्ट

    इस लेख में, हम पायथन 3.x में सिलेक्शन सॉर्ट और इसके कार्यान्वयन के बारे में सीखेंगे। या इससे पहले। सिलेक्शन सॉर्ट एल्गोरिदम में, एक ऐरे को अनसॉर्टेड पार्ट से न्यूनतम एलिमेंट को रिकर्सिवली ढूंढकर और इसे शुरुआत में इन्सर्ट करके सॉर्ट किया जाता है। दिए गए ऐरे पर सिलेक्शन सॉर्ट के निष्पादन के दौरान दो