bitti Python 2'nin girişini kullanmak için hiç kullanışlı mı Ham girdi?
sayılı
input()
kullanıcı verir kod değerlendirir. Python'un tam gücünü kullanıcının elinde tutar. Jeneratör ifadeleri/liste anlamaları, __import__
ve if/else
operatörleriyle, Python'un yapabileceği her şey tek bir ifade ile elde edilebilir. Kötü niyetli kullanıcılar dosyaları kaldırmak için (__import__('os').remove('precious_file')
), programın geri kalanını (setattr(__import__('__main__'), 'function', lambda:42)
), ... bir şey için input()
kullanabilir.
Normal bir kullanıcının tüm gelişmiş işlevleri kullanması gerekmez. İfadeye ihtiyacınız yoksa, ast.literal_eval(raw_input())
kullanın - literal_eval
işlevi güvenlidir.
İleri düzey kullanıcılar için yazıyorsanız, onlara kod girmenin daha iyi bir yolunu verin. Eklentiler, kullanıcı modülleri, vb - sadece işlevsellik değil, tam Python sözdizimi olan bir şey.
Ne yaptığınızı bildiğinizden kesinlikle eminseniz, eval(raw_input())
deyin. eval
"Tehlikeli!" Diye bağırıyor. eğitimli göze. Ancak, olasılıklara hiç ihtiyacınız olmayacak.
input()
Python 3 çözme eski tasarım hatalarından biriydi.
Code-Golf –
için kullanışlıdır “Neden” cevabını vermek için - Python'un ilk REPL'si 1 iken: 1: print input() '. Eski zamanlarda bahse girerim, iyi programlama pratiklerini desteklemek Python'un şu anki öncelikler listesinde olduğu kadar yüksek değildi. Python 3'ün True: print (eval (input())) 'bile daha kafa karıştırıcı gibi görünebilir - tüm bu iç içe parantezler! –