পাইথন 3 raw_input()
এবং এর input()
মধ্যে পার্থক্য কী ?
input
করতে raw_input
এবং উপেক্ষা করার চেষ্টা করবেন ।
পাইথন 3 raw_input()
এবং এর input()
মধ্যে পার্থক্য কী ?
input
করতে raw_input
এবং উপেক্ষা করার চেষ্টা করবেন ।
উত্তর:
পার্থক্যটি হ'ল raw_input()
পাইথন ৩.x এ বিদ্যমান নেই, যখন রয়েছে input()
। আসলে, পুরানোটির নতুন raw_input()
নামকরণ হয়েছে input()
, এবং পুরানোটি input()
চলে গেছে, তবে সহজেই ব্যবহার করে সিমুলেশন করা যায় eval(input())
। (মনে রাখবেন এটি eval()
অশুভ।
raw_input
...?" - "পার্থক্যটি হ'ল এখানে নেই raw_input
।" ... বেশ মারাত্মক পার্থক্য, আমি বলব!
eval
(এবং exec
) সাধারণত এড়ানো উচিত কারণ তারা সুরক্ষার ঝুঁকি হতে পারে। বিশদগুলির জন্য, দয়া করে দেখুন এভাল সত্যই অভিজ্ঞ প্রবীণ নেড ব্যাচেল্ডারের দ্বারা বিপজ্জনক । এবং অবশ্যই সেই পরামর্শটি পুরানো পাইথন 2 এর ক্ষেত্রেও প্রযোজ্য input
।
eval()
এবং এটি exec()
ব্যবহার eval()
করার সিদ্ধান্ত নেওয়ার আগে আপনাকে প্রথমে কেন ব্যবহার করা উচিত নয় তা বুঝতে হবে understand
পাইথন 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()
বিদ্যমান নেই যা ইতিমধ্যে সোভেন উল্লেখ করেছিলেন exist
পাইথন 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
উপরের উদাহরণে পাইথন ২.x হর্ষকে স্ট্রিংয়ের পরিবর্তে পরিবর্তনশীল হিসাবে মূল্যায়ন করার চেষ্টা করছে। এটি এড়াতে, আমরা আমাদের ইনপুটটির মতো "হর্ষ" এর মতো ডাবল উদ্ধৃতি ব্যবহার করতে পারি:
>>> name = input("what is your name?")
what is your name?"harsha"
>>> print(name)
harsha
কাঁচা নিবেশ()
কাঁচা_পিন্ড () `ফাংশনটি মূল্যায়ন করে না, আপনি যা প্রবেশ করেন তা কেবল এটি পড়বে।
উদাহরণ:
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()
যা এখন অবধি আপনি জানেন যে ব্যবহারকারী কোনও স্ট্রিং হিসাবে প্রবেশ করে এমন ডেটা যাচাই করে। এর অর্থ হল অজগর আবার প্রবেশ করা ডেটা এমনকি বোঝার চেষ্টা করে না। এটি যা বিবেচনা করবে তা হ'ল প্রবেশ করা ডেটা স্ট্রিং হবে, এটি আসল স্ট্রিং বা ইনট বা অন্য কোনও বিষয় whether
অন্যদিকে input()
ব্যবহারকারীর দ্বারা প্রবেশ করা ডেটা বোঝার চেষ্টা করে। সুতরাং ইনপুটটি helloworld
এমনকি ত্রুটিটি ' helloworld is undefined
' হিসাবে দেখায় ।
উপসংহারে, পাইথন 2 এর জন্য একটি স্ট্রিং প্রবেশ করানোর জন্য আপনাকেও ' helloworld
' এর মতো এটি প্রবেশ করতে হবে যা স্ট্রিংগুলি ব্যবহার করার জন্য পাইথনের ব্যবহৃত সাধারণ কাঠামো।
আপনি যদি তা নিশ্চিত করতে চান যে আপনার কোডটি পাইথন 2 এবং পাইথন 3 দিয়ে চলছে, আপনার স্ক্রিপ্টে ফাংশন ইনপুট () ব্যবহার করুন এবং এটি আপনার স্ক্রিপ্টের শুরুতে যুক্ত করুন:
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")