পাইথন প্রোগ্রামাররা часто কিছু সাধারণ ভুল করেন। নিচে প্রধানগুলো দেওয়া হলো:
১. স্কোপ নেম লুকআপ (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 ইত্যাদি নাম ভেরিয়েবল হিসেবে ব্যবহার করলে বিল্ট-ইন ফাংশন ওভাররাইড হয়।
৬. অপারেটর ওভারলোডিং-এ অনイントুইটিভ ইমপ্লিমেন্টেশন
কাস্টম ক্লাসে অপারেটর (+, ==, ইত্যাদি) ওভাররাইড করলে স্বাভাবিক আচরণ রক্ষা করুন।