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

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


ต่อไปนี้คือข้อผิดพลาด/gotchas ในการเขียนโปรแกรมหลามที่พบบ่อยที่สุดที่โปรแกรมเมอร์ยอมรับ:

การค้นหาชื่อขอบเขต: Python ปฏิบัติตามกฎการกำหนดขอบเขตตามลำดับ LEGB (Local, Enclosing, Global, Built-in) เนื่องจาก python ไม่มีการผูกประเภทที่เข้มงวด โปรแกรมเมอร์จึงสามารถเชื่อมโยงตัวแปรขอบเขตภายนอกกับค่าอื่นที่อาจใช้ในขอบเขตภายนอกได้ในภายหลัง แต่ปัจจุบันถูกแทนที่ด้วยค่าอื่น

ไม่แยกความแตกต่างระหว่าง is และ =: ตัวดำเนินการใน 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 ที่ซับซ้อนและไม่ได้ใช้งาน