‫เอาล่ะ มาเล่นเกมกันหน่อย
‫คุณเดาได้ไหมว่าผลลัพธ์ของโปรแกรมนี้จะเป็นอย่างไร
‫ผมมีตัวเท่ากับหนึ่งตรงนี้
‫จากนั้นเราสร้างฟังก์ชันที่เรียกว่าความสับสน โดยที่เรามี a เท่ากับห้า แล้วส่งกลับ a
‫คำถามของฉันคือเมื่อเราพิมพ์ A และเมื่อเราพิมพ์ความสับสน คุณคาดว่าจะเกิดอะไรขึ้นที่นี่
‫ใช้เวลาสักครู่เพื่อหาการหยุดชั่วคราวหากต้องการ
‫และลองหากัน
‫หนึ่งและห้า
‫นั่นคือสิ่งที่คุณคาดหวัง?
‫ไปกันเถอะ.
‫ทีละบรรทัด
‫อันดับแรกเรากำหนดค่าหนึ่งให้กับตัวแปร A จากนั้นเราสร้างฟังก์ชันที่เรียกว่าความสับสนและตัวแปลไพ ธ อนจะพูดว่า
‫เอาล่ะ สับสน ฟังก์ชัน
‫ฉันรู้ว่ามันคืออะไร
‫ฉันจะเก็บมันไว้ในความทรงจำ
‫เมื่อคุณต้องการใช้ฉัน เพียงแจ้งให้เราทราบ
‫แล้วมันจะไปที่บรรทัดที่แปด และบรรทัดที่แปดจะพูดว่า เฮ้ พิมพ์ a สิ่งที่เป็นบ่อน้ำ ครั้งเดียวที่ฉันได้เห็น
‫a คือตรงนี้ a เท่ากับหนึ่ง
‫เข้าไปในหน่วยความจำ สมมุติว่า A เท่ากับหนึ่ง
‫แต่แล้วเมื่อเกิดความสับสนเช่นนี้
‫ฉันจะบอกว่า เฮ้ a จะเท่ากับห้า และตอนนี้เราคืนค่า A ซึ่งเท่ากับห้า
‫OC จะเกิดอะไรขึ้นถ้าฉันเปลี่ยนลำดับของสิ่งนี้
‫ถ้าผมไปแบบนี้ล่ะ?
‫จะเกิดอะไรขึ้นหากฉันคลิกเรียกใช้
‫นั่นคือสิ่งที่คุณคาดหวัง?
‫อีกครั้งที่เรามีหนึ่งเท่ากับ
‫จากนั้นเรากำหนดฟังก์ชัน และจากนั้นเราพิมพ์ความสับสน
‫ทีนี้ความสับสนตรงนี้จะกำหนด a เท่ากับห้า แล้วส่งกลับ a
‫แต่ทำไมสิ่งนี้ถึงไม่เปลี่ยนแปลง?
‫ทำไม a ยังคงเท่ากับหนึ่งเมื่อเรามาที่นี่?
‫และนี่เป็นเพราะขอบเขตใช่ไหม?
‫สิ่งที่ล่าม Python ทำคือเมื่อมันรันฟังก์ชันความสับสน มันจะบอกว่า เฮ้
‫a จะเท่ากับห้า
‫แต่ฉันกำลังสร้างตัวแปรที่เรียกว่า A ในจักรวาลของฉันเอง
‫ฉันไม่รู้อะไรเกี่ยวกับตัวเท่ากับที่นี่
‫ฉันมีจักรวาลของตัวเอง
‫และหลังจากที่เราเรียกใช้ฟังก์ชันนี้ เราก็ทำเสร็จแล้ว
‫เราได้คืนฟังก์ชันและมันหายไปอย่างสมบูรณ์
‫แต่เราไม่เคยทิ้งจักรวาลให้อยู่ในขอบเขตสากล
‫ดังนั้นจึงมีกฎชุดหนึ่งที่ล่าม Python ดำเนินการเพื่อตรวจสอบตัวแปร
‫และกฎก็คือสิ่งนี้
‫ขั้นแรกจะตรวจสอบกับท้องถิ่น
‫เริ่มต้นด้วยท้องถิ่น
‫และสิ่งที่เราเรียกว่าเป็นขอบเขตท้องถิ่น
‫ขอบเขตภายในคือขอบเขตที่เป็นส่วนหนึ่งของฟังก์ชันภายในเครื่องนี้
‫ดังนั้น a เป็นขอบเขตท้องถิ่น
‫จะไปตรวจที่นั่น
‫เฮ้ ฉันรู้ตัวแปรไหม
‫ใช่เมื่อฉันกลับมา
‫A ฉันมีตัวแปรที่กำหนดไว้ที่นี่ ดังนั้นมันจึงเริ่มต้นที่นั่น
‫แต่สมมุติว่า A ไม่มี สมมติว่าฉันลบ a แล้วคลิกเรียกใช้ที่นี่
‫ฉันได้รับทั้งสองอย่างครั้งเดียวเพราะกฎข้อที่สองคือถ้าไม่มีตัวแปรในเครื่องหรือขอบเขตในเครื่อง
‫แล้วข้อที่สอง มีขอบเขตท้องถิ่นพาเรนต์หรือไม่
‫ในกรณีของเรา parent ของฟังก์ชันนี้คืออะไร?
‫มันคือขอบเขตสากล
‫แต่เรายังสามารถทำหน้าที่อื่นได้
‫สมมติว่า parent และ parent เป็น parent ของฟังก์ชันความสับสน
‫และในนี้ สมมุติว่า A เท่ากับสิบ
‫ตอนนี้อยู่ในนี้
‫เราจะกลับมา
‫เกิดความสับสนเพื่อให้เราใช้งานได้อีกครั้งและเรียกใช้ได้จริง
‫เลยเรียกผู้ปกครอง
‫และคลิกเรียกใช้
‫เอาล่ะ ผ่านเรื่องนี้กันเถอะ
‫จึงไม่สับสนจนเกินไป
‫เรามีฟังก์ชันหลักที่ได้รับการเรียก
‫เมื่อเราเรียกสิ่งนั้น เรากำหนด a เท่ากับสิบ
‫จากนั้นเราก็สร้างความสับสนของฟังก์ชันใหม่ด้วย
‫และสุดท้ายเราก็กลับมาสร้างความสับสนและเรียกใช้มันจริงๆ
‫เราจะคืนค่า a แล้วพิมพ์ว่าค่าของ A คืออะไร เท่ากับสิบ
‫และทำไมถึงเป็นอย่างนั้น?
‫เพราะเราเริ่มด้วยขอบเขตท้องถิ่นก่อน
‫เฮ้ ความสับสนรู้หรือไม่ว่า a คืออะไร?
‫ไม่.
‫ฉันไม่มีอยู่ในขอบเขตท้องถิ่นของฉัน
‫OC โรงเรียนในท้องถิ่นของผู้ปกครองของฉันมีหรือไม่
‫มันจะขึ้นระดับแล้วพูดว่า เฮ้ ฟังก์ชัน parent รู้หรือไม่ว่า a คืออะไร?
‫ใช่ ผมมีเท่ากับสิบ มันจะพิมพ์ออกมา
‫กฎที่สามหรือลำดับที่สามเป็นสากล
‫และโลกคือสิ่งที่เราเรียกว่าการเยื้องของความว่างเปล่า
‫มันเป็นไฟล์นี้ใช่ไหม
‫ไม่ว่าจะมีไฟล์อะไรก็ตาม สิ่งนั้นก็คือโกลบอล
‫ในกรณีของเรา ถ้าไม่มี A เท่ากับสิบ ที่นี่ ก็ไม่มีโลคัล โลคัลพาเรนต์ก็ไม่มี
‫และฉันคลิกเรียกใช้
‫มันตรวจสอบขอบเขตทั่วโลก
‫และสุดท้าย มีกฎอีกข้อหนึ่ง และนี่คือกฎข้อที่สี่ และมันเป็นกฎที่ยุ่งยาก
‫และนี่คือสิ่งที่เราเรียกว่าสร้างขึ้นใน Python
‫หรือสร้างขึ้นในฟังก์ชันหลาม
‫ดังนั้น Python จึงมาพร้อมกับฟังก์ชันที่กำหนดไว้ล่วงหน้า เช่น?
‫ผลรวมที่เราได้พูดถึงก่อนหน้านี้
‫สมมุติว่าให้แค่ห้า
‫กำลังจะตรวจสอบหรือจริง ๆ แล้วไม่ให้อะไรทั้งนั้น
‫มาทำที่นี่กัน
‫เมื่อฉันเรียกใช้สิ่งนี้
‫ฉันได้รับการสร้างขึ้นในฟังก์ชั่นบางอย่าง
‫ตอนนี้.
‫พวกเขารู้ได้อย่างไรว่านี่คืออะไร?
‫ตัวแปรนี้ในตอนท้ายของวันคืออะไร?
‫เพราะมันบอกว่า เฮ้ ฉันมีบางอย่างในจักรวาลนี้ไหม?
‫ไม่.
‫ฉันไม่.
‫ฉันมีบางอย่างในขอบเขตของผู้ปกครองหรือไม่?
‫ไม่ฉันไม่
‫ฉันมีบางส่วนในทั่วโลก?
‫ไม่.
‫ไม่มีอะไรรวมอยู่ที่นี่
‫และสิ่งสุดท้ายที่จะตรวจสอบคือ เฮ้ มีฟังก์ชัน Python ในตัวบางประเภทไหม
‫ใช่.
‫จริง ๆ แล้ว Python นั้นให้อะไรกับเราบ้าง เพื่อให้คุณใช้งานได้อย่างไม่ผิดเพี้ยน
‫และนี่คือกฎขอบเขตที่ล่าม Python ปฏิบัติตาม
‫เยี่ยมมาก
‫ยังมีอีกหลายสิ่งที่เราต้องเรียนรู้
‫แล้วพบกันใหม่ในวิดีโอหน้าครับ