ตัวแปรส่วนกลางคืออะไร
ตัวแปรส่วนกลางคือตัวแปรที่ประกาศไว้ภายนอกฟังก์ชัน แต่เราจำเป็นต้องใช้ภายในฟังก์ชัน
ตัวอย่าง
def func(): print(a) a=10 func()
ผลลัพธ์
10
ที่นี่ตัวแปร a เป็นสากล ตามที่ประกาศไว้นอกฟังก์ชันและสามารถใช้ภายในฟังก์ชันได้เช่นกัน ดังนั้นขอบเขตของตัวแปร a จึงเป็นสากล
เราจะเห็นว่าเกิดอะไรขึ้นหากเราสร้างตัวแปรชื่อเดียวกับตัวแปรส่วนกลางภายในฟังก์ชัน
ในตัวอย่างข้างต้น ตัวแปร a ถูกประกาศนอกฟังก์ชันและด้วยเหตุนี้จึงเป็นค่าสากล
หากเราประกาศตัวแปรอื่นที่มีชื่อเดียวกันภายในฟังก์ชันด้วยค่าอื่น ตัวแปรนั้นจะทำหน้าที่เป็นตัวแปรท้องถิ่นของฟังก์ชันและขอบเขตจะถูกจำกัดไว้ภายในฟังก์ชัน นอกฟังก์ชัน ตัวแปรส่วนกลางจะเก็บค่าเดิมไว้
สามารถเข้าใจได้ดีขึ้นด้วยความช่วยเหลือของตัวอย่าง
ตัวอย่าง
a=10 def func(): a=5 print("Inside function:",a) func() print("Outside function:",a)
ผลลัพธ์
Inside function: 5 Outside function: 10
ในตัวอย่างข้างต้น a คือตัวแปรส่วนกลางที่มีค่าเท่ากับ 10 หลังจากนั้นจะเรียก func()
ภายใน func() ตัวแปรอื่น a ถูกประกาศด้วยค่าที่แตกต่างกันซึ่งมีขอบเขตจำกัดเฉพาะภายในฟังก์ชันเท่านั้น ดังนั้น เมื่อค่าของ a ถูกพิมพ์ออกมานอกฟังก์ชันในภายหลัง ค่านั้นจะมีค่าเดิมเหมือนกับตัวแปร global ซึ่งมีค่า 10
คำหลัก:สากล
คำหลัก global ใช้เมื่อคุณต้องการประกาศตัวแปรส่วนกลางภายในฟังก์ชัน
ขอบเขตของตัวแปรปกติที่ประกาศภายในฟังก์ชันจะอยู่จนถึงจุดสิ้นสุดของฟังก์ชันเท่านั้น
อย่างไรก็ตาม หากคุณต้องการใช้ตัวแปรนอกฟังก์ชันด้วย ให้ใช้ global keyword ในขณะที่ประกาศตัวแปร
ทำความเข้าใจความแตกต่างระหว่างทั้งสองโดยใช้ตัวอย่างการใช้งาน
ตัวอย่าง
def func(): a=5 print("Inside function:",a) func() print("Outside function:",a)
ผลลัพธ์
Inside function: 5 Traceback (most recent call last): print("Outside function:",a) NameError: name 'a' is not defined
ในตัวอย่างข้างต้น ค่าของ a ไม่สามารถเข้าถึงได้จากภายนอกฟังก์ชัน เนื่องจากเป็นตัวแปรในเครื่อง ดังนั้น การเข้าถึงค่าของฟังก์ชันภายนอกจึงทำให้เกิดข้อยกเว้น
ใช้คำหลักทั่วโลก
ข้อยกเว้นในตัวอย่างข้างต้นสามารถแก้ไขได้หากเราประกาศตัวแปรโดยใช้คีย์เวิร์ด global
ตัวอย่าง
def func(): global a a=5 print("Inside function:",a) func() print("Outside function:",a)
ผลลัพธ์
Inside function: 5 Outside function: 5
ในตัวอย่างข้างต้น ตัวแปร a เป็นค่าส่วนกลางและด้วยเหตุนี้ค่าของตัวแปรจึงสามารถเข้าถึงได้จากภายนอกฟังก์ชันเช่นกัน