থেকে পাইথন 2 ম্যানুয়াল :
সিপিথন বাস্তবায়ন বিশদ: সংখ্যা ব্যতীত বিভিন্ন ধরণের অবজেক্টগুলি তাদের প্রকারের নাম অনুসারে অর্ডার করা হয়; একই ধরণের জিনিসগুলি যা সঠিক তুলনা সমর্থন করে না তাদের ঠিকানায় আদেশ করা হয়েছে।
আপনি যখন দুটি স্ট্রিং বা দুটি সংখ্যার প্রকারের অর্ডার করেন তখন প্রত্যাশিত উপায়ে অর্ডারিং হয় (স্ট্রিংয়ের জন্য ডিক্সিকোগ্রাফিক অর্ডার, সংখ্যার জন্য সংখ্যাগত অর্ডারিং)।
আপনি যখন একটি সংখ্যাসূচক এবং একটি অ-সংখ্যািক প্রকার অর্ডার করেন, তখন সংখ্যার প্রকারটি প্রথম আসে।
>>> 5 < 'foo'
True
>>> 5 < (1, 2)
True
>>> 5 < {}
True
>>> 5 < [1, 2]
True
আপনি যখন দুটি বেমানান প্রকারের অর্ডার করেন যেখানে কোনওটিই সংখ্যাসূচক নয়, সেগুলি তাদের টাইপনামগুলির বর্ণমালা অনুসারে অর্ডার করা হয়:
>>> [1, 2] > 'foo' # 'list' < 'str'
False
>>> (1, 2) > 'foo' # 'tuple' > 'str'
True
>>> class Foo(object): pass
>>> class Bar(object): pass
>>> Bar() < Foo()
True
একটি ব্যতিক্রম হ'ল পুরানো স্টাইলের ক্লাস যা সর্বদা নতুন স্টাইলের ক্লাসের আগে আসে।
>>> class Foo: pass # old-style
>>> class Bar(object): pass # new-style
>>> Bar() < Foo()
False
এই আচরণটি কি ভাষা অনুসারে বাধ্যতামূলক, বা এটি বাস্তবায়নকারীদের উপর নির্ভর করে?
নেই কোনো ভাষা স্পেসিফিকেশন । ভাষা রেফারেন্স বলেছেন:
অন্যথায়, বিভিন্ন ধরণের অবজেক্টগুলি সর্বদা অসম তুলনা করে এবং ধারাবাহিকভাবে কিন্তু নির্বিচারে আদেশ করা হয়।
সুতরাং এটি একটি বাস্তবায়ন বিশদ।
বড় পাইথন বাস্তবায়নের কোনওটির মধ্যে কি পার্থক্য রয়েছে?
আমি এর জবাব দিতে পারছি না কারণ আমি কেবলমাত্র অফিসিয়াল সিপথন বাস্তবায়ন ব্যবহার করেছি, তবে পাইথন এর মতো পাইথনের অন্যান্য বাস্তবায়ন রয়েছে।
পাইথন ভাষার সংস্করণগুলির মধ্যে পার্থক্য রয়েছে?
পাইথন ৩.x-তে আচরণটি এমনভাবে পরিবর্তন করা হয়েছে যাতে পূর্ণসংখ্যা এবং স্ট্রিংয়ের আদেশ দেওয়ার চেষ্টা করা একটি ত্রুটি বাড়িয়ে তোলে:
>>> '10' > 5
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
'10' > 5
TypeError: unorderable types: str() > int()