এটি একেবারে প্রয়োজনীয় কিনা তা জিজ্ঞাসা করা ভুল প্রশ্ন। এটি একটি ভাল ধারণা কিনা তা প্রশ্ন।
প্রোগ্রামিংয়ের একটি নিয়ম হিসাবে আপনার অদ্ভুত কাজ করা এড়ানো উচিত এবং কাজের জন্য সেরা সরঞ্জামটি ব্যবহার করা উচিত । যদি কোনও কিছুর কাছে রিসোর্সগুলি মুক্ত করার একটি সুস্পষ্ট উপায় থাকে তবে কেবল প্রকাশটি স্পষ্ট করে দিন এবং এটি দিয়েই করুন:
with arcpy.da.UpdateCursor(fc,fields) as cursor:
d = {k: v for (k,v) in cursor}
আপনি যা সম্পর্কে অবগত নন তা হ'ল এই with
ধারাটি আসলে অতিরিক্ত যুক্তি সঞ্চার করে। একটি with
অনুচ্ছেদে একটি প্রসঙ্গ পরিচালক প্রয়োজন, যার অবশ্যই একটি __enter__
(ব্লক প্রবেশ করার সময় অনুরোধ করা) থাকতে হবে এবং __exit__
(ব্লকটি বেরিয়ে যাওয়ার সময় অনুরোধ করা হবে) পদ্ধতি থাকা উচিত। বিশেষত, __exit__
কোনও ব্যতিক্রম ঘটেছে কিনা তা বিবেচনা না করেই পদ্ধতিটি আহ্বান জানানো হয়েছে, প্রোগ্রামটি সর্বদা ত্রুটি হলেও রিসোর্সটি প্রকাশ করে তা নিশ্চিত করে। এটি আপনার কোডটি কখন কোনও সংস্থান গ্রহণ করা হবে এবং কখন এটি প্রকাশ করা হবে তার স্পষ্ট ডকুমেন্টেশন দেয় এবং এটি নিশ্চিত করে যে কোনও সংস্থান যত তাড়াতাড়ি সম্ভব প্রকাশ করা যেতে পারে।
বিপরীতে, আপনার পক্ষে এটি তাত্ক্ষণিকভাবে ম্যাজিকভাবে বন্ধ করতে রানটাইমের উপর নির্ভর করতে পারবেন না। কারণ এটি বন্ধ হয়ে যাওয়ার উপায়টি হ'ল অবজেক্টের ডেস্ট্রাক্টরকে ডাকে, যা তাত্ক্ষণিকভাবে ঘটতেও পারে বা নাও হতে পারে। পাইথন কখনই কোনও ডেস্ট্রাস্টারকে ডাকা হয় সে সম্পর্কে কোনও গ্যারান্টি দেয় না, কেবলমাত্র যখন অবজেক্টটি আবর্জনা সংগ্রহ করা হয় তখন এটি শেষ পর্যন্ত হয়। ( এখানে দেখুন )) বর্তমানে পাইথনটি কার্যকর করা হয়েছে যাতে এটি কোনও বস্তুর সাথে সম্পর্কিত কোনও রেফারেন্স না পাওয়া মাত্রই ঘটে। তবে দুর্ঘটনাক্রমে কোনও বস্তুর রেফারেন্স প্রচার করা সহজ এবং পাইথনের রানটাইম বদলে যেতে পারে।
দীর্ঘমেয়াদী রক্ষণাবেক্ষণও বিবেচনা করুন। সেখানে এটা কোন দীর্ঘ মেয়াদী রেফারেন্স এখন, কিন্তু কি 6 মাসে ঘটে যখন আপনি যাতে কোড পরিবর্তন প্রয়োজন হয় একটি রেফারেন্স? অন্য কেউ যদি তা করে? পরিবর্তনটি করা ব্যক্তি হয়ত কোনও with
ব্লকে স্যুইচ করার কথা ভাবতে পারে না কারণ সেখানে ইতিমধ্যে একটি নেই। আপনার সংস্থানগুলি পরিষ্কার করার অভ্যাস করুন এবং এটির সাথে আপনার খুব কম সমস্যা হবে।
আবর্জনা সংগ্রহের বাস্তবায়নের বিবরণে আপনি কি সত্যিই আপনার কোডটি বেঁধে রাখতে চান? আপনি কি আপত্তিজনকভাবে কোনও ব্যতিক্রমের মাধ্যমে কোনও রেফারেন্স প্রচার করছেন কিনা তা নিয়ে আপনি কি ক্রমাগত চিন্তা করতে চান? না, আপনি না। যখন স্ক্রিপ্টটি আর্কম্যাপে ডাকা হয়েছিল তখন কী ঘটেছিল তা ভাবুন। ব্যবহারকারী কেবল ফাইলটি প্রকাশের জন্য পুরো প্রক্রিয়াটি বন্ধ করতে বাধ্য হবে। সুতরাং নিজেকে সেই অবস্থানে রাখবেন না। উত্সটি স্পষ্টভাবে প্রকাশ করুন Release কোডের এক লাইন সংরক্ষণ করা সমস্যাগুলির ঝুঁকিপূর্ণ নয়। প্রসঙ্গ পরিচালকগণ হলেন পাইথনের রিসোর্স অর্জন এবং প্রকাশের মানক পদ্ধতি এবং তারা এটি খুব ভালভাবে করেন।
মূল কথাটি হ'ল এটিকে স্পষ্টভাবে প্রকাশ না করা একটি খারাপ ধারণা।
এটি অবশ্যই অনুমান করে যে কোডটিতে অন্য কারও প্রভাবিত হওয়ার কিছু সম্ভাবনা রয়েছে, যেমন স্ক্রিপ্টে রাখার মতো অন্য কারও চালানো বা রক্ষণাবেক্ষণ করা প্রয়োজন বা আপনাকে যদি পুরোপুরি আর্কম্যাপ বন্ধ করতে হয় তবে আপনার কাজটি সরবরাহ করতে বিলম্ব হতে পারে কারণ আপনি আপনার পরিবর্তনগুলি সংরক্ষণ করতে পারবেন না। আপনি যদি কেবলমাত্র একজনই যিনি কোনও সমস্যার দ্বারা প্রভাবিত হন, তবে যে কোনও উপায়ে, আপনি যা চান তার ভাল অভ্যাসগুলির সামনে উড়ান।
da
: sgillies.net/2011/02/01/get-with-it.html এবং help.arcgis.com/ এনআর / আরসিগিসডেস্কটপ / ১০.০ / সহায়তা / সূচিপত্র html # //… । বিশেষত, প্রথম লিঙ্কের নীচে @ জেসনশায়ারারের মন্তব্যগুলি দেখুন।