ত্রুটির ব্যাখ্যা: 'ননটাইপ' অবজেক্টটি পুনরাবৃত্ত হয় না
পাইথন 2-এ, নাইনটাইপ হ'ল নন টাইপের টাইপ। পাইথন 3 এ ননটাইপ হ'ল ননটির শ্রেণি, উদাহরণস্বরূপ:
>>> print(type(None)) #Python2
<type 'NoneType'> #In Python2 the type of None is the 'NoneType' type.
>>> print(type(None)) #Python3
<class 'NoneType'> #In Python3, the type of None is the 'NoneType' class.
কোনও ভেরিয়েবলের সাথে আইট্রেটিংয়ের মান যে কোনওটিই ব্যর্থ হয়:
for a in None:
print("k") #TypeError: 'NoneType' object is not iterable
পাইথন পদ্ধতিগুলি যদি কোনও মান ফেরত না দেয় তবে ননটাইপ ফিরিয়ে দেয়:
def foo():
print("k")
a, b = foo() #TypeError: 'NoneType' object is not iterable
আপনার নুন টাইপ এর জন্য আপনার লুপিং নির্মাণগুলি পরীক্ষা করতে হবে:
a = None
print(a is None) #prints True
print(a is not None) #prints False
print(a == None) #prints True
print(a != None) #prints False
print(isinstance(a, object)) #prints True
print(isinstance(a, str)) #prints False
গাইডো বলেছেন যে কেবলমাত্র isএটি যাচাই করতে ব্যবহার করুন Noneকারণ isএটি পরিচয় পরীক্ষার চেয়ে বেশি দৃ rob়। সমতা ক্রিয়াকলাপগুলি ব্যবহার করবেন না কারণ এগুলি তাদের নিজস্ব বুদ্বুদ আপ বাস্তবায়নকে স্পিট করতে পারে। পাইথনের কোডিং স্টাইল নির্দেশিকা - পিইপি -008 8
ননটাইপগুলি লুক্কায়িত এবং ল্যাম্বডাস থেকে লুকিয়ে থাকতে পারে:
import sys
b = lambda x : sys.stdout.write("k")
for a in b(10):
pass #TypeError: 'NoneType' object is not iterable
কোনটিটাইপ একটি বৈধ কীওয়ার্ড নয়:
a = NoneType #NameError: name 'NoneType' is not defined
সংবিধান Noneএবং একটি স্ট্রিং:
bar = "something"
foo = None
print foo + bar #TypeError: cannot concatenate 'str' and 'NoneType' objects
এখানে কি হচ্ছে?
পাইথনের দোভাষী আপনার কোডটিকে পাইক বাইটকোডে রূপান্তর করেছেন। পাইথন ভার্চুয়াল মেশিনটি বাইটকোডটি প্রক্রিয়া করেছিল, এটি একটি লুপিং কনস্ট্রাক্টের মুখোমুখি হয়েছিল যা বলে যে কোনওটি নেই এমন একটি ভেরিয়েবলের উপর পুনরাবৃত্তি হবে। নন- __iter__তে পদ্ধতিটি আহ্বান করে অপারেশনটি করা হয়েছিল ।
__iter__কারওরই কোনও পদ্ধতি সংজ্ঞায়িত হয়নি, তাই পাইথনের ভার্চুয়াল মেশিন আপনাকে যা দেখায় তা বলে দেয়: ননটিটাইপের কোনও __iter__পদ্ধতি নেই।
এজন্য পাইথনের হাঁস-টাইপিং আদর্শকে খারাপ বলে মনে করা হয়। প্রোগ্রামারটি একটি পরিবর্তনশীল সহ সম্পূর্ণ যুক্তিসঙ্গত কিছু করে এবং রানটাইমের সময় এটি কোনওটি দ্বারা দূষিত হয় না, পাইথন ভার্চুয়াল মেশিনটি সৈন্যবাহিনীর চেষ্টা করে এবং পুরো কার্পেটের মধ্যে একগুচ্ছ সম্পর্কহীন বাজে কথা বলে।
জাভা বা সি ++ তে এই সমস্যাগুলি নেই কারণ এই জাতীয় প্রোগ্রাম সংকলনের অনুমতি দেওয়া হবে না কারণ যখনই কিছুই ঘটে না তখন আপনি কী করবেন তা আপনি সংজ্ঞায়িত করেননি। পাইথন প্রোগ্রামারকে প্রচুর দড়ি দিয়ে নিজেকে ঝুলিয়ে দেয় যা আপনাকে ব্যতিক্রমী পরিস্থিতিতে কাজ করার আশা করা যায় না। পাইথন হ্যাঁ-ম্যান, হ্যাঁ-স্যার যখন জাভা এবং সি ++ এর মতো আপনাকে নিজের ক্ষতি থেকে বিরত রাখবে তখন বলে saying
Noneসিকোয়েন্স হিসাবে জোর করা হয় এটি অবশ্যই একটি খালি ক্রম উত্পাদন করা উচিত, সম্পূর্ণ নিরীহ।