ตัวแปรในความหมายของคอมพิวเตอร์ภาษา 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 และ Local
ผลลัพธ์

     อย่างไรก็ตาม อาจมีบางกรณีที่เราจำเป็นต้องแก้ไขค่าของตัวแปรแบบ Global ในฟังก์ชันใดฟังก์ชันหนึ่งและให้ส่งผลไปถึงฟังก์ชันอื่นๆ ที่เรียกใช้ตัวแปรแบบดังกล่าวด้วย ซึ่งเราสามารถทำการได้โดยการระบุคีย์เวิร์ด global นำหน้าชื่อตัวแปรดังกล่าว

ตัวอย่าง

x = 10

def func1():
    global x
    x = 99
    print(x)

def func2():
    print(x)

func1()
func2()

ผลลัพธ์

ผลลัพธ์การใช้งานคีย์เวิร์ด global เปลี่ยนข้อมูลตัวแปรแบบ Global
ผลลัพธ์การใช้ global

     จากผลลัพธ์ที่ออกมาจะเห็นได้ว่าฟังก์ชัน func2 ก็จะถูกผลกระทบจากการแก้ไขตัวแปรแบบ Global ด้วยคีย์เวิร์ด global ไปด้วย แต่ในการเปลี่ยนตัวแปรดังกล่าวนั้น ห้ามกำหนดหรือเปลี่ยนค่าของมันในขั้นตอนการระบุคีย์เวิร์ด global แต่ให้มาระบุใน statement อื่นๆแทน ดังในตัวอย่าง

 

 

ช่องทางศึกษาเพิ่มเติมเกี่ยวกับ : Python

Python - เทคนิคการเขียนไพทอน

Instance Method การเรียกใช้งานเมธอดผ่านอินสแตนซ์

Instance Attribute และ Initializer เมธอดชนิดพิเศษ

Static Method การใช้งานเมธอดแบบคงที่

การเรียกใช้ฟังก์ชันแบบ Recursion ในไพทอน ฟังชันก์ทำงานซ้ำเรียกตัวเอง

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
การใช้ Selenium เพื่อส่งคีย์ (send_keys) ไปยังฟิลด์ค้นหา
โดย athirach.offcial ศ 29 มี.ค. 2024 1:57 pm บอร์ด Software testing
0
220
ศ 29 มี.ค. 2024 1:57 pm โดย athirach.offcial View Topic การใช้ Selenium เพื่อส่งคีย์ (send_keys) ไปยังฟิลด์ค้นหา
selenium การใช้ driver.get เพื่อเข้าสู่เว็บไซต์โดยอัตโนมัติ
โดย athirach.offcial ศ 29 มี.ค. 2024 1:50 pm บอร์ด Software testing
0
249
ศ 29 มี.ค. 2024 1:50 pm โดย athirach.offcial View Topic selenium การใช้ driver.get เพื่อเข้าสู่เว็บไซต์โดยอัตโนมัติ
พิมพ์ pdf จาก excel สามารถกำหนดให้พิมพ์บนล่างก่อนแล้วค่อยไปพิมพ์ซ้ายไปขวาได้มั้ยคะ
โดย MBMoo ศ 29 มี.ค. 2024 1:34 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
3
215
ศ 29 มี.ค. 2024 1:48 pm โดย mindphp View Topic พิมพ์ pdf จาก excel สามารถกำหนดให้พิมพ์บนล่างก่อนแล้วค่อยไปพิมพ์ซ้ายไปขวาได้มั้ยคะ
เมธอด dict() ในการพัฒนาระบบ Python การสร้างพจนานุกรมอย่างมีประสิทธิภาพ
โดย athirach.offcial พฤ 28 มี.ค. 2024 12:33 pm บอร์ด Python Knowledge
0
357
พฤ 28 มี.ค. 2024 12:33 pm โดย athirach.offcial View Topic เมธอด dict() ในการพัฒนาระบบ Python การสร้างพจนานุกรมอย่างมีประสิทธิภาพ
การใช้งาน filter() กรองตัวเลขหรือตัวอักษรในภาษา Python
โดย athirach.offcial พฤ 28 มี.ค. 2024 12:16 pm บอร์ด Python Knowledge
0
131
พฤ 28 มี.ค. 2024 12:16 pm โดย athirach.offcial View Topic การใช้งาน filter() กรองตัวเลขหรือตัวอักษรในภาษา Python
เมธอด strip() ใน Python การใช้งานเพื่อลบตัวอักษรที่กำหนด
โดย athirach.offcial พฤ 28 มี.ค. 2024 12:03 pm บอร์ด Python Knowledge
1
379
ศ 29 มี.ค. 2024 9:24 am โดย athirach.offcial View Topic เมธอด strip() ใน Python การใช้งานเพื่อลบตัวอักษรที่กำหนด
Attribute ในภาษา Python: วิธีกำหนดค่าและใช้งาน
โดย athirach.offcial พฤ 28 มี.ค. 2024 11:37 am บอร์ด Python Knowledge
0
105
พฤ 28 มี.ค. 2024 11:37 am โดย athirach.offcial View Topic Attribute ในภาษา Python: วิธีกำหนดค่าและใช้งาน
คำสั่ง eval() ใน Python วิธีการใช้งานการประมวลผลสตริงเป็นโค้ด
โดย athirach.offcial พฤ 28 มี.ค. 2024 11:07 am บอร์ด Python Knowledge
3
627
ศ 29 มี.ค. 2024 9:18 am โดย athirach.offcial View Topic คำสั่ง eval() ใน Python วิธีการใช้งานการประมวลผลสตริงเป็นโค้ด