ตัวแปรในความหมายของคอมพิวเตอร์ภาษา Python เป็นการกำหนดชนิดของข้อมูล เพื่อนำไปใช้ในโปรแกรมโดยจะมีการเรียกตัวแปรไปใช้ในการคำนวณค่าหรือแสดงผลลัพธ์เป็นข้อมูลโดยภายในตัวแปร เราสามารถกำหนดชนิดของข้อมูลได้ เช่น numbers, string, list, tuple, dictionary เป็นต้น ตัวแปรเป็นคำนิยามที่ใช้ได้กับหลายภาษาไม่ว่าจะเป็น C# หรือ C++ โดยหลักการทำงานของแต่ละภาษาก็คือตัวแปรมีหน้าที่ในการเก็บข้อมูลโดยจะมีทั้งข้อมูลที่เป็นตัวเลขหรือตัวอักษรโดยที่ข้อมูลนั้นจะมีค่ามากกว่า 1 ข้อมูลก็ได้ขึ้นอยู่กับชนิดของตัวแปรและภาษาที่ใช้งาน ซึ่งในบทความนี้เราจะมาพูดถึงตัวแปรแบบ Global และ Local ในภาษาไพทอนกัน
ตัวแปรแบบ Global และ Local
ตัวแปรที่ประกาศอยู่นอกฟังก์ชัน เราจะเรียกตัวแปรเหล่านี้ว่า ตัวแปรแบบ Global ส่วนตัวแปรที่ประกาศไว้ภายในฟังก์ชันจะถูกเรียกว่า ตัวแปรแบบ Local ซึ่งสิ่งที่เราต้องพิจารณาคือ ขอบเขตการอ้างถึงตัวแปร (Scope of Variable) ทั้งในและนอกฟังก์ชัน โดยมีหลักการดังนี้
- ภายในฟังก์ชัน เราสามารถอ้างตัวแปรแบบ Global ที่ประกาศอยู่นอกฟังก์ชันได้ ไม่ว่าตัวแปรนั้นจะประกาศไว้ก่อนหรือหลังฟังก์ชันก็ตาม
- ภายนอกฟังก์ชัน เราไม่สามารถอ้างถึงตัวแปรแบบ Local ที่ประกาศขึ้นในฟังก์ชันได้
ตัวอย่าง
x = 10 #ตัวแปรแบบ Global
def var_scope():
y = 99.99 #ตัวแปรแบบ Local
print(x) #สามารถอ้างถึงตัวแปรแบบ Global ได้
print(y)
print(z) #สามารถอ้างถึงตัวแปรแบบ Global ได้ แม้จะประกาศไว้หลังฟังก์ชัน
z = 20 #ตัวแปรแบบ Global
var_scope()
print(y) #ERROR เนื่องจากไม่สามารถอ้างถึงตัวแปรแบบ Local นอกฟังก์ชันได้
- ภายในฟังก์ชัน ถ้าเรานำตัวแปรแบบ Global มากำหนดค่าอย่างใดอย่างหนึ่งแล้ว ก็เหมือนการสร้างตัวแปรขึ้นมาใหม่ ซึ่งผลที่ได้ คือตัวแปรนั้นจะกลายเป็นตัวแปรแบบ Local แต่ก็จะไม่ส่งผลต่อตัวแปร Global เดิม และไม่ส่งผลต่อฟังก์ชันอื่นๆที่เรียกใช้ตัวแปรนั้น
ตัวอย่าง
x = 10
def func1():
x = 99
print(x)
def func2():
print(x)
func1()
func2()
ผลลัพธ์
อย่างไรก็ตาม อาจมีบางกรณีที่เราจำเป็นต้องแก้ไขค่าของตัวแปรแบบ Global ในฟังก์ชันใดฟังก์ชันหนึ่งและให้ส่งผลไปถึงฟังก์ชันอื่นๆ ที่เรียกใช้ตัวแปรแบบดังกล่าวด้วย ซึ่งเราสามารถทำการได้โดยการระบุคีย์เวิร์ด global นำหน้าชื่อตัวแปรดังกล่าว
ตัวอย่าง
x = 10
def func1():
global x
x = 99
print(x)
def func2():
print(x)
func1()
func2()
ผลลัพธ์
จากผลลัพธ์ที่ออกมาจะเห็นได้ว่าฟังก์ชัน func2 ก็จะถูกผลกระทบจากการแก้ไขตัวแปรแบบ Global ด้วยคีย์เวิร์ด global ไปด้วย แต่ในการเปลี่ยนตัวแปรดังกล่าวนั้น ห้ามกำหนดหรือเปลี่ยนค่าของมันในขั้นตอนการระบุคีย์เวิร์ด global แต่ให้มาระบุใน statement อื่นๆแทน ดังในตัวอย่าง
ช่องทางศึกษาเพิ่มเติมเกี่ยวกับ : Python
Instance Method การเรียกใช้งานเมธอดผ่านอินสแตนซ์
Instance Attribute และ Initializer เมธอดชนิดพิเศษ
Static Method การใช้งานเมธอดแบบคงที่
การเรียกใช้ฟังก์ชันแบบ Recursion ในไพทอน ฟังชันก์ทำงานซ้ำเรียกตัวเอง