কম্পিউটার টিউটোরিয়াল

পাইথন প্রোগ্রামাররা যরা সাধারণ ভুল করেন

পাইথন প্রোগ্রামাররা часто কিছু সাধারণ ভুল বা 'গচা' (gotchas) করেন। নিচে সেগুলোর তালিকা এবং সমাধান দেওয়া হলো:

১. স্কোপ নেম লুকআপ (LEGB Rule)

পাইথন Local → Enclosing → Global → Built-in অর্ডারে ভেরিয়েবল খুঁজে। আউটার স্কোপের ভেরিয়েবল অনবহddingে রি-অ্যাসাইন করলে বাগ হতে পারে।

২. is এবং == পার্থক্য না জানা

  • is: মেমরি আইডেন্টিটি চেক (একই অবজেক্ট কিনা)
  • ==: ভ্যালু ইকুয়ালিটি চেক (__eq__ মেথড)

৩. লুপ চলাকালীন লিস্ট মডিফাই করা

ইটারেশন চলাকালীন এলিমেন্ট রিমুভ করলে IndexError হয় কারণ লিস্ট ছোট হয় কিন্তু ইন্ডেক্স কমে না।

সমাধান: লিস্ট কম্প্রিহেনশন, filter(), বা রিভার্স লুপ ব্যবহার করুন।

৪. ক্লোজার বাইন্ডিং (Late Binding)

lambdas = [lambda x: i + x for i in range(5)]
for f in lambdas:
    print(f(10))  # আউটপুট: 14, 14, 14, 14, 14

# সমাধান
lambdas = [lambda x, i=i: i + x for i in range(5)]
# আউটপুট: 10, 11, 12, 13, 14

সব ল্যাম্বডা একই i ভেরিয়েবল রেফার করে, লুপ শেষে i=4 থাকে।

৫. বিল্ট-ইন নেমের সাথে ক্ল্যাশ

sum = 10 লেখলে বিল্ট-ইন sum() ফাংশন ওভাররাইড হয়। প্যাকেজ নামেও এটা সমস্যা তৈরি করে।

৬. অপারেটর ওভারলোডিং-এ অনイントুইটিভ ইমপ্লিমেন্টেশন

কাস্টম ক্লাসে অপারেটর ওভাররাইড করলে স্ট্যান্ডার্ড আচরণ রক্ষা করুন, অন্যথায় API জটিল হয়।

  1. পাইথনে RuntimeError কী

  2. পাইথন ফাংশনে বাধ্যতামূলক আর্গামেন্ট (Required Arguments)

  3. পাইথনে ডিফল্ট আর্গামেন্ট (Default Arguments)

  4. পাইথন ফাংশন অ্যাট্রিবিউট (Function Attributes)