@ पॉल92 का उत्तर अच्छी सामान्य चर्चा है, लेकिन मैं इसके लिए एक संभावित स्वच्छ (ईश) समाधान प्रस्तुत करना चाहता हूं :
एक पुस्तकालय, इस कोड को किसी भी रनटाइम वातावरण के अनुकूल होने की आवश्यकता है, इसलिए आप वास्तव में STDIN
कुछ महत्वपूर्ण डेटा के लिए नहीं पूछ सकते हैं । एक के लिए, आपके पुस्तकालय के उपयोगकर्ताओं को कई कारणों से स्टडिन उपलब्ध नहीं हो सकता है। इसके बजाय आप यह सुनिश्चित करने के लिए कि कैसे टोकन पुनर्प्राप्त किया जाना है, को अनुकूलित करने के लिए रणनीति पैटर्न के कुछ रूप का उपयोग करना चाह सकते हैं ।
पायथन में, संभवतः सबसे अच्छा विकल्प एक फ़ंक्शन पैरामीटर के रूप में टोकन प्राप्त करने की रणनीति को पारित करना है। ऐसा कुछ:
def stdin_prompt():
return input("Enter code: ")
def my_library_function(arg1, arg2, ... argn, token_provider = stdin_prompt):
...
token = token_provider()
...
return stuff
# somewhere in the user code
stuff = my_library_function(a1, a2, ... an, lambda: "123456")
इसके बारे में इस तरह से सोचें। आपको जिस टोकन की आवश्यकता है, वह लाइब्रेरी फ़ंक्शन का एक तर्क है। चूंकि टोकन के लिए मूल्य कॉल साइट पर सांख्यिकीय रूप से ज्ञात नहीं हो सकता है, आप वास्तव में तर्क के रूप में मूल्य नहीं पूछ सकते हैं। इसके बजाय, कॉल करने वाले को एक फ़ंक्शन प्रदान करना होगा जो कॉल करने पर टोकन प्रदान करने के लिए जिम्मेदार होगा।
टोकन के सटीक यांत्रिकी प्रदान करने के लिए सभी जिम्मेदारी अब पुस्तकालय समारोह से बाहर की जाती है। फ़ंक्शन का उपभोक्ता अब रनटाइम पर जो भी साधन उपलब्ध है, उसके द्वारा टोकन प्राप्त करने के लिए जिम्मेदार है। यह STDIN से पूछ सकता है, लेकिन यह एक मेल गेटवे के रूप में भी काम कर सकता है, संदेश को इनबॉक्स में पॉप करने के लिए प्रतीक्षा करें, इसे पढ़ें, टोकन निकालें और प्रक्रिया को पूरी तरह से स्वचालित करें। यह एक GUI संवाद या एक वेब आधारित रूप हो सकता है। कुछ भी वास्तव में - सभी विकल्प अब पुस्तकालय उपभोक्ता के हाथों में हैं।