Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ข้อผิดพลาดในการเขียนโปรแกรม Python ทั่วไปที่โปรแกรมเมอร์ทำคืออะไร


ต่อไปนี้คือข้อผิดพลาด/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 ที่ซับซ้อนและไม่เป็นธรรมชาติ