บางครั้งเราประกาศตัวแปร แต่เราอาจจำเป็นต้องแก้ไขหรือเข้าถึงค่าที่อยู่นอกขอบเขตปัจจุบันของการประกาศซึ่งอาจอยู่ที่ใดก็ได้ในโปรแกรมปัจจุบัน ในสถานการณ์เช่นนี้ เราใช้คำหลักสากลพร้อมชื่อตัวแปรภายในฟังก์ชันที่ประกาศตัวแปร หากตัวแปรไม่อยู่ในฟังก์ชัน ตัวแปรนั้นจะอยู่ในขอบเขตโกลบอลโดยอัตโนมัติ
ตัวแปรนอกฟังก์ชัน
ในตัวอย่างด้านล่าง เราจะเห็นค่าภายนอกฟังก์ชัน แต่เราสามารถเข้าถึงได้จากภายในฟังก์ชัน เนื่องจากตัวแปรดังกล่าวอยู่ในขอบเขตทั่วโลกแล้ว
ตัวอย่าง
x = 56 def func(): y = x *2 return y print(func())
การเรียกใช้โค้ดด้านบนทำให้เราได้ผลลัพธ์ดังต่อไปนี้:
ผลลัพธ์
112
ตัวแปรภายในฟังก์ชัน
ในตัวอย่างต่อไป เราพยายามเปลี่ยนค่าของตัวแปรภายในฟังก์ชันและได้รับข้อผิดพลาด
ตัวอย่าง
x = 56 def func(): y = x *2 x = x+2 return y print(func())
การเรียกใช้โค้ดด้านบนทำให้เราได้ผลลัพธ์ดังต่อไปนี้:
ผลลัพธ์
nboundLocalError: local variable 'x' referenced before assignment
วิธีเดียวที่เราจะแก้ไขค่าของตัวแปรที่มีขอบเขตส่วนกลางภายในฟังก์ชันได้คือการประกาศให้เป็นตัวแปรส่วนกลางภายในฟังก์ชัน
ตัวอย่าง
x = 56 def func(): global x x = x + 2 y = x *2 return y print(func())
การรันโค้ดด้านบนทำให้เราได้ผลลัพธ์ดังต่อไปนี้
ผลลัพธ์
116
ตัวแปรภายในฟังก์ชันซ้อน
ในกรณีของฟังก์ชันที่ซ้อนกัน เราจะสร้างตัวแปรส่วนกลางในฟังก์ชันภายในสุดดังแสดงในตัวอย่างด้านล่าง
ตัวอย่าง
def func_out(): x = 56 def func_in(): global x x = 20 print("x is: ",x) x = x + 3 y = x *2 print ("y is: ",y) func_in() func_out() print("x is: ",x)
การเรียกใช้โค้ดด้านบนทำให้เราได้ผลลัพธ์ดังต่อไปนี้:
ผลลัพธ์
x is: 20 y is: 46 x is: 23