โอ้เด็ก.
มีรหัสบางอย่างบนหน้าจอและดูสับสนมาก
นี่เป็นตัวอย่างฟังก์ชันที่ซับซ้อนและซับซ้อนซึ่งคุณไม่เคยเขียนมาก่อน แต่จะดีสำหรับจุดประสงค์ในการออกกำลังกาย
และเรากำลังพูดถึงสิ่งนี้โดยเฉพาะที่เรียกว่า Non Local
เป็นคีย์เวิร์ดใหม่ใน Python สาม
และอย่างที่คุณเห็น ระลอกคลื่นของฉันไม่ได้สังเกตด้วยซ้ำ
ดังนั้นจึงไม่เน้นเป็นสีน้ำเงินด้วยซ้ำเพราะเป็นคุณสมบัติใหม่
แต่ฉันต้องการพูดคุยกับคุณเกี่ยวกับเรื่องนี้และแจ้งให้คุณทราบว่ามันทำอะไร
คีย์เวิร์ดที่ไม่ใช่โลคัลใช้เพื่ออ้างถึงส่วนนี้ โลคัลพาเรนต์นี้
เป็นวิธีที่เราจะพูดว่า เฮ้ ฉันต้องการใช้ตัวแปรที่ไม่ใช่ตัวแปรส่วนกลาง แต่อยู่นอกขอบเขตของฟังก์ชันของฉัน
ตามคำจำกัดความนั้น ให้ลองหยุดวิดีโอชั่วคราวและดูว่าฟังก์ชันนี้อาจทำอะไรได้บ้าง
เดี๋ยวผมรันโค้ดให้ครับ
ถ้าฉันคลิกเรียกใช้
นี่คือสิ่งที่เราได้รับ
เรามาพูดถึงเรื่องนี้กัน
เรามีฟังก์ชันภายนอก แล้วเราเรียกฟังก์ชันภายนอก
ตัวแปล Python จะไปบอกว่า ตกลง เรามีตัวแปร X ที่อยู่ภายในฟังก์ชันภายนอก
แล้วในนี้เราจะกำหนดฟังก์ชันภายใน อีกฟังก์ชันหนึ่ง
และในที่นี้ ก่อนที่เราจะเรียกสิ่งนั้น เราข้ามไปที่บรรทัดที่ 9 แล้วพูดว่า เอาล่ะ เรียกฟังก์ชันภายใน
เรากลับมาแล้วพูดว่า เฮ้ บรรทัดที่ 5 ฉันต้องการใช้ X ที่ไม่ใช่ในเครื่อง
นั่นหมายความว่าอย่างไร?
ฉันต้องการใช้ตัวแปร x นี้เพราะมันไม่ใช่แบบโลคัล นั่นคือ ฉันไม่ต้องการสร้างตัวแปร
x ใหม่
ฉันต้องการเพิ่มขอบเขตไปยังขอบเขตผู้ปกครอง ผู้ปกครองในพื้นที่ และคว้าสิ่งที่คุณพบในนั้น
ตราบใดที่มันไม่ใช่ตัวแปรโกลบอลผู้ปกครองคนใดจะทำ
ฉันต้องการคว้าที่ไม่ใช่ท้องถิ่น
ตอนนี้ x นี่หมายถึงฟังก์ชันภายนอกตรงนี้
เมื่อเราบอกว่า x เท่ากับ non local เรากำลังกำหนดสตริงใหม่นี้
และแทนที่โลคัลนี้เพื่อที่ว่าเมื่อเราพิมพ์ inter x เราจะได้ non-local แต่เมื่อเราพิมพ์
x ภายนอก เราได้แก้ไขขอบเขตภายนอกนี้ด้วยคีย์เวิร์ด non local เพื่อให้กลายเป็นไม่ใช่โลคัลด้วย
ถ้าฉันลบบรรทัดนี้และแสดงความคิดเห็นแล้วคลิกเรียกใช้
คุณเห็นความแตกต่างหรือไม่?
ตอนนี้ เรามี inner non-local แล้ว แต่ด้านนอก local ยังไม่ได้รับการแก้ไข เนื่องจากเป็นตัวแปรใหม่
ฉันขอยืนยันว่าสิ่งนี้ทำให้โค้ดของคุณซับซ้อนกว่าที่ควรจะเป็น
ดังนั้นจึงมีกรณีพิเศษที่คุณอาจต้องการใช้ แต่ถ้าคุณสามารถพยายามทำให้โค้ดของคุณคาดเดาได้ ซึ่งคุณสามารถหลีกเลี่ยงการใช้สิ่งต่างๆ
เช่น ที่ไม่ใช่แบบโลคัลและแบบโกลบอล
โปรดทราบว่าพวกเขามีเหตุผลเพราะมีประโยชน์ในบางสถานการณ์
จากที่กล่าวมา จำไว้ว่า ทำให้โค้ดของคุณสามารถคาดเดาได้ ทำให้โค้ดของคุณสะอาด แล้วพบกันใหม่ในวิดีโอหน้า