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

পাইথনে সাধারণ প্রোগ্রামিং ভুল বা 'গచা' (Gotchas)

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

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

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

২. is এবং == এর পার্থক্য না বুঝতে

  • is: মেমরি এড্রেস চেক করে (আইডেন্টিটি)
  • ==: ভ্যালু ইকুয়ালিটি চেক করে (__eq__ মেথড)
a = [1, 2, 3]
b = [1, 2, 3]
a == b  # True
a is b  # False (অলগ অবজেক্ট)

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

# ভুল - IndexError হবে
for i in lst:
    if condition:
        lst.remove(i)

# সঠিক - নতুন লিস্ট বানান বা রিভার্স ইটারেট
lst = [x for x in lst if not condition]
# অথবা
for i in range(len(lst)-1, -1, -1):
    if condition:
        del lst[i]

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

lambdas = [lambda x: i + x for i in range(5)]
for f in lambdas:
    print(f(10))  # সবই 14 প্রিন্ট করবে (i=4)!

# সমাধান: ডিফল্ট আর্গুমেন্ট
lambdas = [lambda x, i=i: i + x for i in range(5)]

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

sum, list, dict, str ইত্যাদি নাম ভেরিয়েবল হিসেবে ব্যবহার করলে বিল্ট-ইন ফাংশন ওভাররাইড হয়।

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

কাস্টম ক্লাসে অপারেটর (+, ==, ইত্যাদি) ওভাররাইড করলে স্বাভাবিক আচরণ রক্ষা করুন।

  1. পাইথনে RuntimeError কী

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

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

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