ตัวแปรใน Python มีขอบเขต (scope) ต่างกัน ขึ้นอยู่กับตำแหน่งที่ประกาศ อาจเข้าถึงได้หรือไม่ได้ภายในฟังก์ชัน หากต้องการแก้ไขตัวแปรที่อยู่ภายนอกขอบเขตฟังก์ชัน จะใช้คีย์เวิร์ด global
จุดสำคัญเกี่ยวกับ global:
- ตัวแปรที่ประกาศนอกฟังก์ชันเป็น global variable โดยค่าเริ่มต้น
- ใช้
globalกับตัวแปรภายในฟังก์ชัน เพื่อให้สามารถแก้ไขค่าได้ - ถ้าไม่มี
globalตัวแปรในฟังก์ชันจะเป็น local variable โดยค่าเริ่มต้น
ไม่ใช้ Global
ตัวอย่างพยายามแก้ไข global variable ภายในฟังก์ชันโดยไม่มี global จะเกิดข้อผิดพลาด
โค้ดตัวอย่าง
var = 321
def modify():
var = var * 2
print(var)
modify()
ผลลัพธ์
UnboundLocalError: local variable 'var' referenced before assignment
ใช้ Global
เพิ่ม global var ภายในฟังก์ชัน จะสามารถแก้ไขค่าได้
โค้ดตัวอย่าง
var = 321
def modify():
global var
var = var * 2
print(var)
modify()
ผลลัพธ์
642
Global ภายใน Nested Functions
ถ้ามีฟังก์ชันซ้อนกัน (nested) ต้องประกาศ global ในฟังก์ชันในสุด เพื่อแก้ไขตัวแปรได้
โค้ดตัวอย่าง
def outer_func():
var = 321
def modify():
global var
var = var * 2
print(var)
modify()
outer_func()
ผลลัพธ์
642