TL; DR
inputฟังก์ชั่นใน Python 2.7 ประเมินสิ่งที่คุณป้อนเป็นนิพจน์ Python หากคุณต้องการอ่านสตริงให้ใช้raw_inputฟังก์ชันใน Python 2.7 ซึ่งจะไม่ประเมินค่าสตริงการอ่าน
หากคุณกำลังใช้งูหลาม 3.x, ได้รับการเปลี่ยนชื่อเป็นraw_input inputอ้างบันทึกประจำรุ่น Python 3.0 ,
  raw_input()input()เปลี่ยนชื่อเป็น นั่นคือinput()ฟังก์ชั่นใหม่จะอ่านบรรทัดจากsys.stdinและส่งคืนโดยการขึ้นบรรทัดใหม่ที่ต่อท้าย มันจะเพิ่มEOFErrorถ้าอินพุตถูกยกเลิกก่อนกำหนด เพื่อรับพฤติกรรมเก่าของinput()ใช้eval(input())
ใน Python 2.7มีสองฟังก์ชันที่สามารถใช้เพื่อรับอินพุตของผู้ใช้ได้ หนึ่งคือและอีกคนหนึ่งคือinput raw_inputคุณสามารถคิดถึงความสัมพันธ์ระหว่างพวกเขาได้ดังนี้
input = eval(raw_input)
พิจารณาโค้ดต่อไปนี้เพื่อทำความเข้าใจกับสิ่งที่ดีกว่านี้
>>> dude = "thefourtheye"
>>> input_variable = input("Enter your name: ")
Enter your name: dude
>>> input_variable
'thefourtheye'
inputยอมรับสตริงจากผู้ใช้และประเมินสตริงในบริบท Python ปัจจุบัน เมื่อฉันพิมพ์dudeเป็น input ก็พบว่าdudeถูกผูกไว้กับค่าthefourtheyeและเพื่อให้ผลการประเมินจะกลายเป็นและที่ได้รับมอบหมายให้thefourtheyeinput_variable
NameErrorถ้าผมใส่อย่างอื่นซึ่งไม่ได้มีในบริบทหลามปัจจุบันก็จะล้มเหลวจะเป็น
>>> input("Enter your name: ")
Enter your name: dummy
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "<string>", line 1, in <module>
NameError: name 'dummy' is not defined
ข้อควรพิจารณาด้านความปลอดภัยด้วย Python 2.7's input:
เนื่องจากผู้ใช้ประเภทใดก็ตามที่ได้รับการประเมินจึงมีปัญหาด้านความปลอดภัยเช่นกัน ตัวอย่างเช่นถ้าคุณโหลดosโมดูลในโปรแกรมของคุณimport osแล้วจากนั้นผู้ใช้พิมพ์
os.remove("/etc/hosts")
สิ่งนี้จะถูกประเมินเป็นการแสดงออกของการเรียกใช้ฟังก์ชันโดย python และจะถูกดำเนินการ หากคุณกำลังดำเนินการ Python ด้วยสิทธิ์ระดับสูง/etc/hostsไฟล์จะถูกลบ ดูสิว่ามันอันตรายขนาดไหน?
เพื่อแสดงสิ่งนี้ให้ลองใช้inputฟังก์ชั่นอีกครั้ง
>>> dude = "thefourtheye"
>>> input("Enter your name: ")
Enter your name: input("Enter your name again: ")
Enter your name again: dude
ตอนนี้เมื่อinput("Enter your name: ")ถูกดำเนินการมันจะรออินพุตของผู้ใช้และอินพุตของผู้ใช้คือการเรียกใช้ฟังก์ชั่น Python ที่ถูกต้องและเพื่อให้มีการเรียกใช้ นั่นคือเหตุผลที่เราเห็นEnter your name again:พรอมต์อีกครั้ง
ดังนั้นคุณจะดีกว่าด้วยraw_inputฟังก์ชั่นเช่นนี้
input_variable = raw_input("Enter your name: ")
หากคุณจำเป็นต้องแปลงผลประเภทอื่น ๆ raw_inputบางแล้วคุณสามารถใช้ฟังก์ชั่นที่เหมาะสมในการแปลงสตริงกลับโดย ตัวอย่างเช่นหากต้องการอ่านอินพุตเป็นจำนวนเต็มให้ใช้intฟังก์ชันดังที่แสดงในคำตอบนี้
ในหลาม 3.xมีเพียงหนึ่งฟังก์ชั่นที่จะได้รับปัจจัยการผลิตของผู้ใช้และที่เรียกว่าinputซึ่งเทียบเท่ากับงูหลาม raw_input2.7
               
              
inputจะทำตัวแบบนี้ แต่เฉพาะใน 2.7 มันพูดอะไรเมื่อคุณเรียกใช้python --versionจากพรอมต์คำสั่ง? อีกวิธีหนึ่งถ้าคุณเขียนimport sys; print(sys.version)ที่จุดเริ่มต้นของสคริปต์ของคุณ?