@ Paul92 tarafından verilen cevap genel bir tartışmadır, ancak bunun için olası bir temiz ( çözüm ) çözüm önermek istiyorum :
Bir kitaplık, bu kodun herhangi bir çalışma zamanı ortamına uyarlanabilir olması gerekir, bu nedenle gerçekten STDIN
çok önemli bir veri biti isteyemezsiniz . Birincisi, kütüphanenizin kullanıcılarının bir takım sebeplerden dolayı kullanmaları mümkün olmayabilir. Bunun yerine , belirtecin nasıl alınacağını özelleştirmek için bir çeşit strateji deseni kullanmak isteyebilirsiniz .
Python'da, muhtemelen en iyi seçenek, işlev belirteç olarak belirteç alma stratejisine geçmektir. Bunun gibi bir şey:
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")
Böyle düşün. İstediğiniz belirteç, kütüphane işlevinin bir argümanıdır. Belirteç değeri, arama sitesinde statik olarak bilinmediğinden, değeri argüman olarak isteyemezsiniz. Bunun yerine, arayan kişi arandığında belirteci sağlamaktan sorumlu olacak bir işlev sağlamalıdır.
Belirtecin tam mekaniğini sağlamadaki tüm sorumluluk şimdi kütüphane işlevinden dışlanmıştır. Fonksiyonun tüketicisi şimdi belirteci çalışma zamanında mevcut olan herhangi bir yöntemle elde etmekten sorumludur. STDIN'e sorabilir, ancak bir posta ağ geçidi olarak da hareket edebilir, mesajın gelen kutusuna gelmesini bekleyebilir, okuyabilir, belirteci çıkarabilir ve işlemi tamamen otomatikleştirebilirsiniz. Bir GUI iletişim kutusu veya web tabanlı bir form olabilir. Gerçekten her şey - tüm seçenekler şimdi kütüphane tüketicisinin elinde.