@ পল 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")
এইভাবে ভেবে দেখুন। আপনার প্রয়োজনীয় টোকেনটি লাইব্রেরি ফাংশনের পক্ষে যুক্তি। যেহেতু টোকেনের মান কল সাইটে স্ট্যাটিকভাবে জানা যায় না, আপনি আর্গুমেন্ট হিসাবে সত্যই এটির জন্য জিজ্ঞাসা করতে পারবেন না। পরিবর্তে, কলকারীকে একটি ফাংশন সরবরাহ করতে হবে যা কল করার সময় টোকেন সরবরাহ করার জন্য দায়বদ্ধ হতে চলেছে।
টোকেনের সঠিক যান্ত্রিক সরবরাহের জন্য সমস্ত দায়বদ্ধতা এখন গ্রন্থাগারের ফাংশন থেকে বহিরাগত। ফাংশনের গ্রাহক এখন রানটাইমে যে কোনও উপায়ে উপলভ্য হয়ে টোকেন অর্জন করার জন্য দায়বদ্ধ। এটি এসটিডিনকে জিজ্ঞাসা করতে পারে, তবে এটি মেল গেটওয়ে হিসাবেও কাজ করতে পারে, বার্তাটি ইনবক্সে পপ-ইন করার জন্য অপেক্ষা করুন, এটি পড়ুন, টোকনটি বের করুন এবং প্রক্রিয়াটি সম্পূর্ণ স্বয়ংক্রিয়ভাবে সক্রিয় করতে পারেন। এটি একটি জিইউআই ডায়ালগ বা ওয়েব ভিত্তিক ফর্ম হতে পারে। সত্যিই যে কোনও কিছু - সমস্ত বিকল্প এখন গ্রন্থাগারের ভোক্তার হাতে।