Python ตอนที่ 6 ตัวแปร

ตัวแปร คือคำหรือวลี หรือแม้แต่ตัวอักษรเพียงตัวเดียว ที่ใช้สำหรับเก็บค่าของข้อมูลเพื่อนำไปใช้งานในส่วนต่าง ๆ ของโปรแกรม

โดยส่วนใหญ่ ในภาษาโปรแกรมอื่น ๆ จะมีคำสั่งสำหรับประกาศตัวแปร เช่น var, let เป็นต้น แต่ในภาษา Python จะไม่มีคำสั่งสำหรับประกาศตัวแปร แต่ตัวแปรจะถูกสร้างขึ้นเมื่อมีการกำหนดค่าครั้งแรก เช่น

a = 5
b = 20
x = "DCRUB.COM"
y = False

จากตัวอย่าง เมื่อเราพิมพ์คำหรือวลีใด ๆ ตามด้วยเครื่องหมาย = และกำหนดค่าให้กับคำหรือวลีนั้น ๆ นั่นคือการสร้างตัวแปรในภาษาไพธอน

การสร้างตัวแปร ไม่จำเป็นต้องกำหนดชนิดข้อมูล Data Type

ในไพธอน เมื่อเราสร้างตัวแปรใด ๆ ขึ้นมา เราไม่จำเป็นต้องกำหนดชนิดข้อมูลให้ตัวแปรนั้น ๆ เราสามารถกำหนดค่าให้กับตัวแปรนั้น ๆ ได้เลย และตัวแปรนั้นจะมีชนิดข้อมูลตามค่าที่เรากำหนด เช่น

a = 50
b = 'www.dcrub.com'
c = True

จากโค้ดตัวอย่างด้านบน บรรทัดที่ 1 ตัวแปร a จะมีชนิดข้อมูลเป็น int โดยอัตโนมัติ เพราะเรากำหนดค่าตัวเลข (int) ให้กับมัน บรรทัดที่ 2 ตัวแปร b จะมีชนิดเป็น string โดยอัตโนมัติ เพราะเรากำหนดค่าที่เป็นอักขระ (string) ให้มัน

ตัวแปรใน Python สามารถเปลี่ยนชนิดข้อมูลได้ตามค่าที่กำหนด

ตัวแปรในภาษา Python สามารถเปลี่ยนชนิดข้อมูลได้ตามค่าที่กำหนดให้ เช่น ตัวแปรเดียวกัน เมื่อกำหนดค่าเป็นตัวเลข ตัวแปรนั้นก็จะมีชนิดข้อมูลเป็น int ต่อมา ถ้าเรากำหนดค่าที่เป็นสตริงให้กับตัวแปรตัวเดียวกันนั้น ตัวแปรนั้นก็จะมีชนิดข้อมูลเป็น string โดยอัตโนมัติ

x = 1000
print("Now type of x : ")
print(type(x))
x = 'www.dcrub.com'
print("Now type of x : ")
print(type(x))

จากโค้ดตัวอย่าง บรรทัดที่ 1 กำหนดให้ตัวแปร x มีค่า 1000 ซึ่งเป็นข้อมูลชนิด int ตัวแปร x ก็จะมีชนิดข้อมูลเป็น int โดยอัตโนมัติ

หลังจากนั้น ในบรรทัดที่ 4 กำหนดค่าใหม่ให้ตัวแปร x โดยกำหนดเป็นข้อมูลชนิด string ตัวแปร x ก็จะมีชนิดข้อมูลเป็น string โดยอัตโนมัติ

ตัวแปรประเภทสตริง

เมื่อจะสร้างตัวแปรประเภทสตริง เราสามารถกำหนดค่าสตริงโดยใช้เครื่องหมาย single quote '' หรือ double quotes "" ก็ได้

a = "www.dcrub.com"
b = 'www.dcrub.com'

โค้ดด้านบน ทั้งตัวแปร a และตัวแปร b มีชนิดข้อมูลเป็นสตริงเหมือนกัน ถึงแม้ว่าจะใช้เครื่องหมายในการกำหนดค่าไม่เหมือนกันก็ตาม

การตั้งชื่อตัวแปรใน Python

การตั้งชื่อตัวแปรในภาษาไพธอน สามารถตั้งเป็นคำสั้น ๆ เช่น a, b, x, y หรือคำที่สื่อความหมายได้ เช่น age, name เป็นต้น โดยมีกฎเกณฑ์ที่ต้องทราบดังนี้

  • ชื่อตัวแปรต้องเริ่มต้นด้วยตัวอักษรหรือเครื่องหมายอันเดอร์สกอร์ (_) อย่างใดอย่างหนึ่ง
  • ชื่อตัวแปร ห้ามขึ้นต้นด้วยตัวเลขเด็ดขาด
  • ชื่อตัวแปร สามารถประกอบด้วย ตัวอักษร เครื่องหมายอันเดอร์สกอร์ (_) และตัวเลข อยู่ด้วยกัน แต่ห้ามขึ้นต้นด้วยตัวเลข
  • ชื่อตัวแปรในไพธอนเป็น case-sensitive คือ ตัวอักษรพิมพ์เล็กกับตัวอักษรพิมพ์ใหญ่ถือว่าเป็นคนละตัวกัน เช่น age กับ Age ถือว่าเป็นตัวแปรคนละตัวกัน

การกำหนดค่าให้กับตัวแปรหลายตัวพร้อมกัน

ในไพธอน เราสามารถกำหนดค่าให้ตัวแปรหลาย ๆ ตัวพร้อมกันได้ โดยการพิมพ์ตัวแปรแต่ละตัวในบรรทัดเดียวกันและคั่นแต่ละตัวแปรด้วยเครื่องหมายคอมม่า , ตามด้วยเครื่องหมาย = และกำหนดค่าลงไป โดยถ้ากำหนดค่าหลายค่าให้กับตัวแปรหลายตัวแปร ตัวแปรแต่ละตัวจะถูกกำหนดค่าตามลำดับ เช่น ตัวแปรที่ 1 จะถูกกำหนดค่าด้วยข้อมูลลำดับที่ 1 ไปเรื่อย ๆ ตามลำดับ ดังนี้

a, b, c = "www.", "dcrub", ".com"
print(a)
print(b)
print(c)

ลำดับการกำหนดค่าดังโค้ดด้านบน จะเป็นดังนี้

การกำหนดค่าให้กับตัวแปรหลายตัวพร้อมกัน

หรือเราสามารถกำหนดค่าให้ตัวแปรหลายตัวแปรด้วยค่าเดียวกัน ดังโค้ดต่อไปนี้

a, b, c = "www.dcrub.com"
print(a)
print(b)
print(c)

จากโค้ดด้านบน ตัวแปรทุกตัวจะมีค่าเดียวกันทั้งหมด

การแสดงค่าของตัวแปร

ในไพธอน จะใช้ฟังก์ชัน print ในการแสดงค่าของตัวแปร เช่น

a, b, c = "www.", "dcrub", ".com"
print(a)
print(b)
print(c)

เราสามารถใช้เครื่องหมาย + สำหรับแสดงค่าของตัวแปรต่อกันในแถวเดียวกันได้ด้วย เช่น

a, b, c = "www.", "dcrub", ".com"
print(a)
print(b)
print(c)
print(a + b + c)

แต่ห้ามใช้เครื่องหมาย + ต่อข้อมูลที่เป็นชนิดตัวเลขกับข้อมูลชนิดอื่น เพราะจะทำให้เกิด Error ขึ้น

Global Variables ตัวแปรประเภทโกลบอล

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

x = "Global"

def myFunction():
  print("X is " + x)
  
myFunction()

จากโค้ดตัวอย่าง เราประกาศตัวแปร x ไว้ภายนอกฟังก์ชัน myFunction() เราสามารถเรียกใช้ตัวแปร x ในฟังก์ชัน myFunction() หรือนอกฟังก์ชันดังกล่าวก็ได้

ถ้าเราประกาศตัวแปรชื่อเดียวกันทั้งนอกฟังก์ชันและในฟังก์ชัน ตัวแปรนอกฟังก์ชันจะเป็นตัวแปรแบบ Global มีค่าเหมือนเดิม ส่วนตัวแปรในฟังก์ชันจะเป็นตัวแปรแบบ Local ไม่เกี่ยวกันกับตัวแปรนอกฟังก์ชัน และเมื่อเรียกใช้งานตัวแปรนั้นในฟังก์ชัน จะเป็นการเรียกตัวแปรที่อยู่ในฟังก์ชัน ดังตัวอย่าง

x = "Global"

def myFunction():
    x = 'Local'
    print("x inside function is " + x)

myFunction()

print("x outside function is " + x)

จากตัวอย่าง ตัวแปร x ในบรรทัดที่ 1 เป็นตัวแปรแบบ Global ส่วนตัวแปร x ในบรรทัดที่ 4 ถูกประกาศไว้ในฟังก์ชัน myFunction() ถึงจะมีชื่อเดียวกันกับตัวแปรตัวแรกในบรรทัดที่ 1 แต่ถือว่าไม่เกี่ยวข้องกัน

บรรทัดที่ 5 เราเขียนคำสั่งให้แสดงค่าของตัวแปร x จะเป็นการเรียกใช้งานตัวแป x ที่อยู่ในฟังก์ชัน ที่มีค่าเป็น ‘Local’

ส่วนบรรทัดที่ 9 เราเขียนคำสั่งให้แสดงค่าของตัวแปร x อีกเช่นกัน ซึ่งตรงนี้จะเป็นการเรียกใช้ตัวแปร x ในบรรทัดที่ 1 ซึ่งเป็นตัวแปรแบบ Global

ผลลัพธ์

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

โดยปกติ เมื่อเราประกาศตัวแปรไว้ภายในฟังก์ชัน ตัวแปรนั้นจะเป็นตัวแปรแบบ Local โดยอัตโนมัติ และสามารถเรียกใช้ได้เฉพาะภายในฟังก์ชันนั้นเท่านั้น

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

def myFunction():
    global x
    x = "This is variable in function"

myFunction()

print(x)

จากโค้ดตัวอย่าง เราประกาศตัวแปร x ไว้ภายในฟังก์ชัน myFunction() โดยกำหนดคีย์เวิร์ด global กำกับไว้ด้านหน้าตัวแปรด้วย (บรรทัดที่ 2)

หลังจากนั้นในบรรทัดที่ 5 เรียกใช้งานฟังก์ชัน myFunction() เพื่อให้ฟังก์ชันทำงาน

บรรทัดที่ 7 เขียนคำสั่งให้แสดงค่าของตัวแปร x โดยเขียนไว้ภายนอกฟังก์ชัน myFunction() แต่เราสามารถเรียกใช้ตัวแปร x ได้ เพราะตัวแปร x เป็นตัวแปรประเภท Global

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

x = "This is variable outside function"
print("Before assigning : " + x)
def myFunction():
    global x
    x = "This is variable inside function"

myFunction()

print("After assigning : " + x)
  • บรรทัดที่ 1 ประกาศตัวแปร x เป็นแบบ Global
  • บรรทัดที่ 2 สั่งให้แสดงค่าของตัวแปร x
  • บรรทัดที่ 4 อ้างถึงตัวแปร x โดยระบุคีย์เวิร์ด global ไว้ด้านหน้าตัวแปร
  • บรรทัดที่ 5 กำหนดค่าใหม่ให้กับตัวแปร x
  • บรรทัดที่ 7 สั่งให้ฟังก์ชั่นทำงาน
  • บรรทัดที่ 9 สั่งแสดงค่าของตัวแปร x ออกมาอีกครั้ง