পাইথন ধৰণ পৰীক্ষক তুলনা: খালী ধাৰক অনুমান
মন্তব্য
Mewayz Team
Editorial Team
খালী ধাৰকসমূহে পাইথন ধৰণ পৰীক্ষকসমূহ কিয় ভংগ কৰে — আৰু আপুনি ইয়াৰ বিষয়ে কি কৰিব পাৰে
পাইথনৰ ক্ৰমান্বয়ে টাইপিং ব্যৱস্থাপ্ৰণালী যথেষ্ট পৰিপক্ক হৈছে কাৰণ PEP 484 এ ২০১৫ চনত ধৰণৰ ইংগিত প্ৰৱৰ্তন কৰে। আজি, লাখ লাখ ডেভেলপাৰে উৎপাদনত আঘাত কৰাৰ আগতে বাগ ধৰিবলৈ ষ্টেটিক ধৰণ পৰীক্ষকৰ ওপৰত নিৰ্ভৰ কৰে। কিন্তু টাইপ চিষ্টেমৰ এটা সূক্ষ্ম, হতাশাজনক চুক আছে যিয়ে এতিয়াও অভিজ্ঞ অভিযন্তাসকলকো ট্ৰিপ আপ কৰে: খালী পাত্ৰ এটাত কি টাইপ থাকে? যেতিয়া আপুনি টীকা অবিহনে x = [] লিখে, আপোনাৰ ধৰণ পৰীক্ষকে অনুমান কৰিব লাগিব — আৰু বিভিন্ন পৰীক্ষকে বেলেগ ধৰণে অনুমান কৰে। এই বিচ্ছিন্নতাই বৃহৎ ক'ডবেইচসমূহ ৰক্ষণাবেক্ষণ কৰা দলসমূহৰ বাবে প্ৰকৃত সমস্যা সৃষ্টি কৰে, য'ত ধৰণ পৰীক্ষকসমূহ সলনি কৰা বা সংযুক্ত কৰাটোৱে ৰাতিটোৰ ভিতৰতে শ শ অপ্ৰত্যাশিত ভুলৰ সৃষ্টি কৰিব পাৰে।
এই প্ৰবন্ধটোৱে চাৰিটা প্ৰধান পাইথন ধৰণ পৰীক্ষকে — mypy, pyright, pytype, আৰু pyre — খালী পাত্ৰ অনুমান কেনেকৈ নিয়ন্ত্ৰণ কৰে, সিহঁতে কিয় একমত নহয়, আৰু আপোনাৰ সঁজুলিৰ পছন্দ নিৰ্বিশেষে আপুনি ধৰণ-সুৰক্ষিত পাইথন লিখিবলৈ কি ব্যৱহাৰিক কৌশল গ্ৰহণ কৰিব পাৰে তাক ভাঙি দিয়ে।
মূল সমস্যা: খালী পাত্ৰসমূহ সহজাতভাৱে অস্পষ্ট
পাইথনৰ এই নিৰাপদ শাৰীটো বিবেচনা কৰক: results = [] । ফলাফল এটা তালিকা[int] নেকি? এটা তালিকা[str]? এটা তালিকা[dict[str, যিকোনো]]? অতিৰিক্ত প্ৰসংগ অবিহনে সঁচাকৈয়ে জনা কোনো উপায় নাই। পাইথন চলনসময়ে কোনো গুৰুত্ব নিদিয়ে — তালিকাসমূহ স্বভাৱতে বৈষম্যপূৰ্ণ — কিন্তু স্থিতিশীল ধৰণ পৰীক্ষকসকলে তেওঁলোকৰ কাম কৰিবলে প্ৰতিটো চলকলৈ এটা কংক্ৰিট ধৰণ নিযুক্ত কৰিব লাগিব। ই পাইথনৰ গতিশীল নমনীয়তা আৰু স্থিতিশীল বিশ্লেষণে প্ৰদান কৰিবলৈ চেষ্টা কৰা নিশ্চয়তাৰ মাজত এটা মৌলিক উত্তেজনাৰ সৃষ্টি কৰে।
সমস্যাটো অভিধান আৰু গোটৰ সৈতে যৌগিক হয়। এটা খালী {} আচলতে এটা dict হিচাপে বিশ্লেষণ কৰা হয়, এটা set হিচাপে নহয়, যিয়ে ধৰণ-স্তৰৰ অস্পষ্টতাৰ ওপৰত বাক্য গঠনৰ অস্পষ্টতা যোগ কৰে। আৰু নেষ্টেড ধাৰকসমূহে — ভাবিব defaultdict(list) বা results = {k: [] keys ত k ৰ বাবে} — অনুমান ইঞ্জিনসমূহক সিহঁতৰ সীমালৈ ঠেলি দিয়ে। প্ৰতিটো ধৰণ পৰীক্ষকে নিজস্ব হিউৰিষ্টিক বিকশিত কৰিছে, আৰু পাৰ্থক্যসমূহ বেছিভাগ ডেভেলপাৰে উপলব্ধি কৰাতকৈ অধিক উল্লেখযোগ্য।
প্ৰকৃত কাৰ্য্যভাৰ প্ৰচেছ কৰা উৎপাদন ব্যৱস্থাপ্ৰণালীত — সেয়া গ্ৰাহকৰ ৰেকৰ্ডসমূহ নিয়ন্ত্ৰণ কৰা এটা CRM হওক, শাৰী বস্তু সৃষ্টি কৰা এটা চালান মডিউল হওক, বা মেট্ৰিক্স সংগ্ৰহ কৰা এটা বিশ্লেষণ পাইপলাইন হওক — খালী ধাৰকসমূহ অহৰহ আৰম্ভণি আৰ্হি হিচাপে দেখা দিয়ে। তেওঁলোকৰ প্ৰকাৰ ভুলকৈ পোৱাটোৱে কেৱল লিণ্টাৰ সতৰ্কবাণীৰ সৃষ্টি নকৰে; ই প্ৰকৃত বাগসমূহ মাস্ক কৰিব পাৰে যি চলনসময়লৈ পিছলি যায়।
Mypy: অন্তৰ্নিহিত যিকোনো
ৰ সৈতে বিলম্বিত অনুমানMypy, আটাইতকৈ পুৰণি আৰু ব্যাপকভাৱে গ্ৰহণ কৰা পাইথন ধৰণ পৰীক্ষক, খালী পাত্ৰসমূহৰ বাবে তুলনামূলকভাৱে নম্ৰ পদ্ধতি গ্ৰহণ কৰে। যেতিয়া ই ফাংচন পৰিসৰত x = []ৰ সন্মুখীন হয়, ই ধৰণৰ সিদ্ধান্ত স্থগিত ৰাখিবলৈ চেষ্টা কৰে আৰু পৰৱৰ্তী ব্যৱহাৰৰ পৰা উপাদানৰ ধৰণ অনুমান কৰে। যদি আপুনি x = [] আৰু তাৰ পিছত x.append(42) লিখে, mypy এ list[int] অনুমান কৰিব। এই "যোগদান" কৌশলে পোনপটীয়া ক্ষেত্ৰসমূহৰ বাবে আচৰিত ধৰণে ভাল কাম কৰে য'ত পাত্ৰটো একে পৰিসৰৰ ভিতৰত জনবহুল কৰা হয়।
কিন্তু, প্ৰসংগ আৰু কঠোৰতা সংহতিৰ ওপৰত নিৰ্ভৰ কৰি mypy ৰ আচৰণ নাটকীয়ভাৱে সলনি হয়। মডিউল পৰিসৰত (শীৰ্ষ-স্তৰৰ ক'ড), বা যেতিয়া ধাৰকক জনবহুল কৰাৰ আগতে অন্য ফলনলৈ প্ৰেৰণ কৰা হয়, mypy প্ৰায়ে list[Any] লৈ উভতি যায়। --strict ফ্লেগৰ অন্তৰ্গত, ই এটা ভুল ট্ৰিগাৰ কৰে, কিন্তু অবিকল্পিত ধৰণত ই নিৰৱে পাৰ হয়। ইয়াৰ অৰ্থ হৈছে কঠোৰ ধৰণ অবিহনে mypy চলোৱা দলসমূহে ডজন ডজন অন্তৰ্নিহিতভাৱে-টাইপ কৰা পাত্ৰ সংগ্ৰহ কৰিব পাৰে যি ধৰণ ব্যৱস্থাপ্ৰণালীৰ পৰা পলায়ন হেচ হিচাপে কাম কৰে, ইয়াৰ উদ্দেশ্যক পৰাস্ত কৰে।
এটা বিশেষভাৱে সূক্ষ্ম আচৰণ: 0.990 ৰ আগৰ mypy সংস্কৰণসমূহে কেতিয়াবা list[Unknown] আভ্যন্তৰীণভাৱে অনুমান কৰিব আৰু তাৰ পিছত নিযুক্তিৰ সময়ত list[Any] লৈ বহল কৰিব। ০.৯৯০ চনৰ পিছত অনুমানটো কঠোৰ কৰা হ’ল, কিন্তু পৰিৱৰ্তনে বাস্তৱ জগতৰ ক’ডবেছৰ আচৰিত সংখ্যক ভাঙি পেলালে যিবোৰে গম নোপোৱাকৈয়ে অনুমোদিত আচৰণৰ ওপৰত নিৰ্ভৰ কৰি আহিছিল। এইটো এটা পুনৰাবৃত্তিমূলক থিম — খালী ধাৰক অনুমানলৈ পৰিবৰ্তনসমূহ আটাইতকৈ বিঘ্নিতকাৰী ধৰণ পৰীক্ষক আপডেইটসমূহৰ ভিতৰত কাৰণ আৰ্হিসমূহ ইমানেই সৰ্বব্যাপী।
পাইৰাইট: কঠোৰ অনুমান আৰু "অজ্ঞাত" ধৰণ
মাইক্ৰ'ছফ্টৰ দ্বাৰা বিকশিত আৰু ভিএছ ক'ডত পাইলান্সক শক্তিশালী কৰা পাইৰাইটে মৌলিকভাৱে পৃথক দাৰ্শনিক স্থিতি গ্ৰহণ কৰে। নিৰৱে যিকোনোলৈ ঘূৰি যোৱাৰ পৰিৱৰ্তে, পাইৰাইটে অজ্ঞাত (এটা ধৰণ যি এতিয়াও নিৰ্ধাৰণ কৰা হোৱা নাই) আৰু যিকোনো (ধৰণ পৰীক্ষাৰ এটা স্পষ্ট অপ্ট-আউট)ৰ মাজত পাৰ্থক্য কৰে। যেতিয়া আপুনি pyright ৰ কঠোৰ ধৰণত x = [] লিখে, ই list[অজ্ঞাত] অনুমান কৰে আৰু এটা নিদানৰ প্ৰতিবেদন দিয়ে, আপোনাক এটা টীকা প্ৰদান কৰিবলৈ বাধ্য কৰে।
পাইৰাইট পৰিসৰৰ ভিতৰত সংকুচিতৰ ক্ষেত্ৰতো অধিক আক্ৰমণাত্মক। যদি আপুনি লিখে:
- x = [] তাৰ পিছত x.append("hello") — পাইৰাইটে তালিকা[str] অনুমান কৰে
- x = [] তাৰ পিছত x.append(1) তাৰ পিছত x.append("hello") — পাইৰাইটে list[int | str] ৰ দ্বাৰা
- x = [] পোনপটীয়াকৈ list[int] আশা কৰা এটা ফাংচনলৈ পাছ কৰা হৈছে — pyright এ কল-ছাইট প্ৰসংগৰ পৰা list[int] অনুমান কৰে
- x = [] এটা উভতি অহা ধৰণৰ টীকা অবিহনে এটা ফাংচনৰ পৰা ঘূৰাই দিয়া হৈছে — pyright এ অনুমান কৰাৰ পৰিৱৰ্তে এটা ভুলৰ প্ৰতিবেদন দিয়ে
এই দ্বিমুখী অনুমানে (কল চাইটসমূহৰ পৰা পৰৱৰ্তী ব্যৱহাৰ আৰু প্ৰত্যাশিত ধৰণ দুয়োটা ব্যৱহাৰ কৰি) খালী পাত্ৰসমূহৰ বাবে mypy তকৈ pyright ক উল্লেখযোগ্যভাৱে অধিক নিখুঁত কৰে। ট্ৰেডঅফ হৈছে verbosity: pyright ৰ কঠোৰ ধৰণে mypy ৰ কঠোৰ ধৰণৰ তুলনাত এটা সাধাৰণ টীকাবিহীন ক'ডবেছত প্ৰায় 30-40% অধিক সমস্যা ফ্লেগ কৰে, কেইবাটাও মুক্ত-উৎস প্ৰব্ৰজন প্ৰতিবেদনৰ পৰা বিশ্লেষণ অনুসৰি। জটিল বেকএণ্ড চিস্টেমসমূহ নিৰ্মাণ কৰা দলসমূহৰ বাবে — ধৰক, CRM, পে-ৰোল, আৰু বিশ্লেষণসমূহ সামৰি লোৱা 207 টা আন্তঃসংযোগী মডিউলসমূহ পৰিচালনা কৰা এটা প্লেটফৰ্ম — pyright ৰ কঠোৰতাই সূক্ষ্ম আন্তঃপৃষ্ঠৰ মিল নাথাকে যি নম্ৰ অনুমানে হেৰুৱাব।
পাইটাইপ আৰু পাইৰ: কম ভ্ৰমণ কৰা পথ
গুগলৰ পাইটাইপে হয়তো আটাইতকৈ প্ৰাগমেটিক পদ্ধতি গ্ৰহণ কৰে। টীকাকৰণৰ প্ৰয়োজন হোৱাৰ পৰিবৰ্তে বা যিকোনোলৈ ঘূৰি যোৱাৰ পৰিবৰ্তে, pytype এ সম্পূৰ্ণ-প্ৰগ্ৰাম বিশ্লেষণ ব্যৱহাৰ কৰে এটা ধাৰক ফলন সীমাৰ ওপৰেৰে কেনেকৈ ব্যৱহাৰ কৰা হয় অনুসৰণ কৰিবলে। যদি আপুনি এটা ফাংচনত এটা খালী তালিকা সৃষ্টি কৰে আৰু ইয়াক আন এটালৈ প্ৰেৰণ কৰে যি পূৰ্ণসংখ্যা সংযোজন কৰে, pytype এ প্ৰায়ে list[int] অনুমান কৰিব পাৰে একেবাৰে কোনো টীকা অবিহনে । এই ক্ৰছ-ফাংচন অনুমান গণনামূলকভাৱে ব্যয়বহুল — পাইটাইপ বৃহৎ ক'ডবেইচত মাইপি বা পাইৰাইটতকৈ যথেষ্ট লেহেমীয়া — কিন্তু ই টীকাবিহীন ক'ডত কম মিছা ধনাত্মক উৎপন্ন কৰে।
পাইটাইপে খালী পাত্ৰৰ বাবে "আংশিক ধৰণ"ৰ ধাৰণাও প্ৰৱৰ্তন কৰে। এটা সদ্য সৃষ্টি কৰা [] এ এটা আংশিক ধৰণ পায় যি পৰীক্ষকে অধিক ব্যৱহাৰৰ সন্মুখীন হোৱাৰ লগে লগে ক্ৰমান্বয়ে পৰিশোধন কৰা হয়। এইটো ধাৰণাগতভাৱে মাৰ্জিত কিন্তু বিভ্ৰান্তিকৰ ভুল বাৰ্তা সৃষ্টি কৰিব পাৰে যেতিয়া আংশিক ধৰণ সম্পূৰ্ণৰূপে সমাধান কৰিব নোৱাৰি, যেনে যেতিয়া এটা খালী পাত্ৰ কেতিয়াও জনবহুল নোহোৱাকৈ কেইবাটাও কাৰ্য্যৰ মাজেৰে বৈ যায়।
💡 DID YOU KNOW?
Mewayz replaces 8+ business tools in one platform
CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.
Start Free →মেটাৰ পাইৰে, ইফালে, mypy ৰ আচৰণৰ ওচৰত হেউ কৰে কিন্তু কঠিন অবিকল্পিতসমূহৰ সৈতে। Pyre এ x = [] ক list[unknown] হিচাপে গণ্য কৰে আৰু বেছিভাগ প্ৰসংগত টীকাকৰণৰ প্ৰয়োজন। pyre এ নিজকে য'ত পৃথক কৰে সেয়া হৈছে kwargs হিচাপে ব্যৱহৃত খালী অভিধানৰ আক্ষৰিক শব্দসমূহৰ নিয়ন্ত্ৰণত — ৱেব ফ্ৰেমৱৰ্কসমূহত এটা সাধাৰণ আৰ্হি। পাইৰৰ বিশেষ-ক্ষেত্ৰৰ যুক্তি আছে মূলশব্দৰ যুক্তি প্ৰসংগসমূহৰ পৰা অভিধানৰ ধৰণসমূহ অনুমান কৰিবলে, কাঠামো-গধুৰ ক'ডবেইচসমূহত টীকাকৰণৰ বোজা হ্ৰাস কৰি। এইটো লক্ষ্য কৰিলে যে বেছিভাগ আধুনিক ৱেব এপ্লিকেচনত বিন্যাস আৰু অনুৰোধ নিয়ন্ত্ৰণৰ বাবে অভিধান আনপেকিঙৰ গধুৰ ব্যৱহাৰ জড়িত হৈ থাকে, এই প্ৰাগমেটিজমে লভ্যাংশ দিয়ে।
বাস্তৱ-জগতৰ প্ৰভাৱ: যেতিয়া অনুমান বিচ্ছিন্নতাই কামোৰ দিয়ে
ধৰণ পৰীক্ষকৰ মাজৰ পাৰ্থক্যসমূহ একাডেমিক যেন লাগিব পাৰে যেতিয়ালৈকে আপুনি সিহতক এটা উৎপাদন ক'ডবেছত অনুভৱ নকৰে। ব্যৱসায়িক এপ্লিকেচনসমূহত এটা সাধাৰণ আৰ্হি বিবেচনা কৰক: এটা তথ্য গঠন আৰম্ভ কৰা যি চৰ্তসাপেক্ষভাৱে জনবহুল হয়।
<ব্লককোট>আটাইতকৈ বিপজ্জনক খালী পাত্ৰসমূহ সেইবোৰ ধৰণ পৰীক্ষক ফ্লেগ নহয় — সিহঁত সেইবোৰ যিবোৰে এটা অনুমান কৰা যিকোনো ধৰণৰ সৈতে নিৰৱে পাছ কৰে, এটা ডাউনষ্ট্ৰিম ফাংচন এটা TypeError ৰ সৈতে চলনৰ সময়ত ক্ৰেচ নোহোৱালৈকে অসামঞ্জস্যপূৰ্ণ তথ্য সতৰ্কবাণী অবিহনে জমা হোৱাৰ অনুমতি দিয়ে যিটো ইয়াৰ উৎপত্তিলৈ উভতি যোৱাটো প্ৰায় অসম্ভৱ।
ৰ দ্বাৰাএটা সুনিৰ্দিষ্ট উদাহৰণ: এটা ফিনটেক ষ্টাৰ্টআপৰ এটা দলে এটা উৎপাদন সমস্যা ডিবাগিং কৰি তিনি দিন কটোৱাৰ ৰিপৰ্ট দিছে য'ত এটা খালী তালিকা, এটা পেমেণ্ট প্ৰচেছিং ফাংচনত আৰম্ভ কৰা, mypy দ্বাৰা list[Any] হিচাপে অনুমান কৰা হৈছিল। তালিকাখনত মুদ্ৰাৰ পৰিমাণৰ বাবে দশমিক বস্তু থাকিব লাগিছিল, কিন্তু এটা ক'ড পথে ইয়াৰ পৰিবৰ্তে float মানসমূহ সংযোজন কৰিছিল। মাইপিৰ নম্ৰ অনুমানে মনে মনে অনুমতি দিলে। বাগটো কেৱল তেতিয়াহে উত্থাপন হৈছিল যেতিয়া ফ্ল'ট গাণিতিকত ৰাউণ্ডিং ভুলে ১২,০০০ চালানৰ এটা বেচত $০.০১ অমিলৰ সৃষ্টি কৰিছিল। যদি তেওঁলোকে pyright ক কঠোৰ ধৰণত ব্যৱহাৰ কৰিলেহেঁতেন, বা খালী তালিকাখনক list[Decimal] হিচাপে টীকা কৰিলেহেঁতেন, বাগটো বিকাশৰ সময়ত ধৰা পৰিলহেঁতেন।
মেৱাইজত, য'ত প্লেটফৰ্মে ১৩৮,০০০+ ব্যৱহাৰকাৰী একাউণ্টত চালান, পে-ৰোল গণনা, আৰু বিত্তীয় বিশ্লেষণ প্ৰক্ৰিয়া কৰে, এই ধৰণৰ প্ৰকাৰ-সুৰক্ষাৰ ব্যৱধান তাত্ত্বিক নহয় — ই হৈছে সঠিক পে-ৰোল চলোৱা আৰু ব্যয়বহুল পুনৰ গণনাৰ মাজৰ পাৰ্থক্য। পাত্ৰ আৰম্ভণিৰ চাৰিওফালে কঠোৰ টাইপিং অনুশাসন সেই "বিৰক্তিকৰ" অভিযান্ত্ৰিক পদ্ধতিসমূহৰ এটা যিয়ে উত্তেজনাপূৰ্ণ উৎপাদন পৰিঘটনাসমূহ প্ৰতিৰোধ কৰে।
ৰক্ষামূলক পাত্ৰ আৰম্ভণিৰ বাবে উত্তম পদ্ধতিসমূহ
আপোনাৰ দলে যি ধৰণৰ পৰীক্ষক ব্যৱহাৰ নকৰে, খালী পাত্ৰৰ অস্পষ্টতা সম্পূৰ্ণৰূপে আঁতৰাবলৈ সুনিৰ্দিষ্ট কৌশল আছে। লক্ষ্য হৈছে খালী পাত্ৰসমূহৰ বাবে কেতিয়াও অনুমানৰ ওপৰত নিৰ্ভৰ নকৰা — ধৰণটো স্পষ্ট কৰক যাতে আপোনাৰ ক'ড সকলো পৰীক্ষকৰ মাজেৰে পৰ্টেবল হয় আৰু সংস্কৰণসমূহৰ মাজত অনুমান আচৰণ পৰিবৰ্তনৰ পৰা মুক্ত হয়।
- সদায় খালী ধাৰক চলকসমূহ টীকা কৰক। results লিখক: list[int] = [] results = [] ৰ পৰিবৰ্তে। সঞ্চয় কৰা ডিবাগিং সময়ৰ তুলনাত সৰু বাৰ্বোচিটি খৰচ নগণ্য। এই একক পদ্ধতিয়ে খালী পাত্ৰৰ অনুমানৰ সমস্যাৰ প্ৰায় ৮০% আঁতৰাই পেলায়।
- জটিল ধাৰকৰ বাবে ফেক্টৰী ফাংচনসমূহ ব্যৱহাৰ কৰক। cache = {} ৰ পৰিবৰ্তে, def make_cache() -> dict[str, list[UserRecord]] ৰ দৰে এটা ফাংচন লিখক: {} ঘূৰাই দিয়ক। ৰিটাৰ্ণ ধৰণৰ টীকাকৰণে উদ্দেশ্যপ্ৰণোদিত ধৰণক নিৰ্দ্বিধায় আৰু স্ব-নথিভুক্ত কৰে।
- অ-তুচ্ছ ধৰণসমূহৰ বাবে আক্ষৰিকতকৈ টাইপ কৰা নিৰ্মাতাসমূহ পছন্দ কৰক। সংহতি বুজাবুজি অনুমানৰ ওপৰত নিৰ্ভৰ কৰাৰ পৰিৱৰ্তে বস্তুসমূহ লিখক: set[int] = set()। defaultdict আৰু Counter ৰ বাবে, সদায় ধৰণ প্ৰাচল প্ৰদান কৰক: counts: Counter[str] = Counter().
- নতুন ক'ডৰ বাবে আপোনাৰ ধৰণ পৰীক্ষকৰ কঠোৰ ধৰণ বিন্যাস কৰক । mypy আৰু pyright দুয়োটাই প্ৰতি নথিপত্ৰ বা প্ৰতি পঞ্জিকা বিন্যাস সমৰ্থন কৰে । ক্ৰমান্বয়ে লিগেচি ক'ড প্ৰব্ৰজন কৰাৰ সময়ত নতুন মডিউলসমূহত কঠোৰ পৰীক্ষা সামৰ্থবান কৰক। ইয়াৰ ফলত নতুন অন্তৰ্নিহিতভাৱে-টাইপ কৰা পাত্ৰৰ সঞ্চয় ৰোধ হয়।
- আপোনাৰ CI পাইপলাইনত ধৰণ পৰীক্ষকৰ তুলনা যোগ কৰক। আপোনাৰ ক'ডবেছত mypy আৰু pyright দুয়োটা চলালে অনুমান বিচ্ছিন্নতা আগতীয়াকৈ ধৰা হয়। যদি এটা আৰ্হি এটা পৰীক্ষক পাছ কৰে কিন্তু আন এটা বিফল হয়, ই এটা সংকেত যে ধৰণটো যথেষ্ট স্পষ্ট নহয়।
বৃহৎ ছবি: এটা দলীয় অনুশীলন হিচাপে পৰীক্ষা কৰা
খালী পাত্ৰ অনুমান শেষত পাইথনৰ ধৰণ ব্যৱস্থাপ্ৰণালীত এটা বৃহৎ প্ৰত্যাহ্বানৰ এটা অণুবিশ্ব: সুবিধা আৰু সুৰক্ষাৰ মাজৰ উত্তেজনা। পাইথনৰ "আমি সকলোৱে সন্মতি দিয়া প্ৰাপ্তবয়স্ক" দৰ্শনে প্ৰ'ট'টাইপিং আৰু স্ক্ৰিপ্টৰ বাবে সুন্দৰভাৱে কাম কৰে, কিন্তু হাজাৰ হাজাৰ ব্যৱহাৰকাৰীক সেৱা আগবঢ়োৱা উৎপাদন ব্যৱস্থাপ্ৰণালীসমূহক অধিক শক্তিশালী নিশ্চয়তাৰ প্ৰয়োজন। চাৰিটা প্ৰধান ধৰণ পৰীক্ষকৰ [] ধৰণৰ দৰে মৌলিক কিবা এটাৰ ওপৰত মতানৈক্য থকাটোৱে পাইথন টাইপিং পৰিৱেশতন্ত্ৰ এতিয়াও পৰিপক্ক হৈ আছে বুলি আঙুলিয়াই দিয়ে।
জটিল প্লেটফৰ্মসমূহ নিৰ্মাণ কৰা অভিযান্ত্ৰিক দলসমূহৰ বাবে — আপুনি মুষ্টিমেয় মাইক্ৰ'চাৰ্ভিচসমূহ পৰিচালনা কৰা হওক বা Mewayz ৰ ব্যৱসায়িক অপাৰেটিং ছিষ্টেমৰ দৰে শ শ আন্তঃসংযোগী মডিউলৰ সৈতে এটা সংহত ব্যৱস্থাপ্ৰণালী — ব্যৱহাৰিক পৰামৰ্শটো পোনপটীয়া: খালী ধাৰকসমূহৰ বাবে অনুমানৰ ওপৰত নিৰ্ভৰ নকৰিব, এটা ধৰণ পৰীক্ষক বাছক আৰু ইয়াক কঠোৰভাৱে বিন্যাস কৰক, আৰু ধৰণ টীকাকৰণসমূহক দস্তাবেজ হিচাপে গণ্য কৰক যি হ'ব মেচিন-পৰীক্ষাযোগ্য। [] ৰ পৰিবৰ্তে list[Invoice] লিখিবলৈ খৰচ কৰা পাঁচ মিনিটে আপোনাৰ ক'ডবেছ স্কেল হ'লে আপোনাক ডিবাগিঙৰ ঘণ্টা সংৰক্ষণ কৰিব।
যেতিয়া PEP 696 (অবিকল্পিত ধৰণ প্ৰাচলসমূহ) আৰু PEP 695 (ধৰণ প্ৰাচল বাক্যবিন্যাস) নতুন পাইথন সংস্কৰণসমূহত লেণ্ড কৰি থাকিব, স্পষ্ট টাইপিঙৰ এৰগ'নমিক্স উন্নত হৈ থাকিব। "টীকাযুক্ত" আৰু "টীকাবিহীন" পাইথনৰ মাজৰ ব্যৱধান সংকুচিত হ'ব। কিন্তু সেইদিনালৈকে, স্পষ্ট পাত্ৰৰ ধৰণ পাইথন ডেভেলপাৰৰ সঁজুলিকিটত সৰ্বোচ্চ-ROI অনুশীলনৰ এটা হৈয়েই থাকে — এটা সৰু অনুশাসন যিয়ে প্ৰতিটো মডিউল, প্ৰতিটো স্প্ৰিণ্ট, আৰু প্ৰতিটো উৎপাদন মোতায়েনত চক্ৰীয় সুত দিয়ে।
আপোনাৰ ব্যৱসায়িক অপাৰেটিং চিষ্টেম আজিয়েই নিৰ্মাণ কৰক
ফ্ৰীলান্সাৰৰ পৰা এজেন্সীলৈকে, Mewayz এ 207 টা সংহত মডিউলৰ সৈতে 138,000+ ব্যৱসায়ক শক্তি প্ৰদান কৰে। বিনামূলীয়াকৈ আৰম্ভ কৰক, বৃদ্ধি হ'লে উন্নয়ন কৰক।
বিনামূলীয়া একাউণ্ট সৃষ্টি কৰক →সঘনাই সোধা প্ৰশ্ন
টাইপ পৰীক্ষকসকলে খালী তালিকাৰ ধৰণৰ ওপৰত কিয় একমত হ'ব নোৱাৰে?
যেতিয়া আপুনি `x = []` লিখে, ধৰণ পৰীক্ষকে স্পষ্ট ইংগিত অবিহনে এটা ধৰণ অনুমান কৰিব লাগিব। বিভিন্ন পৰীক্ষকে বিভিন্ন কৌশল ব্যৱহাৰ কৰে: কিছুমানে `list[Any]` (যিকোনো বস্তুৰ এটা তালিকা) অনুমান কৰে, আনহাতে আন কিছুমানে `list[None]` ৰ দৰে অধিক নিৰ্দিষ্ট কিন্তু ভুল ধৰণ অনুমান কৰিব পাৰে। এই সাৰ্বজনীন মানদণ্ডৰ অভাৱৰ বাবেই তেওঁলোকৰ মতানৈক্য আছে। একাধিক পৰীক্ষক ব্যৱহাৰ কৰা প্ৰকল্পৰ বাবে, এই অসামঞ্জস্যতা এটা ডাঙৰ মূৰৰ বিষ হ'ব পাৰে, এটা সঁজুলিত বিশ্লেষণ ভাঙি যি আন এটা সঁজুলিত পাছ কৰে।
খালী পাত্ৰৰ ভুল সমাধান কৰাৰ আটাইতকৈ সহজ উপায় কি?
আটাইতকৈ সহজ সমাধান হ'ল এটা স্পষ্ট ধৰণৰ টীকা প্ৰদান কৰা। `my_list = []` ৰ পৰিবৰ্তে, উদ্দেশ্যপ্ৰণোদিত ধৰণ স্পষ্টভাৱে ঘোষণা কৰিবলৈ `my_list: list[str] = []` লিখক। ই ধৰণ পৰীক্ষকৰ বাবে সকলো অস্পষ্টতা আঁতৰায়, বিভিন্ন সঁজুলি যেনে mypy, Pyright, আৰু Pyre ৰ মাজেৰে সুসংগত আচৰণ সুনিশ্চিত কৰে। অনুমান ভুল প্ৰতিৰোধ কৰিবলে সকলো খালী ধাৰক আৰম্ভণিৰ বাবে এই অভ্যাস উপদেশিত।
শ্ৰেণী সংজ্ঞাৰ ভিতৰত খালী পাত্ৰসমূহ কেনেকৈ নিয়ন্ত্ৰণ কৰিম?
এয়া এটা সাধাৰণ সমস্যা কাৰণ শ্ৰেণীসমূহৰ ভিতৰত টীকাকৰণসমূহৰ বাবে বিশেষ নিয়ন্ত্ৰণৰ প্ৰয়োজন। আপুনি `from __future__ import annotations` আমদানি বা এটা `ClassVar` টীকা ব্যৱহাৰ কৰিব লাগিব যদি তালিকাখন এটা শ্ৰেণী বৈশিষ্ট্য হ'ব বুলি উদ্দেশ্য কৰা হৈছে। উদাহৰণস্বৰূপে, `শ্ৰেণী MyClass: my_list: ClassVar[তালিকা[str]] = []`। ইয়াৰ অবিহনে, ধৰণ পৰীক্ষকে ধৰণটো সঠিকভাৱে অনুমান কৰিবলৈ সংগ্ৰাম কৰিব পাৰে, যাৰ ফলত ভুল হ'ব পাৰে।
বৃহৎ প্ৰকল্পসমূহত এই টাইপিং সমস্যাসমূহ পৰিচালনা কৰাত সহায় কৰিবলে সঁজুলি আছেনে?
হয়, Pyright ৰ দৰে উন্নত ধৰণ পৰীক্ষক (যি VS ক'ডত Pylance ক শক্তি প্ৰদান কৰে) জটিল অনুমান নিয়ন্ত্ৰণ কৰাত বিশেষভাৱে ভাল। বৃহৎ ক'ডবেছসমূহৰ বাবে, Mewayz ৰ দৰে প্লেটফৰ্মসমূহে ($19/মাহৰ বাবে 207 টা বিশ্লেষণ মডিউল প্ৰদান কৰে) গভীৰ, অধিক সামঞ্জস্যপূৰ্ণ ধৰণ পৰীক্ষা প্ৰদান কৰিব পাৰে আৰু আপোনাৰ সমগ্ৰ দলত টীকাকৰণ অনুশীলনসমূহ বলবৎ কৰাত সহায় কৰিব পাৰে, প্ৰবন্ধত আলোচনা কৰা অসামঞ্জস্যতাসমূহ কম কৰি।
Try Mewayz Free
All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.
Get more articles like this
Weekly business tips and product updates. Free forever.
You're subscribed!
Start managing your business smarter today
Join 30,000+ businesses. Free forever plan · No credit card required.
Ready to put this into practice?
Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.
Start Free Trial →Related articles
Hacker News
Tennessee grandmother jailed after AI face recognition error links her to fraud
Mar 13, 2026
Hacker News
Shall I implement it? No
Mar 12, 2026
Hacker News
Innocent woman jailed after being misidentified using AI facial recognition
Mar 12, 2026
Hacker News
An old photo of a large BBS
Mar 12, 2026
Hacker News
Runners who churn butter on their runs
Mar 12, 2026
Hacker News
White House plan to break up iconic U.S. climate lab moves forward
Mar 12, 2026
Ready to take action?
Start your free Mewayz trial today
All-in-one business platform. No credit card required.
Start Free →14-day free trial · No credit card · Cancel anytime