Jawaban oleh @ Paul92 adalah diskusi umum yang baik, tetapi saya ingin menawarkan solusi bersih (ish) untuk ini:
Pustaka, kode ini harus dapat beradaptasi dengan lingkungan runtime, jadi Anda tidak bisa benar-benar meminta STDIN
sedikit data penting. Untuk satu, pengguna perpustakaan Anda mungkin tidak memiliki stdin tersedia karena sejumlah alasan. Alih-alih, Anda mungkin ingin menggunakan beberapa bentuk pola strategi untuk menyesuaikan cara token diambil.
Dalam Python, mungkin opsi terbaik adalah meneruskan strategi pengambilan token sebagai parameter fungsi. Sesuatu seperti itu:
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")
Pikirkan seperti ini. Token yang Anda butuhkan, adalah argumen untuk fungsi perpustakaan. Karena nilai token mungkin tidak dikenal secara statis di situs panggilan, Anda tidak dapat benar-benar meminta nilai sebagai argumen. Sebaliknya, penelepon harus menyediakan fungsi yang akan bertanggung jawab untuk menyediakan token saat dipanggil.
Semua tanggung jawab untuk menyediakan mekanisme yang tepat dari token sekarang dieksternalisasi dari fungsi perpustakaan. Konsumen fungsi sekarang bertanggung jawab untuk memperoleh token dengan cara apa pun yang tersedia saat runtime. Mungkin bertanya STDIN, tetapi mungkin juga bertindak sebagai gateway email, menunggu pesan masuk ke kotak masuk, membacanya, mengekstrak token dan sepenuhnya mengotomatiskan proses. Mungkin dialog GUI atau formulir berbasis web. Apa pun yang benar - semua opsi kini ada di tangan konsumen perpustakaan.