पायथन 3 में raw_input()
और क्या अंतर है input()
?
input
करने raw_input
और अनदेखा करने का प्रयास करते हैं।
पायथन 3 में raw_input()
और क्या अंतर है input()
?
input
करने raw_input
और अनदेखा करने का प्रयास करते हैं।
जवाबों:
अंतर यह है कि raw_input()
पायथन 3.x में मौजूद नहीं है, जबकि input()
करता है। असल में, पुराने raw_input()
का नाम बदल दिया गया है input()
, और पुराना input()
चला गया है, लेकिन आसानी से उपयोग करके नकली किया जा सकता है eval(input())
। (याद रखें कि eval()
बुराई है। यदि संभव हो तो अपने इनपुट को पार्स करने के सुरक्षित तरीकों का उपयोग करने का प्रयास करें।)
raw_input
...?" - "अंतर यह है कि नहीं है raw_input
।" ... काफी अंतर है, मैं कहूँगा!
eval
(और exec
) आम तौर पर बचा जाना चाहिए क्योंकि वे सुरक्षा जोखिम हो सकते हैं। विवरण के लिए, कृपया देखें कि वास्तव में एसओ वयोवृद्ध नेड बैचेल्ड द्वारा एवल खतरनाक है। और निश्चित रूप से यह सलाह पुराने पाइथन 2 पर भी लागू होती है input
।
eval()
और exec()
, लेकिन आपको यह समझने की आवश्यकता है कि इसका उपयोग eval()
करने का निर्णय लेने से पहले आपको इसका उपयोग क्यों नहीं करना चाहिए ।
पायथन 2 में , raw_input()
एक स्ट्रिंग लौटाता है, और input()
इनपुट को पायथन अभिव्यक्ति के रूप में चलाने की कोशिश करता है।
चूंकि एक स्ट्रिंग प्राप्त करना हमेशा लगभग वही होता था जो आप चाहते थे, पायथन 3 ऐसा करता है input()
। जैसा कि स्वेन कहते हैं, यदि आप कभी भी पुराना व्यवहार चाहते हैं, तो eval(input())
काम करता है।
raw_input()
।
raw_input()
ठीक वही है जो उपयोगकर्ता टाइप करता है और इसे स्ट्रिंग के रूप में वापस भेजता है।
input()
पहले लेता है raw_input()
और फिर उस eval()
पर भी प्रदर्शन करता है ।
मुख्य अंतर यह है कि input()
एक कृत्रिम रूप से सही अजगर बयान की अपेक्षा raw_input()
करता है जहां नहीं होता है।
raw_input()
input()
अब इसका नाम बदलकर input()
सटीक स्ट्रिंग दिया गया।input()
हटा दिया गया।यदि आप पुराने का उपयोग करना चाहते हैं input()
, तो इसका मतलब है कि आपको एक अजगर इनपुट के रूप में एक उपयोगकर्ता इनपुट का मूल्यांकन करने की आवश्यकता है, आपको इसे मैन्युअल रूप से उपयोग करके करना होगा eval(input())
।
पायथन 3 में, raw_input()
मौजूद नहीं है जो पहले ही स्वेन द्वारा उल्लिखित था।
पायथन 2 में, input()
फ़ंक्शन आपके इनपुट का मूल्यांकन करता है।
उदाहरण:
name = input("what is your name ?")
what is your name ?harsha
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
name = input("what is your name ?")
File "<string>", line 1, in <module>
NameError: name 'harsha' is not defined
ऊपर के उदाहरण में, पायथन 2.x एक स्ट्रिंग के बजाय एक चर के रूप में कठोर का मूल्यांकन करने की कोशिश कर रहा है। उससे बचने के लिए, हम अपने इनपुट के चारों ओर दोहरे उद्धरण चिह्नों का उपयोग कर सकते हैं, जैसे "हर्शा":
>>> name = input("what is your name?")
what is your name?"harsha"
>>> print(name)
harsha
कच्चे इनपुट()
Raw_input () `फ़ंक्शन का मूल्यांकन नहीं करता है, यह सिर्फ आपके द्वारा दर्ज किए गए कुछ को पढ़ेगा।
उदाहरण:
name = raw_input("what is your name ?")
what is your name ?harsha
>>> name
'harsha'
उदाहरण:
name = eval(raw_input("what is your name?"))
what is your name?harsha
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
name = eval(raw_input("what is your name?"))
File "<string>", line 1, in <module>
NameError: name 'harsha' is not defined
उपरोक्त उदाहरण में, मैं केवल eval
फ़ंक्शन के साथ उपयोगकर्ता इनपुट का मूल्यांकन करने की कोशिश कर रहा था ।
मैं अजगर 2 उपयोगकर्ताओं के लिए सभी द्वारा प्रदान की गई व्याख्या में थोड़ा और विस्तार जोड़ना चाहूंगा । raw_input()
, जो अब तक, आप जानते हैं कि उपयोगकर्ता कभी भी स्ट्रिंग के रूप में क्या डेटा दर्ज करता है, इसका मूल्यांकन करता है। इसका मतलब यह है कि अजगर फिर से दर्ज डेटा को समझने की कोशिश नहीं करता है। सभी यह विचार करेंगे कि दर्ज किया गया डेटा स्ट्रिंग होगा, चाहे वह वास्तविक स्ट्रिंग या इंट या कुछ भी हो।
जबकि input()
दूसरी तरफ उपयोगकर्ता द्वारा दर्ज किए गए डेटा को समझने की कोशिश करता है। तो इनपुट helloworld
भी त्रुटि ' helloworld is undefined
' के रूप में दिखाएगा ।
अंत में, अजगर 2 के लिए, एक स्ट्रिंग में प्रवेश करने के लिए भी आपको इसे ' helloworld
' की तरह दर्ज करने की आवश्यकता होती है जो कि स्ट्रिंग का उपयोग करने के लिए अजगर में उपयोग की जाने वाली सामान्य संरचना है।
यदि आप यह सुनिश्चित करना चाहते हैं कि आपका कोड python2 और python3 के साथ चल रहा है, तो अपनी स्क्रिप्ट में फ़ंक्शन इनपुट () का उपयोग करें और इसे अपनी स्क्रिप्ट की शुरुआत में जोड़ें:
from sys import version_info
if version_info.major == 3:
pass
elif version_info.major == 2:
try:
input = raw_input
except NameError:
pass
else:
print ("Unknown python version - input function not safe")