এই কোড স্নিপেট বিবেচনা:
from os import walk
files = []
for (dirpath, _, filenames) in walk(mydir):
# more code that modifies files
if len(files) == 0: # <-- C1801
return None
এই বিবৃতিটির সাথে লাইনটি সম্পর্কে আমি এই বার্তাটি দিয়ে পাইলিন্টকে ভীত করেছিলাম:
[পাইলট] C1801:
len(SEQUENCE)
শর্ত মান হিসাবে ব্যবহার করবেন না
C1801 নিয়মটি প্রথম নজরে আমার পক্ষে খুব যুক্তিসঙ্গত মনে হয়নি, এবং রেফারেন্স গাইডের সংজ্ঞাটি কেন এটি সমস্যা তা ব্যাখ্যা করে না। আসলে এটি একেবারে ভুল ব্যবহার বলে ।
লেন-অ-শর্ত (C1801) : শর্ত মান হিসাবে ব্যবহার করবেন না
len(SEQUENCE)
যখন পাইলিন্ট শর্তের অভ্যন্তরে অবস্থিত লেন (ক্রম) এর ভুল ব্যবহার সনাক্ত করে Used
আমার অনুসন্ধানের প্রচেষ্টাও আমাকে আরও গভীর ব্যাখ্যা দিতে ব্যর্থ হয়েছে। আমি বুঝতে পারি যে একটি সিক্যুয়েন্সের দৈর্ঘ্যের সম্পত্তিটি অলসভাবে মূল্যায়ন করা যেতে পারে এবং এর __len__
পার্শ্ব প্রতিক্রিয়াগুলিও প্রোগ্রাম করা যেতে পারে, তবে পাইলিন্টের পক্ষে এ জাতীয় ব্যবহারকে ভুল বলার পক্ষে একাই যথেষ্ট সমস্যাযুক্ত কিনা তা প্রশ্নবিদ্ধ। সুতরাং, আমি নিয়মটি উপেক্ষা করার জন্য আমার প্রকল্পটি কনফিগার করার আগে আমি জানতে চাই যে আমি আমার যুক্তিতে কিছু অনুপস্থিত।
len(SEQ)
শর্ত মান হিসাবে ব্যবহার কখন সমস্যাযুক্ত? পাইলেন্ট কোন বড় পরিস্থিতি C1801 এর সাথে এড়াতে চাইছে?
len
এটি যে প্রসঙ্গে বলা হয়েছে তা জানেন না, সুতরাং দৈর্ঘ্যটি গণনা করার অর্থ যদি পুরো ক্রমটি অতিক্রম করা হয়, অবশ্যই এটি; এটি জানে না যে ফলাফলটি কেবল 0 এর সাথে তুলনা করা হচ্ছে the বুলিয়ান মানটি প্রথম উপাদানটি দেখার পরে থামানো যেতে পারে, ক্রমটি আসলে কত দীর্ঘ of আমি মনে করি পাইলিন্টটি এখানে একটি মতামত হিসাবে অভিহিত করা হচ্ছে; এটি ব্যবহার করা ভুল যেখানে এমন পরিস্থিতি আমি ভাবতে পারি না len
, এটি বিকল্পের চেয়ে খারাপ বিকল্প।
if files:
বাif not files: