Python ตอนที่ 10 ตัวแปรประเภท Global

ตัวแปรแบบ Global คือตัวแปรใด ๆ ที่สร้างไว้นอกฟังก์ชัน ซึ่งจะสามารถเรียกใช้ได้ทั้งในฟังก์ชันและนอกฟังก์ชัน

quality = "good"

def show():
    print("Python is " + quality)

show()

print("Java is " + quality)
  • บรรทัดที่ 1 สร้างตัวแปร quality ไว้นอกฟังก์ชัน
  • บรรทัดที่ 4 เรียกใช้ตัวแปร quality ภายในฟังก์ชัน
  • บรรทัดที่ 8 เรียกใช้ตัวแปร quality ภายนอกฟังก์ชัน

จะเห็นได้ว่า ตัวแปร quality สามารถเรียกใช้ได้ทั้งภายในและภายนอกฟังก์ชัน เพราะเป็นตัวแปรแบบ Global นั่นเอง

ถ้าเราสร้างตัวแปรที่มีชื่อเดียวกันทั้งภายในและภายนอกฟังก์ชัน ตัวแปรทั้ง 2 ตัว จะถือว่าเป็นคนละตัวแปรกัน ถึงแม้จะมีชื่อเดียวกันก็ตาม โดย

  • ตัวแปรที่สร้างไว้นอกฟังก์ชัน จะเป็นตัวแปรแปรประเภท Global สามารถเรียกใช้งานได้ทุกที่
  • ตัวแปรที่สร้างไว้ภายในฟังก์ชัน จะเป็นตัวแปรประเภท Local สามารถเรียกใช้งานได้เฉพาะในฟังก์ชันนั้นเท่านั้น
  • การกำหนดค่าให้กับตัวแปรที่อยู่ภายในฟังก์ชัน (Local) จะไม่มีผลกับค่าของตัวแปรที่อยู่นอกฟังก์ชัน (Global)
quality = "good"

def show():
    quality = "best"
    print("Python is " + quality)

show()

print("Python is " + quality)
  • ตัวแปร quality ในบรรทัดที่ 1 เป็นตัวแปรแบบ Global เพราะสร้างไว้นอกฟังก์ชัน
  • ตัวแปร quality ในบรรทัดที่ 4 เป็นตัวแปรแบบ Local เพราะสร้างไว้ภายในฟังก์ชัน
  • ตัวแปร quality ทั้ง 2 ตัว ถึงจะมีชื่อเดียวกัน แต่ถือว่าไม่เกี่ยวข้องกัน

การใช้คีย์เวิร์ด global

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

def show():
    global quality
    quality = "best"
    print("Python is " + quality)

show()

print("Python is " + quality)
  • บรรทัดที่ 2 สร้างตัวแปรชื่อ quality ภายในฟังก์ชัน โดยระบุคีย์เวิร์ด global ไว้ด้านหน้า ทำให้ตัวแปรดังกล่าวเป็นตัวแปรประเภท Global
  • บรรทัดที่ 3 กำหนดค่าให้กับตัวแปร quality ด้วยวิธีปกติ
  • บรรทัดที่ 4 เรียกใช้ตัวแปร quality ภายในฟังก์ชัน
  • บรรทัดที่ 8 เรียกใช้ตัวแปร quality ภายนอกฟังก์ชันได้อย่างไม่มีปัญหา

ด้วยคีย์เวิร์ด global เราสามารถเปลี่ยนแปลงค่าของตัวแปรประเภท Global ภายในฟังก์ชันได้ ดัวตัวอย่างต่อไปนี้

quality = "good"
print("Python is " + quality)
def show():
    global quality
    quality = "best"
    print("Python is " + quality)

show()

print("Python is " + quality)
  • บรรทัดที่ 1 สร้างตัวแปร quality ไว้ภายนอกฟังก์ชัน (เป็นตัวแปร Global โดยอัตโนมัติ)
  • บรรทัดที่ 2 เรียกใช้ตัวแปร quality ตามปกติ (จะได้ค่าตามที่กำหนดไว้)
  • บรรทัดที่ 4 อ้างถึงตัวแปร quality ที่อยู่นอกฟังก์ชัน ด้วยการระบุคีย์เวิร์ด global
  • บรรทัดที่ 5 กำหนดค่าใหม่ให้กับตัวแปร quality (มีผลกับตัวแปร quality ที่อยู่นอกฟังก์ชัน)
  • บรรทัดที่ 6 เรียกใช้ตัวแปร quality ภายในฟังก์ชัน (จะได้ค่าที่กำหนดใหม่)
  • บรรทัดที่ 10 เรียกใช้ตัวแปร quality ภายนอกฟังก์ชัน (จะได้ค่าที่กำหนดใหม่เช่นกัน เพราะค่าถูกเปลี่ยนภายในฟังก์ชันไปแล้ว)