কম্পিউটার

Python 2.x এবং Python 3.x এর মধ্যে পার্থক্য?


কোডিং সম্প্রদায়ে সর্বদা একটি বিতর্ক থাকে যে কোন পাইথন সংস্করণটি শেখার জন্য সেরা ছিল:পাইথন 2.x বা পাইথন 3.x৷

নীচে pyton 2.x এবং python 3.x

এর মধ্যে মূল পার্থক্য রয়েছে৷

1. প্রিন্ট ফাংশন

পাইথন 2.x-এ, "প্রিন্ট" একটি বিবৃতি হিসাবে বিবেচিত হয় এবং python 3.x স্পষ্টভাবে "প্রিন্ট" কে একটি ফাংশন হিসাবে বিবেচনা করে৷ এর মানে আমাদের আপনার প্রিন্টের ভিতরের আইটেমগুলিকে স্ট্যান্ডার্ড উপায়ে ফাংশন বন্ধনীতে পাস করতে হবে অন্যথায় আপনি একটি সিনট্যাক্স ত্রুটি পাবেন৷

#Python 2.7print 'Python', python_version()print 'Hello, World!'print('Hello, World!')প্রিন্ট "টেক্সট",; 'এখানে আরো কিছু লেখা' প্রিন্ট করুন 

আউটপুট

Python 2.7.6Hello, World!Hello, World!পাঠ্য এখানে আরো কিছু টেক্সট প্রিন্ট করুন পাইথন 3import sysprint("Python সংস্করণ হল %s.%s.%s" %sys.version_info[:3])প্রিন্ট('হ্যালো, বিশ্ব!')প্রিন্ট("কিছু লেখা,", শেষ="")প্রিন্ট('আরো কিছু লেখা এখানে')

আউটপুট

পাইথন সংস্করণটি হল 3.6.1হ্যালো, ওয়ার্ল্ড! কিছু পাঠ্য, এখানে আরও কিছু পাঠ্য>>> প্রিন্ট "হ্যালো" সিনট্যাক্স ত্রুটি:'প্রিন্ট' করার কলে বন্ধনী অনুপস্থিত

2. পূর্ণসংখ্যা বিভাজন

Python 2 আপনি যে সংখ্যাগুলিকে দশমিক বিন্দুর পরে পূর্ণসংখ্যা হিসাবে টাইপ করেন তা বিবেচনা করে, যা বিভাজনের সময় কিছু অপ্রত্যাশিত ফলাফলের দিকে নিয়ে যেতে পারে। উদাহরণস্বরূপ, আপনি যদি পাইথন 2 কোডে এক্সপ্রেশন 3 / 2 টাইপ করেন, তাহলে মূল্যায়নের ফলাফল 1 হবে, 1.5 হবে না যেমনটি আপনি আশা করতে পারেন। আপনার পাইথন 3 কোডে শুধুমাত্র x ব্যবহার করার পরিবর্তে হয় ফ্লোট(x) ব্যবহার করার পরামর্শ দেওয়া হয় (কোডবেস পোর্ট থেকে পাইথন 2) অথবা আপনার পাইথন 2 স্ক্রিপ্টে __future__ আমদানি বিভাগ থেকে ব্যবহার করুন।

#Python 2

'Python', python_version()print '3 / 2 =', 3 / 2print '3 // 2 =', 3 // 2print '3 / 2.0 =', 3 / 2.0print '3 // 2.0 =', 3 // 2.0

আউটপুট

পাইথন 2.7.63 / 2 =13 // 2 =13 / 2.0 =1.53 // 2.0 =1.0

#Python 3.6.1

সিসপ্রিন্ট আমদানি করুন('Python %s.%s.%s' %sys.version_info[:3])print('3 / 2 =', 3 / 2)print('3 // 2 =', 3 // 2)মুদ্রণ('3 / 2.0 =', 3 / 2.0)মুদ্রণ('3 // 2.0 =', 3 // 2.0)

আউটপুট

পাইথন 3.6.13 / 2 =1.53 // 2 =13 / 2.0 =1.53 // 2.0 =1.0

3. ইউনিকোড স্ট্রিংস

ডিফল্টরূপে, পাইথন 3 স্ট্রিংগুলিকে ইউনিকোড হিসাবে সংরক্ষণ করে যেখানে পাইথন 2 আপনাকে একটি স্ট্রিংকে "u" দিয়ে চিহ্নিত করতে হবে যদি আপনি এটিকে ইউনিকোড হিসাবে সংরক্ষণ করতে চান। ইউনিকোড স্ট্রিংগুলি ASCII স্ট্রিংগুলির চেয়ে বহুমুখী, যেগুলি পাইথন 2 ডিফল্ট, কারণ তারা বিদেশী ভাষার অক্ষরগুলির পাশাপাশি ইমোজি এবং প্রমিত রোমান অক্ষর এবং সংখ্যা সংরক্ষণ করতে পারে৷

#Python 2

>>> প্রিন্ট টাইপ(ইউনিকোড('এটি একটি python3 str টাইপের মতো'))>>> প্রিন্ট টাইপ(b'বাইট টাইপ বিদ্যমান নেই')>>> প্রিন্ট 'তারা সত্যিই' + বি' একই' তারা সত্যিই একই

#Python 3

সিসপ্রিন্ট আমদানি করুন('Python %s.%s.%s' %sys.version_info[:3])print('স্ট্রিংগুলি এখন utf-8 \u03BCnico\u0394é!')প্রিন্ট('Python %s.% s.%s' %sys.version_info[:3], end="")প্রিন্ট(' আছে', টাইপ(b' ডেটা সংরক্ষণের জন্য বাইট'))প্রিন্ট('পাইথন %s.%s.%s' % sys.version_info[:3], end="")print('ও আছে', type(bytearray(b'bytearrays')))

আউটপুট

পাইথন 3.6.1 স্ট্রিংগুলি এখন utf-8 μnicoΔé! পাইথন 3.6.1-এর Python 3.6.1-এর 

“স্ট্রিং” + b”বাইটস অফ ডাটা” একটি ত্রুটির মাধ্যমে হবে।

>>> প্রিন্ট ('তারা সত্যিই' + b' একই') ট্রেসব্যাক (সর্বশেষ সর্বশেষ কল):ফাইল "", লাইন 1, প্রিন্টে ('তারা সত্যিই ' + b' একই') TypeError:অবশ্যই str হতে হবে, বাইট নয়

4. ব্যতিক্রম উত্থাপন

Python 3 ব্যতিক্রমগুলি উত্থাপনের জন্য আলাদা সিনট্যাক্সের প্রয়োজন। আপনি যদি ব্যবহারকারীকে একটি ত্রুটি বার্তা আউটপুট করতে চান, তাহলে আপনাকে সিনট্যাক্স −

ব্যবহার করতে হবে
 IOError বাড়ান ("আপনার ত্রুটি বার্তা")

উপরের সিনট্যাক্স পাইথন 2 এবং পাইথন 3 উভয়েই কাজ করে।

যাইহোক, নিম্নলিখিত কোডটি শুধুমাত্র python 2 এ কাজ করে, python 3 এ নয়

 IOError বাড়ান, "আপনার ত্রুটি বার্তা"

5. তালিকা বোঝার লুপ ভেরিয়েবল

পাইথন 2-এ, যে ভেরিয়েবলটিকে "ফর লুপ"-এ বিশ্বব্যাপী ভেরিয়েবলের মতো একই নাম পুনরুদ্ধার করা হয় তা গ্লোবাল ভেরিয়েবলের মান পরিবর্তন করতে পারে - যা সাধারণত আমরা চাই না। এই সমস্যাটি পাইথন 3-এ ঠিক করা হয়েছে, তাই আপনি আপনার "ফর লুপ"-এ কন্ট্রোল ভেরিয়েবলের জন্য ইতিমধ্যেই ব্যবহার করেছেন এমন একটি ভেরিয়েবল নাম ব্যবহার করতে পারেন যেটি আপনার কোডের বাকি অংশে ভেরিয়েবলের মানগুলির সাথে ফাঁস হওয়ার বিষয়ে চিন্তা না করেই।

#Python 2print 'Python', python_version()i =1print 'before:i =', iprint 'comprehension:', [i for i in range(5)]print 'after:i =', i

আউটপুট

পাইথন 2.7.6 আগে:i =1 বোঝা:[0, 1, 2, 3, 4] পরে:i =4

#Python 3

সিসপ্রিন্ট আমদানি করুন পরিসরে(5)])প্রিন্ট('পরে:i =', i)

আউটপুট

পাইথন 3.6.1 আগে:i =1 বোঝা:[0, 1, 2, 3, 4] পরে:i =1

  1. উইন্ডোজ এক্সপি এবং উইন্ডোজ 7 এর মধ্যে শীর্ষ 10টি পার্থক্য

  2. পাইথনে ==এবং অপারেটরের মধ্যে পার্থক্য।

  3. পাইথন 2.x এবং পাইথন 3.x সংস্করণগুলির মধ্যে পার্থক্য কী?

  4. Python 2.7.x এবং Python 3.x এর মধ্যে মূল পার্থক্যগুলি কী কী?