ต่อไปนี้คือข้อผิดพลาด/gotchas ในการเขียนโปรแกรมหลามที่พบบ่อยที่สุดที่โปรแกรมเมอร์กระทำการ -
-
การค้นหาชื่อขอบเขต − Python ปฏิบัติตามกฎการกำหนดขอบเขตตามลำดับ LEGB(Local, Enclosing, Global, Built-in) เนื่องจาก python ไม่มีการผูกประเภทที่เข้มงวด โปรแกรมเมอร์จึงสามารถเชื่อมโยงตัวแปรขอบเขตภายนอกกับค่าอื่นที่อาจใช้ในขอบเขตภายนอกได้ในภายหลัง แต่ปัจจุบันถูกแทนที่ด้วยค่าอื่น
-
ไม่แยกความแตกต่างระหว่าง is และ ==- The is an operator ใน python ตรวจสอบว่าวัตถุทั้งสองอ้างถึงที่อยู่หน่วยความจำเดียวกันหรือไม่ ตัวดำเนินการ ==เรียกใช้ฟังก์ชัน __eq__ ซึ่งอาจตรวจสอบความเท่าเทียมกันที่แตกต่างกันสำหรับคลาสที่ต่างกัน
-
การแก้ไขรายการในขณะที่วนซ้ำ - หากคุณลบองค์ประกอบออกจากรายการในขณะที่วนซ้ำคุณจะได้รับ IndexError เนื่องจากรายการมีขนาดลดลงในขณะที่คุณไม่ได้ลดดัชนีด้วย
-
ผูกปิด:พิจารณารหัสต่อไปนี้ -
ตัวอย่าง
listLambdas = [lambda x : i + x for i in range(5)] for lam in listLambdas: print(lam(10))
ผลลัพธ์
สิ่งนี้จะให้ผลลัพธ์:
14 14 14 14 14
ตกใจ? นี่เป็นเพราะเปลือกหุ้มที่มีผลผูกพัน lambdas ทั้งหมดในรายการนี้อ้างอิงถึงตัวแปร i กล่าวคือ เมื่อมีการเปลี่ยนแปลง lambdas เหล่านี้จะเริ่มอ้างอิงถึงค่าใหม่
-
ชื่อปะทะกับในตัว - คุณต้องมีในบางช่วงเวลาที่สร้างตัวแปรที่เรียกว่าผลรวม โปรดทราบว่าคุณได้กำหนดการอ้างอิงใหม่ให้กับฟังก์ชัน sum ในกรณีนี้ ดูเหมือนว่าจะไม่สำคัญสำหรับสิ่งนี้ แต่อาจทำให้เกิดปัญหาร้ายแรงเมื่อมีการตั้งชื่อแพ็คเกจในลักษณะดังกล่าว นี่อาจทำให้แพ็คเกจอื่นนำเข้าคลาสของคุณแทนที่จะเป็นคลาสมาตรฐาน
-
การใช้งานที่ไม่ได้ตั้งใจสำหรับโอเปอเรเตอร์ - Python ให้วิธีการโอเวอร์โหลดฟังก์ชันโอเปอเรเตอร์สำหรับคลาส บ่อยครั้ง ผู้คนมักจะใช้โอเปอเรเตอร์เหล่านี้ในลักษณะที่ไม่ธรรมดาและจบลงด้วยการสร้าง API ที่ซับซ้อนและไม่เป็นธรรมชาติ