পাইথন 3 এবং 2.7 এর মধ্যে পার্থক্য কী?


উত্তর 1:

পাইথন পৃথিবী এখন বেশিরভাগ ক্ষেত্রে দুটি বিভাগে বিভক্ত, একটি যারা এখনও পাইথন ২.7 নিয়ে কাজ করছেন এবং যিনি ৩.x এ স্থানান্তর শুরু করেছেন বা ২.7-তে কোনও জ্ঞান বা অভিজ্ঞতা ছাড়াই ৩.x ব্যবহার শুরু করেছেন।

পাইথন ২.7 হ'ল ভবিষ্যতে সমর্থিত হবে না এবং শীঘ্রই এটি পুরানো হয়ে উঠবে। পাইথন 2.7 কাউন্টডাউন

সুতরাং, প্রশ্নটি যে 3.x এবং 2.7 এর মধ্যে পার্থক্য কী তা একটি জ্বলন্ত প্রশ্ন, কারণ অন্য কোনও আপগ্রেডের বিপরীতে পাইথন ৩.x এর কেবল নতুন বৈশিষ্ট্যই নেই তবে এটি অন্তর্নিহিত দর্শন এবং নকশায় নিজেই পরিবর্তিত হয়েছে। এবং পাইথন 3.x কে কেবলমাত্র 2.7 এর আপগ্রেড না করে পরিপক্ক পাইথন ভাষা হিসাবে ডাকা ভাল

নিম্নলিখিতটি 2.7 এবং 3.x এ কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে

  1. স্ট্রিং এবং ইউনিকোড হ্যান্ডলিং:

পাইথন ২.7-এ, সাধারণ স্ট্রিং, বাইট স্ট্রিং এবং ইউনিকোড স্ট্রিং রয়েছে। তবে বাস্তবে বাইটস এবং নরমাল মূলত পাইথন ২.7 এ একই জিনিস।

my_str = 'উদাহরণ'
বাইট_স্ট্রি = বি'সাম্পল '
uni_str = u'example '
মুদ্রণ (প্রকার (my_str) # আউটপুট <টাইপ 'str'>
মুদ্রণ (প্রকার (বাইট_স্ট্র) # আউটপুট <টাইপ 'str'>
মুদ্রণ (প্রকার (uni_str) # আউটপুট <টাইপ 'ইউনিকোড'>

বাইট টাইপের মতো কিছুই নেই, বা অন্য কথায় সাধারণ স্ট্রিংটি কেবলমাত্র এসসিআই অক্ষর সহ এনকোডড টাইপের মতো আচরণ করে। উদাহরণ (পাইথন ২.7)

>>> আমার_স্ট্র = 'ফার' # বিশেষ চর আপনি উমলৌত, আসকি চর নয়
>>> আমার_রিস্ট
'F \ xfcr'
>>> মুদ্রণ (আমার_আর)
পশম

উপরের উদাহরণে, আমার_রিস্টে অ অ্যাস্কি চরিত্রটিকে পটভূমিতে অ্যাস্কি চরে পরিবর্তন করা হয়েছে, তবে মুদ্রণ (মাই_স্টার) সঠিক স্ট্রিং মুদ্রণ করেছে। এটি ঘটছে কারণ অভ্যন্তরীণভাবে পাইথন 2.7 মাই_স্ট্রি এনকোড করছে। সুতরাং, আপনি my_str, বা পাইথন 2.7 স্ট্রিতে কোনও এনকোড পদ্ধতিতে কল করতে পারবেন না। কিন্তু, ডিকোড বলা যেতে পারে, কারণ এটি অজগর দ্বারা ইতিমধ্যে এনকোড করা হয়েছে।

my_str.encode ( 'ল্যাটিন -1')
ইউনিকোডডেকোডেরর উত্থাপন করে, কারণ আমার_স্ট্রাস্ট ইতিমধ্যে এনকোডড রয়েছে।

my_str.decode ('ল্যাটিন -1') # টি ইউনিকোড স্ট্রিং প্রদান করে।

তবে পাইথন ৩.x তে ইউনিকোডকে স্ট্রিং (স্ট্র্যাট টাইপ) বলা হয়, এবং বাইটগুলি বাইট টাইপ হয়। এর অর্থ হ'ল ডিফল্টরূপে সমস্ত স্ট্রিং ইউনিকোড স্ট্রিং এবং কোনও সাধারণ স্ট্রিং নেই। পাইথন 3-তে কেবল ইউনিকোড এবং বাইটগুলি স্ট্রিংয়ের ধরণ।

my_str = 'উদাহরণ'
বাইট_স্ট্রি = বি'সাম্পল '
uni_str = u'example '
মুদ্রণ (প্রকার (my_str) # আউটপুট <টাইপ 'str'>
মুদ্রণ (প্রকার (বাইট_স্ট্রেল) # আউটপুট <টাইপ 'বাইটস'>
মুদ্রণ (প্রকার (uni_str) # আউটপুট <টাইপ 'str'>

এর অর্থ হ'ল ডিফল্টরূপে আপনি কোনও স্ট্র / ইউনিকোড টাইপ সহ নন অ্যাস্কি অক্ষর টাইপ বা ধরে রাখতে পারবেন। পাইথন 2.7 এর বিপরীতে পাইথন 3.x অভ্যন্তরীণভাবে একটি স্ট্রিং এনকোড করে না এবং ইউনিকোড স্টাইল অনুসারে চরিত্রটির সাথে আচরণ করে। উদাহরণ স্বরূপ

>>> আমার_স্ট্র = 'ফার' # বিশেষ চর আপনি উমলৌত, আসকি চর নয়
>>> আমার_রিস্ট
'পশম'
>>> মুদ্রণ (আমার_আর)
পশম

>>> বি'ফর '# অ্যাস্কি চর নিয়ে বাইট স্ট্রিংয়ের চেষ্টা করছেন।
ত্রুটি উত্থাপন করে, বলছেন যে বাইটগুলি কেবলমাত্র এসআইএসআই অক্ষর রাখতে পারে।

তবে আপনি এটিকে ডিকোড করতে বা এনকোডিং স্কিমা সরবরাহ করে টাইপকাস্ট করতে পারেন

>>> এস 1 = বাইটস (মাই_স্ট্রি, 'utf-8')
>>> এস 2 = মাই_ স্টার এনকোড ('utf-8')
>>> এস 1
b'f \ xfcr '
>>> এস 2
b'f \ xfcr '
# একই ফলাফল

>>> s1.decode ('utf-8')
'ফার' # ইউনিকোড স্ট্রিং

২. পাইথন ৩.x এ প্রায় সব কিছুই জেনারেটর

পাইথন ২.7 এর তুলনায় পাইথন ৩.x এর সর্বাধিক গুরুত্বপূর্ণ এবং বৃহত্তম পরিবর্তনটি হ'ল সবকিছু জেনারেটর হয়ে গেছে। পাইথনের জেনারেটরগুলির মেমরির কার্যকর ব্যবহারের সুবিধা রয়েছে। এন আইটেমগুলির সাথে কেন মেমরি নষ্ট করবেন, যখন আপনি একবারে একটি আইটেম পেতে পারেন।

পাইথন ২..7-এ, রেঞ্জ এবং এক্সরেঞ্জ পদ্ধতি রয়েছে, যেখানে এক্সরেঞ্জ একটি জেনারেটর এবং ব্যাপ্তি আইটেমগুলির একটি তালিকা দেয়।

>>> পরিসীমা (5)
[১, ২, ৩, ৪, ৫]

>>> এক্সরেঞ্জ (5)
xrange (5) # একটি পুনরুক্তি করা অবজেক্ট, যখন প্রয়োজন হয় তখন একবারে একটি সংখ্যা তৈরি করে

পাইথন ৩.x এ কোনও এক্সরঞ্জ নেই, ব্যাপ্তি নিজেই পাইথন ২.7 এর এক্সরঞ্জের মতো আচরণ করে

একইভাবে, পাইথন ৩.x এ যে কোনও কল বা অবজেক্ট যা পাইথন ২..7-এ আইটেমের একটি তালিকা ফিরিয়ে দিচ্ছিল সেগুলি জেনারেটর অবজেক্টের সাথে প্রতিস্থাপন করা হবে

উদাহরণ

পাইথন 2.7
>>> পরিসীমা (5)
[১, ২, ৩, ৪, ৫]

পাইথন 3.x
>>> পরিসীমা (5)
পরিসর (5) # জেনারেটর অবজেক্ট


পাইথন 2.7
>>> জিপ ([1,2,3], [4,5,6])
[(1, 4), (2, 5), (3, 6)]

পাইথন 3.x
>>> জিপ ([1,2,3], [4,5,6])
জিপ অবজেক্ট # জিপ জেনারেটর অবজেক্ট


পাইথন 2.7
>>> মানচিত্র (ল্যাম্বদা এক্স: এক্স * এক্স, [1,2,3,4,5])
[1, 4, 9, 16, 25]

পাইথন 3.x
>>> মানচিত্র (ল্যাম্বদা এক্স: এক্স * এক্স, [1,2,3,4,5])
মানচিত্র অবজেক্ট # ম্যাপ জেনারেটর অবজেক্ট


পাইথন 2.7
>>> ডি 1 = {'এ': 1, 'বি': 2, 'সি': 3
>>> d1.items ()
[('a', 1), ('বি', 2), ('সি', 3)]

পাইথন 3.x
>>> ডি 1 = {'এ': 1, 'বি': 2, 'সি': 3
>>> d1.items ()
ডিক্ট_াইটেমস অবজেক্ট # ডিক্ট_াইটেমস জেনারেটর অবজেক্ট
ডি 1.ভালিউস () এবং ডি 1.কেজ () এর জন্যও # অনুরূপ অবজেক্ট

এই এবং প্রায় সমস্ত ধরণের কার্যকারিতা যা পাইথন 2.7 এ একটি তালিকা ফিরিয়েছিল, এখন পাইথন ৩.6-এ জেনারেটর অবজেক্টটি ফিরিয়ে দিবে

তদতিরিক্ত, পাইথন ২.7 এর বিপরীতে যা আন-অর্ডারযুক্ত ফ্যাশনে অভিধানগুলিতে আইটেম ধারণ করে, পাইথন ৩. dictionary অভিধানের অর্ডারযুক্ত ফ্যাশনে মান রয়েছে।

৩. পাইথন ৩.x এ প্রত্যাশিত প্যারামিটার ডেটাটাইপ এবং রিটার্ন ডেটাটাইপ সহ ফাংশন সংজ্ঞায়িত করা

ডিফ মাইফাঙ্ক (নাম: ইন্ট) -> ইনট:
পাস

এই কনভেনশনগুলি আপনার মানকে দৃ type়ভাবে টাইপ করে না, এটি কেবল একটি সম্মেলনের এটি দেখানোর জন্য যে এটি কোনও নির্দিষ্ট ডেটা ধরণের প্রত্যাশা করে তবে অন্য কোনও মান কোনও ত্রুটি / ব্যতিক্রম উত্থাপন করবে না।

এই বিষয়টিতে আরও আমার অন্য উত্তরে বিবেক কেশোরের উত্তর পাওয়া যাবে যে পাইথন 3-তে আমি কীভাবে শক্ত টাইপ ফাংশন প্যারামিটার করব?

4. পাইথন 2.7 এ গ্লোবাল নেমস্পেস ফাঁস

আসুন একটি উদাহরণ সহ গ্লোবাল নেমস্পেস লিকটি বুঝতে পারি।

>>> আমি = 10
>>> মুদ্রণ i
10
>>> l1 = [আমি রেঞ্জে আমার জন্য (5)]
>>> মুদ্রণ l1
>>> [0, 1, 2, 3, 4]
>>> আই
4

উপরের উদাহরণে, আপনি লক্ষ করতে পারেন যে বৈশ্বিক পরিবর্তনশীল ‘i’ তালিকা বোধের স্থানীয় প্রেক্ষাপটে পরিবর্তিত হয়েছে, যা আদর্শভাবে হওয়া উচিত নয়।

পাইথন ৩.০ এ যেখানে বিশ্বব্যাপী নেমস্পেস ফাঁস হয় না। স্থানীয় প্রসঙ্গের ভিতরে একই নামের সাথে পরিবর্তনশীল এর একই নামের বৈশ্বিক ভেরিয়েবলের উপর কোনও প্রভাব ফেলবে না।

>>> আমি = 10
>>> মুদ্রণ i
10
>>> l1 = [আমি রেঞ্জে আমার জন্য (5)]
>>> মুদ্রণ l1
>>> [0, 1, 2, 3, 4]
>>> আই
10

এই সমস্ত পরিবর্তনগুলি বাদে কিছু ছোট ছোট পরিবর্তন রয়েছে

  • মুদ্রণ বিবরণী (২.7) এবং মুদ্রণ () পদ্ধতি (3.x) ইনপুট () এবং কাঁচা_ ইনপুট () 2.7 এ এবং কেবল ইনপুট () বিভক্তির 3.xresult '/' অপারেটরে এবং 2.7 'হিসাবে' হিসাবে ব্যবহার করুন ৩.6-তে ব্যতিক্রম হ্যান্ডলিংয়ের মতো, যেমন ভ্যালুএররার বাদে x.x এর এয়ারব্যাঙ্কারের রাউন্ডিং ২.7 এর বিপরীতে, উদাহরণস্বরূপ ২.7 রাউন্ডে (১৪.৫) >-> ১৫ এবং রাউন্ড (১৫.৫) —-> ১,, তবে পাইথন ৩.x রাউন্ডে (১৪.৫) —-> 15 এবং রাউন্ড (15.5) 15-> 15

উত্তর 2:

পাইথন 3 এবং পাইথন ২.7 এর মধ্যে পার্থক্য সম্পর্কে আরও জানতে আপনি পাইথন সফটওয়্যার ফাউন্ডেশন উইকি সার্ভারটি দেখতে পাবেন কারণ এটি পাইথন ২.7 এবং ৩.৩ এর মধ্যে পার্থক্যগুলির গভীরতার দিকে যায় এবং বলেছে যে এর প্রতিটিটির সুবিধাগুলি রয়েছে। এটি আপনি কী অর্জন করতে চাইছেন তার উপর নির্ভর করে। তবে, সংক্ষেপে: "পাইথন ২.x হ'ল উত্তরাধিকার, পাইথন ৩.x ভাষার বর্তমান এবং ভবিষ্যত।"

দুজনের মধ্যে সূক্ষ্ম পার্থক্য রয়েছে। তবে সবচেয়ে বড় পার্থক্য হ'ল মুদ্রণ বিবৃতি।

প্রিন্ট স্টেটমেন্ট সম্পর্কে কী আলাদা?

স্ট্যাক ওভারফ্লো নিয়ে আলোচনা থেকে নেওয়া,

"সর্বাধিক দৃশ্যমান (পার্থক্য) সম্ভবত" মুদ্রণ "বিবৃতিটির কাজ করে। এটি যথেষ্ট আলাদা যে একই স্ক্রিপ্ট একই সাথে উভয় সংস্করণে চলতে সক্ষম হবে না, তবে একটি বেছে নিন এবং আপনি ভাল হয়ে যাবেন ”" আপনি হলবার্টন স্কুল নামে একটি ভাল প্রোগ্রামিং স্কুলে যোগদান করে এগুলি সম্পর্কে আরও শিখতে পারেন এবং জানতে পারেন পাইথন সংস্করণ এবং অন্যান্য গুরুত্বপূর্ণ প্রোগ্রামিং ভাষা সম্পর্কে আরও। "৩.x এর প্রধান সুবিধাটি এটি কাটিয়া প্রান্তে রয়েছে, সুতরাং সমস্ত নতুন বৈশিষ্ট্য ২.x যোগ করার পরিবর্তে সেখানে প্রয়োগ করা হবে। আপনি যে বিষয়টি বিবেচনা করতে চাইতে পারেন তা হ'ল এটি ভবিষ্যতের সাধারণ অজগর, তাই কয়েক বছর ধরে লাইনের নিচে তাকিয়ে দেখলে, এটি হবে পরিপক্ক শাখা people


উত্তর 3:

পাইথন 3 এবং পাইথন ২.7 এর মধ্যে পার্থক্য সম্পর্কে আরও জানতে আপনি পাইথন সফটওয়্যার ফাউন্ডেশন উইকি সার্ভারটি দেখতে পাবেন কারণ এটি পাইথন ২.7 এবং ৩.৩ এর মধ্যে পার্থক্যগুলির গভীরতার দিকে যায় এবং বলেছে যে এর প্রতিটিটির সুবিধাগুলি রয়েছে। এটি আপনি কী অর্জন করতে চাইছেন তার উপর নির্ভর করে। তবে, সংক্ষেপে: "পাইথন ২.x হ'ল উত্তরাধিকার, পাইথন ৩.x ভাষার বর্তমান এবং ভবিষ্যত।"

দুজনের মধ্যে সূক্ষ্ম পার্থক্য রয়েছে। তবে সবচেয়ে বড় পার্থক্য হ'ল মুদ্রণ বিবৃতি।

প্রিন্ট স্টেটমেন্ট সম্পর্কে কী আলাদা?

স্ট্যাক ওভারফ্লো নিয়ে আলোচনা থেকে নেওয়া,

"সর্বাধিক দৃশ্যমান (পার্থক্য) সম্ভবত" মুদ্রণ "বিবৃতিটির কাজ করে। এটি যথেষ্ট আলাদা যে একই স্ক্রিপ্ট একই সাথে উভয় সংস্করণে চলতে সক্ষম হবে না, তবে একটি বেছে নিন এবং আপনি ভাল হয়ে যাবেন ”" আপনি হলবার্টন স্কুল নামে একটি ভাল প্রোগ্রামিং স্কুলে যোগদান করে এগুলি সম্পর্কে আরও শিখতে পারেন এবং জানতে পারেন পাইথন সংস্করণ এবং অন্যান্য গুরুত্বপূর্ণ প্রোগ্রামিং ভাষা সম্পর্কে আরও। "৩.x এর প্রধান সুবিধাটি এটি কাটিয়া প্রান্তে রয়েছে, সুতরাং সমস্ত নতুন বৈশিষ্ট্য ২.x যোগ করার পরিবর্তে সেখানে প্রয়োগ করা হবে। আপনি যে বিষয়টি বিবেচনা করতে চাইতে পারেন তা হ'ল এটি ভবিষ্যতের সাধারণ অজগর, তাই কয়েক বছর ধরে লাইনের নিচে তাকিয়ে দেখলে, এটি হবে পরিপক্ক শাখা people