কম্পিউটার

পাইথন প্রোগ্রামে সতর্কতা নিয়ন্ত্রণ


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

সতর্কীকরণ বার্তাগুলি পাইথনের স্ট্যান্ডার্ড লাইব্রেরির 'সতর্কতা' মডিউলে সংজ্ঞায়িত warn() ফাংশন দ্বারা প্রদর্শিত হয়। সতর্কতা আসলে অন্তর্নির্মিত শ্রেণী অনুক্রমের ব্যতিক্রমের একটি সাবক্লাস। বিল্ট-ইন সতর্কীকরণ সাবক্লাস রয়েছে। ব্যবহারকারী সংজ্ঞায়িত সাবক্লাসও সংজ্ঞায়িত করা যেতে পারে।

সতর্কতা
এটি সমস্ত সতর্কীকরণ বিভাগের ক্লাসের বেস ক্লাস।
ব্যবহারকারী সতর্কতা
সতর্কতার জন্য ডিফল্ট বিভাগ ()।
অবচয় সতর্কতা
ডেভেলপারদের জন্য যখন এই সতর্কতাগুলি উদ্দিষ্ট হয় তখন অবহেলিত বৈশিষ্ট্য সম্পর্কে সতর্কতা
সিনট্যাক্স সতর্কতা
সন্দেহজনক সিনট্যাকটিক বৈশিষ্ট্য সম্পর্কে সতর্কতা।
রানটাইম সতর্কতা৷
সন্দেহজনক রানটাইম বৈশিষ্ট্য সম্পর্কে সতর্কতা।
ভবিষ্যৎ সতর্কতা
অপ্রচলিত বৈশিষ্ট্য সম্পর্কে সতর্কতা যখন সেই সতর্কতাগুলি শেষ ব্যবহারকারীদের জন্য উদ্দিষ্ট হয়৷
পেন্ডিং ডিপ্রেকেশন ওয়ার্নিং
বৈশিষ্ট্য সম্পর্কে সতর্কতা যা ভবিষ্যতে অবমূল্যায়িত হবে৷
আমদানি সতর্কতা৷
একটি মডিউল আমদানির প্রক্রিয়া চলাকালীন সতর্কতা ট্রিগার হয়েছে
ইউনিকোড সতর্কতা৷
ইউনিকোড সম্পর্কিত সতর্কতা।
বাইটসওয়ার্নিং৷
বাইট এবং বাইট অ্যারে সম্পর্কিত সতর্কতা।
রিসোর্স ওয়ার্নিং৷
সম্পদ ব্যবহারের সাথে সম্পর্কিত সতর্কতা।

সতর্কতার উদাহরণ

নিম্নোক্ত কোডটি একটি বর্ধিত পদ্ধতির সাথে একটি ক্লাসকে সংজ্ঞায়িত করে এবং একটি পদ্ধতিকে উল্লিখিত ক্লাসের ভবিষ্যতের সংস্করণে অবমূল্যায়ন করার জন্য নির্ধারিত হয়৷

# warningexample.pyimport warningsclas WarnExample:def __init__(self):self.text ="Warning"def method1(self):warnings.warn( "method1 অবহেলিত, পরিবর্তে new_method ব্যবহার করুন", DeprecationWarning ) প্রিন্ট ('পদ্ধতি1' , len(self.text)) def method2(self):warnings.warn( "পদ্ধতি2 সংস্করণ 2 তে অবহেলিত হবে, পরিবর্তে new_method ব্যবহার করুন", PendingDeprecationWarning ) প্রিন্ট ('method2', len(self.text)) def new_method( self):প্রিন্ট ('নতুন পদ্ধতি', লেন(self.text)) if __name__=='__main__':e =WarnExample() e.method1() e.method2() e.new_method()

যদি উপরের স্ক্রিপ্টটি কমান্ড প্রম্পট থেকে

হিসাবে কার্যকর করা হয়
E:\python37>python warningexample.py

টার্মিনালে কোন সতর্কতা বার্তা প্রদর্শিত হয় না। এর জন্য আপনাকে নিচের মত _Wd সুইচ ব্যবহার করতে হবে

E:\python37>python -Wd warningexample.pywarningexample.py:10:DeprecationWarning:method1 অবচয় করা হয়েছে, এর পরিবর্তে new_method ব্যবহার করুনDeprecationWarningmethod1 7warningexample.py:19:PendingDeprecationWarning:এর পরিবর্তে PendingDeprecationWarning:এর পরিবর্তে পদ্ধতি2 প্রে্রেকেশন পদ্ধতি2 ব্যবহার করা হবে। 

একইভাবে, ইন্টারেক্টিভ সেশন অনুসরণ করলেও কোনো সতর্কবার্তা দেখা যায় না।

E:\python37>python>>> warningexample import WarnExample থেকে>>> e =WarnExample()>>> e.method1()method1 7>>> e.method2()method2 7>>> e.new_method ()নতুন পদ্ধতি 7

আপনাকে –Wd

দিয়ে পাইথন সেশন শুরু করতে হবে
E:\python37>python -Wd>>> warningexample import WarnExample থেকে>>> e=WarnExample()>>> e.method1()E:\python37\warningexample.py:10:DeprecationWarning:method1 বাতিল করা হয়েছে , এর পরিবর্তে new_method ব্যবহার করুন DeprecationWarningmethod1 7>>> e.method2()E:\python37\warningexample.py:17:PendingDeprecationWarning:method2 সংস্করণ 2-এ অবচয় করা হবে, এর পরিবর্তে new_method ব্যবহার করুনPendingDeprecationWarningmethod2 e_method> 7w> /প্রে> 

সতর্কতা ফিল্টার

সতর্কতা ফিল্টার সতর্কতা উপেক্ষা করা, প্রদর্শিত বা ত্রুটিতে পরিণত হয়েছে কিনা তা নিয়ন্ত্রণ করে (একটি ব্যতিক্রম উত্থাপন)।

ক্রিয়া
অর্থ
ত্রুটি৷
সতর্কতাটিকে একটি ব্যতিক্রমে পরিণত করুন৷
উপেক্ষা করুন
সতর্কতা পরিত্যাগ করুন৷
সর্বদা
সর্বদা একটি সতর্কতা নির্গত করুন৷
ডিফল্ট
প্রথমবার সতর্কতাটি প্রতিটি অবস্থান থেকে তৈরি হলে তা মুদ্রণ করুন৷
মডিউল৷
প্রত্যেক মডিউল থেকে প্রথমবার সতর্কতা তৈরি হলে তা মুদ্রণ করুন।
একবার
প্রথমবার তৈরি হলে সতর্কতাটি মুদ্রণ করুন৷

নিম্নলিখিত ইন্টারেক্টিভ অধিবেশন simplefilter() ফাংশন দ্বারা ডিফল্ট ফিল্টার সেট করে।

E:\python37>python>>> import warnings>>> warnings.simplefilter('default')>>> warningexample import WarnExample থেকে>>> e=WarnExample()>>> e.method1()E:\python37\warningexample.py:10:DeprecationWarning:method1 অবচয় করা হয়েছে, এর পরিবর্তে new_method ব্যবহার করুনDeprecationWarningmethod1 7>>> e.method2()E:\python37\warningexample.py:17:PendingDeprecationWarning:মেথড 2-এ নতুন পদ্ধতি ব্যবহার করা হবে। পরিবর্তেPendingDeprecationWarningmethod2 7>>> e.new_method()নতুন পদ্ধতি 7

সাময়িকভাবে সতর্কতা দমন করার জন্য, সরল ফিল্টার সেট করুন 'উপেক্ষা করুন'।

সতর্কতা
  1. issuperset() পাইথনে

  2. POSIX স্টাইল TTY নিয়ন্ত্রণ পাইথন ব্যবহার করে

  3. পাইথন নেমস্পেসড প্যাকেজগুলির সাথে প্রোগ্রামগুলি কীভাবে বিকাশ করবেন?

  4. কিভাবে Python এ FloatingPointError ব্যতিক্রম ধরবেন?