ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

    ตัวแปรในความหมายของคอมพิวเตอร์ภาษา 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 ในไพทอน ฟังชันก์ทำงานซ้ำเรียกตัวเอง

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
โปรแกรมทางการบัญชี โปรแกรม Express
โดย Duanghathai Termtem อ 01 ธ.ค. 2020 6:56 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
22
อ 01 ธ.ค. 2020 6:56 pm โดย Duanghathai Termtem
Flow Account คืออะไร
โดย Duanghathai Termtem อ 01 ธ.ค. 2020 5:06 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
21
อ 01 ธ.ค. 2020 5:06 pm โดย Duanghathai Termtem
การประยุกต์ใช้โปรแกรม ACL และ Microsoft Excel ช่วยในการตรวจสอบ
โดย Duanghathai Termtem อ 01 ธ.ค. 2020 3:20 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
32
อ 01 ธ.ค. 2020 3:20 pm โดย Duanghathai Termtem
แนวทางแก้ปัญหา php error Uncaught Error: Call to undefined function mysql_real_escape_string() in...
โดย mindphp อ 01 ธ.ค. 2020 2:13 am บอร์ด PHP Knowledge
0
20
อ 01 ธ.ค. 2020 2:13 am โดย mindphp
วิธีการเดินทางจากกระบี่มากรุงเทพมหานคร
โดย Duanghathai Termtem จ 30 พ.ย. 2020 3:46 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
21
จ 30 พ.ย. 2020 3:46 pm โดย Duanghathai Termtem
การใช้ Canva ช่วยการนำเสนอ
โดย Duanghathai Termtem จ 30 พ.ย. 2020 3:13 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
38
จ 30 พ.ย. 2020 3:13 pm โดย Duanghathai Termtem
ภาษี หัก ณ ที่จ่าย บน ERP
โดย milk2533 ส 28 พ.ย. 2020 4:17 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
24
ส 28 พ.ย. 2020 4:17 pm โดย milk2533
ประโยชน์ของการใช้ปุ่ม Sendmail บน ERP
โดย milk2533 ส 28 พ.ย. 2020 1:40 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
15
ส 28 พ.ย. 2020 1:40 pm โดย milk2533