โดย ชิตพงษ์ กิตตินราดร | มกราคม 2563
บทนี้จะแนะนำ Python สำหรับผู้ที่ไม่มีพื้นฐานการเขียนโค้ดเลย โดยจะอธิบายเฉพาะเรื่องพื้นฐานที่สำคัญจริงๆ อย่างสั้นและกระชับที่สุด เพื่อให้สามารถเริ่มต้นได้และสามารถใช้ Machine learning framework เช่น scikit-learn และ TensorFlow
ขอย้ำอีกรอบ ว่าสิ่งที่แนะนำนี้ไม่ได้ครบถ้วนสมบูรณ์ตามหลักวิชาการ แต่เน้นกระชับ สั้น ง่าย ให้เริ่มต้นเรียนรู้ได้เท่านั้น
Python เป็นภาษาคอมพิวเตอร์แบบ High-level นั่นหมายความว่าเราสามารถสั่งให้ Python ทำสิ่งต่างๆ ได้ในลักษณะที่คล้ายกับภาษาคน โดยไม่ต้องไปสนใจเรื่อง "หลังบ้าน" ของคอมพิวเตอร์มากนัก เช่นการจัดการหน่วยความจำ การระบุประเภทตัวแปร เป็นต้น ทำให้เขียนง่าย อ่านง่าย เข้าใจง่าย
นอกจากนั้น Python ยังเป็นภาษาแบบ Interpret หมายความว่าเวลาเราเรียก Script หรือโปรแกรมที่เขียนด้วย Python เครื่องก็จะตีความ คำนวน และแสดงผลทันที โดยไม่ต้องสั่งแปลงเป็นภาษาเครื่องก่อนจะรันโปรแกรม (เรียกว่าการ Compile) ทำให้สะดวกรวดเร็วในการพัฒนาโปรแกรม แต่แลกมากับการที่ความเร็วและประสิทธิภาพในการคำนวนจะด้อยกว่าภาษาที่ต้อง Compile เช่น C++ เป็นต้น
ปัจจุบัน Python เป็นภาษา "มาตรฐาน" สำหรับงานวิทยาศาสตร์ข้อมูล, AI, Machine learning นอกจากนั้นยังใช้ในอีกหลายวงการ เช่นการสร้างเว็บไซต์ ผ่าน Framework เช่น Django และ Flask เป็นต้น
ขั้นแรกให้โหลด Python มาติดตั้งก่อน โดยเข้าไปที่เว็บไซต์ของ Python ไปที่หน้า Downloads และทำตามคำแนะนำได้เลย
อย่างไรก็ตาม ถ้าจะใช้ Python ในงานวิทยาศาสตร์ข้อมูล, AI, Machine learning แนะนำวิธีติดตั้งอีกแบบ คือการติดตั้ง Python และ Library มาตรฐานที่มักจะได้ใช้แบบรวดเดียวจบ ผ่าน Anaconda ก็จะได้ Library พื้นฐาน เช่น numpy, pandas, matplotlib มาเลย ส่วน scikit-learn และ TensorFlow ก็สามารถติดตั้งได้ง่ายๆ โดยใช้คำสั่ง conda
ใน Commandline เช่น conda install scikit-learn
และ conda install tensorflow
เป็นต้น รายละเอียดเรื่องการติดตั้งและจัดการ Package จะไม่อธิบายมาก สามารถอ่านและศึกษาได้โดยตรง
การเขียนโค้ดและเรียกโปรแกรมที่เขียนด้วย Python มีหลายวิธี ดังนี้
ipython
จาก Commandline จะสามารถเขียนโค้ดและรันทีละบรรทัดๆ เหมาะสำหรับการทำลองไอเดียสั้นๆ เร็วๆ หรือใช้ Python เป็นเครื่องคิดเลขjupyter lab
จาก Commandline จะเปิดเว็บขึ้นมาในลักษณะ Web-based IDE นั่นเอง สำหรับงาน Data science/ML แนะนำวิธีนี้ เพราะสามารถแยกโค้ดเป็น Cell ย่อยๆ และสามารถใส่ Cell ที่เป็นข้อความธรรมดาเพื่ออธิบายโค้ดของเราควบคู่ไปได้เมื่อเรียกใช้ Python ผ่านช่องทางที่ถนัดแล้ว ก็มาเริ่มกันเลย
การคำนวนและการแสดงผล ทำได้ง่ายมาก เช่น:
2*0.5/3
จะได้คำตอบเป็น 0.3333333333333333 สังเกตว่าถ้าเราคำนวนหลายๆ อย่างใน Term เดียว เราอาจจะไม่แน่ใจว่า Python จะคำนวนสัญลักษณ์ไหนก่อน ซึ่งจริงๆ มีลำดับที่ชัดเจน แต่ถ้าไม่อยากจำ แนะนำว่าให้ใส่วงเล็บให้ชัดเจนไปเลย เช่น:
(2*0.5)/3
นอกจากบวก +
ลบ -
คูณ *
หาร /
ยังมี Operator ที่น่ารู้ เช่น ยกกำลัง **
Floor division //
(หารไม่เอาเศษ) และ Modulus %
(หารแล้วเอาแค่เศษ) สามารถดูเพิ่มเติมได้จากเว็บต่างๆ เช่นที่นี่
เวลาเราเขียนโค้ด เรามักจะต้องการเก็บข้อมูลบางอย่างเอาไว้ก่อนเพื่อเรียกใช้ภายหลัง เราเรียกที่เก็บข้อมูลนี้ว่าตัวแปร หรีอ Variable
ตัวอย่างเช่น:
age = 50
name = "John"
print(age)
print(name)
จะได้คำตอบคือ:
50
John
สังเกตว่า ค่าของตัวแปรที่เป็นตัวเลข สามารถใส่ได้เลย ส่วนถ้าเป็นตัวหนังสือ ต้องใช้ Quotation ครอบไว้ จะใช้ "
หรือ '
ก็ได้
เราใช้ฟังก์ชัน print()
เพื่อแสดงผลสิ่งที่อยู่ในวงเล็บ เราเรียกสิ่งที่อยู่ในวงเล็บว่า Argument โดยในที่นี้เราจะใส่ตัวแปรของเราเป็น Argument ทำให้ Python print ค่าของตัวแปรของเราออกมา อนึ่ง Argument อาจมีได้หลายอัน ขึ้นอยู่กับว่า Function นั้นรองรับ Argument อะไรบ้าง โดยเราใช้ Comma ,
คั่นระหว่างแต่ละ Argument ซึ่งเดี๋ยวเราจะเห็นตัวอย่างเมื่ออธิบาย Function อื่นๆ ต่อไป
ทีนี้เราจะลองใช้ประโยชน์จากตัวแปร โดยเราต้องการที่จะบอกว่า John อายุ 50 ปี:
print(name + ' is ' + str(age) + ' years old.')
ได้คำตอบว่า:
John is 50 years old.
ลองมาดูกันว่าเกิดอะไรขึ้นบ้าง:
+
ในที่นี้ คือการเอาข้อความ (เรียกว่า String) มาต่อกัน (เรียกการกระทำแบบนี้ว่า Concatenate)age
จากตัวเลขจำนวนเต็ม (Integer หรือ int) ให้เป็นข้อความ (String หรือ str) ด้วยการเรียกฟังก์ชัน str()
is
และก่อน years old
เพื่อให้ข้อความที่ออกมามีการเว้นวรรคที่ถูกต้อง เพราะการ Concatenate ไม่ได้เว้นวรรคให้เราทีนี้ถ้าเรากำหนดตัวแปรใหม่ เช่น age = 35
แล้วเรียก print
เหมือนเดิมอีกรอบ Output ที่ได้ก็จะเปลี่ยนตามตัวแปรใหม่ นั่นก็คือ John is 35 years old.
ตัวแปรสามารถเก็บข้อมูลได้หลายประเภท เราจะทำความรู้จักประเภทข้อมูลพื้นฐานที่สำคัญและใช้บ่อยดังนี้:
str
int
, float
list
, tuple
dict
bool
เรารู้จัก String กันแล้วก่อนหน้านี้ String มีคุณสมบัติที่น่าสนใจบางอย่าง เช่น:
1) String เป็น Array หมายความว่าตัวอักษรแต่ละตัวจะถูกมองว่าเป็นข้อมูล 1 ชิ้น ดังนั้นเราจึงสามารถจัดการตัวอักษรใน String ได้หลากหลาย เช่น:
หาความยาว โดยใช้ฟังก์ชัน len()
a = "Hello, World!"
print(len(a))
ได้คำตอบคือ 13
ตัดเอา Space ว่างท้าย String ออก โดยใช้ Method .strip()
(Method คือฟังก์ชันที่ใช้ได้กับตัวแปร โดยการนำไปต่อท้ายตัวแปรได้ทันที เพื่อกระทำการบางอย่างกับข้อมูลในตัวแปรนั้น ลองดูตัวอย่างข้างล่าง)
a = " Hello, World! "
print(a.strip())
ได้คำตอบว่า Hello, World!
โดยไม่มี Space หลัง !
แยกคำออกจากกัน โดยใช้ Method .split()
a = "My name is John."
print(a.split())
จะเป็นการแยกประโยคออกเป็นคำๆ โดยแยกที่ Space ได้ผลคือ ['My', 'name', 'is', 'John.']
ทั้งนี้สามารถกำหนดได้ว่าให้แยกที่พบอักษรอะไร เช่น a.split(",")
คือให้แยกเมื่อพบ Comma เป็นต้น
สังเกตว่า ['My', 'name', 'is', 'John.']
เป็นข้อมูลประเภท List ซึ่งจะอธิบายภายหลังว่าคืออะไร ตอนนี้เพียงให้รู้ว่า List นี้มีข้อมูล 4 รายการ คือคำแต่ละคำนั่นเอง คั่นด้วย Comma
เลือกเฉพาะบางตัวอักษรตามลำดับที่ เป็นความสามารถที่เรียกว่า Slicing ซึ่งใช้ได้กับทุกอย่างที่มีลักษณะเป็น Array หลักการคือ Python จะกำหนดให้ข้อมูลชิ้นแรกมีรหัส Index 0 และเพิ่มขึ้นทีละ 1 ต่อไปเรื่อยๆ ดังนั้น:
a = "Hello, World!"
print(a[1])
จะได้ e
เราสามารถเลือก Slicing เป็น Range ได้ โดยใช้ Colon :
คั่น โดยจะนับ Index เริ่มต้นเป็นชิ้นแรก (Inclusive) แต่ Index ตัวขบขะไม่นับตัวมันเอง (Exclusive) ตัวอย่างเช่น:
a = "Hello, World!"
print(a[2:5])
จะได้ llo
สุดท้าย ถ้าใน String มีเครื่องหมายที่ปกติจะถูกตีความว่ามีความหมายพิเศษ เช่น "
เราจะไม่สามารถใส่เครื่องหมายนั้นลงไปได้ตรงๆ ถ้าอยากใส่ ต้องใช้ Backslash \
ไว้ก่อน เราเรียก \
ว่า Escape character ตัวอย่างเช่น:
print("My name is \"John\".")
จะได้ My name is "John".
แถม Escape character ที่มีประโยชน์มาก คือ \n
คือการขึ้นบรรทัดใหม่ ส่วน \t
คือ Tab
อ่านเพิ่มเติมเกี่ยวกับ String ได้ที่นี่
Int (Integer) คือจำนวนเต็ม เช่น -1, 0, 5, 100 ส่วน Float คือจำนวนที่มีทศนิยม เช่น -0.12, 5.816497 เป็นต้น เราสามารถดูได้ว่าตัวเลขของเราคือประเภทอะไร โดยใช้ฟังก์ชัน type()
เช่น:
x = 1
y = 2.5
print(type(x))
print(type(y))
จะได้:
<class 'int'>
<class 'float'>
เราสามารถแปลงระหว่าง int
กับ float
ได้ โดยใช้ฟังก์ชัน int()
และ float()
List เป็นข้อมูลแบบ Array ที่มีสมาชิกหลายตัว สามารถผสมสมาชิกประเภทต่างๆ กันได้ และสามารถสลับตำแหน่ง เปลี่ยนแปลงข้อมูลได้ จึงใช้งานได้หลายวัตถุประสงค์ยืดหยุ่นมาก เราสามารถสร้าง List โดยการใช้ Bracket []
เช่น:
emptylist = []
print(emptylist)
ก็จะได้ List ว่างๆ คือ []
ส่วน List ที่มีสมาชิก ก็ใส่สมาชิกนั้นลงไปเลย คั่นแต่ละตัวด้วย Comma เช่น:
fruitlist = ["apple", "banana", "cherry"]
print(fruitlist)
ก็จะได้ ['apple', 'banana', 'cherry']
สมมุติเราอยากเลือกแค่ banana กับ cherry ก็ใช้ Slicing ได้ เช่น:
fruitlist = ["apple", "banana", "cherry"]
print(fruitlist[1:])
ก็จะได้ ['banana', 'cherry']
สังเกตว่าตอน Slice ถ้าเราไม่ใส่ Index ตัวจบ ก็แปลว่าให้เลือกไปจนถึงสมาชิกตัวสุดท้าย โดยรวมตัวสุดท้ายด้วย ในทางกลับกัน ถ้าไม่ใส่ Index ตัวเริ่ม ก็คือให้เริ่มที่สมาชิกตัวแรกเลย
เราสามารถเปลี่ยนสมาชิกใน List ง่ายๆ เช่น:
fruitlist = ["apple", "banana", "cherry"]
fruitlist[1] = "pineapple"
print(fruitlist)
จะได้ ['apple', 'pineapple', 'cherry']
ทันที
ส่วนถ้าจะเพิ่มสมาชิก ก็ทำได้โดยใช้ Method .append()
เช่น:
fruitlist = ["apple", "banana", "cherry"]
fruitlist.append("orange")
print(fruitlist)
จะได้ ['apple', 'banana', 'cherry', 'orange']
นอกจากนี้ยังมีการแทรกสมาชิก ใช้ .insert(index, object)
โดยใส่ Index ที่ต้องการแทรกลงไปเป็น Argument ก่อนจะใส่ Object ที่ต้องการแทรก ส่วนการลบสมาชิก ก็สามารถใช้ .remove(object)
ซึ่งใส่ชื่อ Object เป็น Argument หรือไม่ก็ .pop(index)
ซึ่งใช้หมายเลข Index เป็น Argument (ถ้าไม่ใส่จะหมายถึงให้เอารายการสุดท้ายออก)
ถ้าต้องการลบสมาชิกทั้งหมดใน List ให้เหลือ List ว่างๆ ก็ใช้ .clear()
สุดท้าย เราสามารถเอา List มาต่อกันได้ โดยการใช้เครื่องหมาย +
เช่น:
list1 = ["a", "b" , "c"]
list2 = [1, 2, 3]
list3 = list1 + list2
print(list3)
จะได้ ['a', 'b', 'c', 1, 2, 3]
สุดท้าย เราสามารถนับจำนวนสมาชิกใน List ได้ โดยใช้ฟังก์ชัน len()
เช่นเดียวกับการนับจำนวนตัวอักษรใน String
List จะมีประโยชน์มากเมื่อใช้คู่กับ For loop ซึ่งจะอธิบายในส่วนถัดๆ ไป
สามารถอ่านเรื่อง List เพิ่มเติมได้ที่นี่
Tuple เป็นข้อมูลแบบ Array ที่มีสมาชิกหลายตัวคล้ายกับ List ต่างกันที่ Tuple นั้นไม่สามารถเปลี่ยนแปลงข้อมูลข้างในได้ เราสามารถสร้าง Tuple โดยใช้วงเล็บ ()
เช่น:
emptytuple = ()
print(emptytuple)
ก็จะได้ List ว่างๆ คือ ()
ส่วนคุณสมบัติอื่นๆ ก็เหมือนกับ List ต่างตรงที่ไม่สามารถเพิ่ม ลบ สิ่งที่อยู่ใน Tuple ได้
อ่านเพิ่มเกี่ยวกับ Tuple ได้ที่นี่
Dictionary เป็นประเภทข้อมูลที่เก็บข้อมูลแต่ละตัวเป็นคู่ ซึ่งประกอบด้วยรหัส (Key) กับค่า (Value) เรียกว่า Key-value pair เราสามารถสร้าง Dictionary ด้วยการใช้วงเล็บปีกนก {}
ตัวอย่างเช่น:
profiledict = {
"name": "John",
"age": 50,
"sex": "male"
}
print(profiledict)
จะได้ {'name': 'John', 'age': 50, 'sex': 'male'}
สังเกตว่าข้อมูลแต่ละคู่จะใช้ Comma แบ่ง
เราสามารถเรียก Value ของ Key-value pair โดยการเรียก Key ที่ต้องการ โดยเรียกใน Bracket เช่น:
print(profiledict["name"])
ก็จะได้ Value ของ Key "name"
นั่นก็คือ "John"
อีกวิธีในการเรียก Value คือการใช้ Method get(key)
ก็ได้ผลเหมือนกัน
เราสามารถเปลี่ยน Value ได้ โดยการเรียก Key แล้วกำหนด Value ใหม่โดยใช้เครื่องหมาย =
เช่น:
profiledict = {
"name": "John",
"age": 50,
"sex": "male"
}
profiledict["age"] = 35
print(profiledict)
ก็จะได้ {'name': 'John', 'age': 35, 'sex': 'male'}
ตามที่ต้องการ
การเพิ่ม Key-value pair ใหม่ใน Dict ให้ทำเหมือนกับการเปลี่ยน Value โดยกำหนด Key และ Value ตามที่ต้องการได้เลย เช่น:
profiledict = {
"name": "John",
"age": 50,
"sex": "male"
}
profiledict["address"] = "Bangkok"
print(profiledict)
จะได้ {'name': 'John', 'age': 50, 'sex': 'male', 'address': 'Bangkok'}
ส่วนการลบ Key-value pair ก็ใช้ Method .pop(key)
การ Loop สมาชิกใน Dictionary โดยปกติจะได้ Key ออกมา แต่ถ้าอยากได้ Value ก็สามารถทำได้ โดยจะอธิบายในส่วน For loop
อ่านเพิ่มเกี่ยวกับ Dictionary ได้ที่นี่
Boolean คือข้อมูลที่มีสองค่าเท่านั้น คือ True
หรือ False
โดย Python จะพิจารณาจาก Expression ที่ใส่ เช่น:
print(10 > 9)
print(10 == 9)
print(10 < 9)
คำตอบคือ:
True
False
False
สังเกตว่า เวลาเปรียบเทียบความเท่ากัน ใช้ ==
ไม่ใช่ =
เพราะ =
เป็นเครื่องหมายสำหรับการกำหนดค่าให้กับตัวแปร (Assignment) ไม่ใช่การเปรียบเทียบว่าจริงหรือไม่ (Validation)
สำหรับรายละเอียดอื่นๆ อ่านเพิ่มได้ที่นี่
บ่อยครั้งที่เราต้องการให้โค้ดของเรามีความฉลาด เช่นสามารถทำสิ่งหนึ่งภายใต้เงื่อนไขบางอย่าง หรือให้ทำสิ่งเดิมวนซ้ำๆ จนกระทั่งบรรลุถึงเงื่อนไขที่ต้องการ ความสามารถแบบนี้เรียกว่า Conditions หรือบางทีก็เรียกว่า Flow control เป็นหัวใจของการเขียนโค้ด ควรจะเรียนรู้ไว้ให้คล่อง
เราจะทำความรู้จัก Conditions 3 รูปแบบ คือ:
เราสามารถกำหนดให้โปรแกรม เรียกโค้ดบรรทัดหนึ่งๆ ก็ต่อเมื่อเงื่อนไขบางอย่างเป็นจริง
If: การกำหนดเงื่อนไข ทำได้โดยการเขียน if
เว้นวรรค ตามด้วย Statement ที่เป็นเงื่อนไข ตามด้วย Colon :
เช่น:
a = 10
b = 25
if b > a:
print("b is greater than a")
เนื่องจากในกรณีนี้ b
มากกว่า a
ตามเงื่อนไขใน if (statement):
Python ก็จะเรียกโค้ดที่อยู่บรรทัดถัดไป โดยจะเรียกเฉพาะบรรทัดที่ถูก Indent เท่านั้น การ Indent ทำได้โดยการกด Tab หรือเคาะ Space 2 หรือ 4 ที
Elif: ถ้าเราต้องการสร้างเงื่อนไขต่อไป ในกรณีที่เงื่อนไขแรกไม่เป็นจริง ก็ใช้ elif
ซึ่งย่อมาจาก Else if เช่น:
a = 25
b = 25
if b > a:
print("b is greater than a")
elif b == a:
print("b equals a")
Else: แต่ถ้าเราต้องการเพียงแค่จะดักเงื่อนไขที่ไม่เป็นจริงจาก If ด้านบน ก็เพียงใช้ else
ดังนี้:
a = 50
b = 25
if b > a:
print("b is greater than a")
else:
print("b is not greater than a")
And/Or: ใน Statement เราสามารถใช้ Operator and
หรือ or
เชื่อม 2 Statement เข้าด้วยกัน เพื่อสร้างเงื่อนไขที่เจาะจงขึ้นได้ โดย and
แปลว่าจะต้องเป็นจริงทั้ง 2 Statement ส่วน or
เป็นจริง Statement เดียวก็ถือว่าจริง
สามารถศึกษาเพิ่มเติมเกี่ยวกับ If...Else ได้ที่นี่
For loop ใช้สำหรับการวนโค้ดซ้ำๆ ตามสมาชิกของข้อมูลแบบ Text, Sequence, และ Mapping นั่นก็คือ str
, list
, tuple
, และ dict
สำหรับผู้เริ่มต้นอาจจะงง จึงให้ลองดูตัวอย่างดังนี้:
for i in "banana":
print(i)
จะได้ Output ว่า:
b
a
n
a
n
a
หลักการทำงานของ For loop คือการกำหนดตัวแปรขึ้นมาตัวหนึ่ง เช่น i
(นิยมใช้ เพราะย่อมาจาก Iteration แปลว่าการทำซ้ำเป็นรอบ) แล้วกำหนดค่า i
ให้เป็นสมาชิกแต่ละตัวตั้งแต่ตัวแรกไปจนถึงตัวสุดท้าย โดยให้กระทำกับ i
ตามโค้ดที่ถูก Indent ไว้ เช่นในที่นี้ ก็เพียงให้พิมพ์ค่า i
ออกมา โดยการวนแต่ละรอบ จะ Output ออกหนึ่งบรรทัด พอวนรอบถัดไป ก็ Output ออกบรรทัดใหม่ ทำอย่างนี้ไปเรื่อยๆ จนถึงสมาชิกตัวสุดท้าย
ลองมาดู For loop สำหรับ List กัน:
fruitlist = ["apple", "banana", "cherry"]
for i in fruitlist:
print(i)
จะได้:
apple
banana
cherry
หลายคนอาจสงสัยว่า จะทำอย่างนี้ไปทำไม คำตอบคือมันจะมีประโยชน์เมื่อไปผสมกับอย่างอื่นที่ทำให้ Output นั้นมีความหมาย ตัวอย่างเช่น:
fruitlist = ["apple", "banana", "cherry"]
count = 1
for i in fruitlist:
print("Fruit number " + str(count) + " is " + i + ".")
count = count + 1
print("There are " + str(count-1) + " fruit types.")
Output ที่ได้คือ:
Fruit number 1 is apple.
Fruit number 2 is banana.
Fruit number 3 is cherry.
There are 3 fruit types.
อธิบายดังนี้:
count = 1
count
และ i
ซึ่งก็คือชื่อผลไม้ใน List นั่นเองcount
ให้เพิ่มขึ้นรอบละ 1 ซึ่งทำได้โดยการกำหนด count = count + 1
หรือจะย่อว่า count += 1
ก็ได้count
จะเท่ากับ 2 เมื่อ For loop วนรอบสอง ก็จะแสดงค่า count
ของรอบนี้ เป็น 2 ตามที่ต้องการ ซึ่งจับคู่กับ banana
ทำอย่างนี้ไปเรื่อยๆ จนจบ Listcount
แต่ต้องลบ 1 เพราะรอบสุดท้าย คือรอบที่ 3 ได้จบรอบด้วยการบวก count
ไปอีก 1 ทำให้ count
ตอนจบเท่ากับ 4 ตอนพิมพ์จำนวนสรุปตอนจบนี้ ต้องทำ "นอก Loop" นั่นคือให้กลับไปสร้าง Statement ที่ไม่ได้อยู่ใน Indent นั่นเอง เพราะถ้ายังอยู่ใน Indent โปรแกรมก็จะเรียกโค้ดบรรทัดนี้ทุกครั้งที่วน Loop ซึ่งไม่ใช่สิ่งที่เราต้องการlen(object)
เช่น print("There are " + str(len(fruitlist)) + " fruit types.")
สังเกตว่าเราใช้ str()
คลุมรอบ len()
อีกที เพราะ len()
ให้ผลเป็นตัวเลข ซึ่งเอามา Concatenate กับ Text ไม่ได้ ต้องเปลี่ยนตัวเลขให้เป็น str
เสียก่อนเราสามารถหยุด For loop ได้ด้วยการใช้ break
และ continue
1) break
จะหยุด For loop ก่อนที่จะวนครบทุกรายการ โดยจะรันรายการล่าสุดเป็นรายการสุดท้าย:
fruits = ["apple", "banana", "cherry"]
for i in fruits:
print(i)
if i == "banana":
break
จะได้:
apple
banana
2) continue
จะข้ามรายการล่าสุด แล้วไปต่อที่รายการถัดไป:
fruits = ["apple", "banana", "cherry"]
for i in fruits:
if i == "banana":
continue
print(i)
จะได้:
apple
cherry
สามารถศึกษาเพิ่มเติมเกี่ยวกับ For loop ได้ที่นี่
While loop เป็นการวนซ้ำตราบใดที่เงื่อนไขยังคงเป็นจริง เช่น:
i = 1
while i < 6:
print(i)
i += 1
จะได้:
1
2
3
4
5
การใช้ While loop ให้ระวังอย่าลืมบวก i
เพิ่ม เพื่อให้มีจุดที่ Loop จะวนจนไปชนเงื่อนไขที่ไม่เป็นจริง มิฉะนั้น หากเงื่อนไขเป็นจริงเสมอ While loop ็จะวนตลอดกาล
การหยุด While loop สามารถใช้ break
และ continue
ได้เช่นเดียวกับ For loop
สามารถศึกษาเพิ่มเติมเกี่ยวกับ While loop ได้ที่นี่
Function คือกลุ่มโค้ดที่จะรันต่อเมื่อถูกเรียกใช้เท่านั้น การสร้างฟังก์ชัน ให้ใช้ def
เว้นวรรค ตามด้วยชื่อฟังก์ชันที่ต้องการ ตามด้วย Colon :
ตัวอย่างเช่น:
def greeting():
print("Hello!")
พอจะเรียกฟังก์ชัน ก็เพียงเรียก greeting()
ก็จะได้:
Hello!
สังเกตว่าที่ผ่านมา เรารู้จักกับฟังก์ชันที่มาพร้อมกับ Python หลายตัวแล้ว เช่น str() หรือ len() ฟังก์ชันเหล่านี้ก็เหมือนกับฟังก์ชันที่เราสร้างขึ้นเอง ต่างกันที่ Python เตรียมมาให้เราแล้วเท่านั้นเอง
เราสามารถใส่ข้อมูลเข้าไปในฟังก์ชัน เพื่อให้ฟังก์ชันทำอะไรบางอย่างกับข้อมูล แล้วให้ผลลัพธ์ออกมาได้ โดยผลลัพธ์ก็สามารถออกมาเป็นข้อมูลได้เช่นกัน ข้อมูลที่เราใส่ในฟังก์ชัน เรียกว่า Argument (บางทีก็เรียกว่า Parameter เวลาพูดถึงตัวแปรที่อยู่ในวงเล็บตอนสร้างฟังก์ชัน) โดยใส่ในวงเล็บที่ต่อท้ายชื่อฟังก์ชันตอนเราสร้างฟังก์ชัน ตัวอย่างเช่น:
def greeting(name):
print("Hello, " + name + "!")
เวลาเรียกฟังก์ชัน ก็ใส่ Argument ที่เราต้องการลงไป เช่น:
greeting("John")
ก็จะได้:
Hello, John!
ถ้าเรากำหนด Argument กี่ตัวตอนสร้าง Function ตอนเรียกเราก็ต้องใส่ Argument จำนวนเท่ากัน เข่น:
def greeting(fname, lname):
print("Hello, " + fname + " " + lname + "!")
เวลาเรียกฟังก์ชัน ก็ใส่ Argument ทั้งสองลงไปตามลำดับ เช่น:
greeting("John", "Doe")
ก็จะได้:
Hello, John Doe!
หากเราไม่รู้ว่าตอนเรียกฟังก์ชัน จะมี Argument ที่ป้อนเข้าไปกี่ตัว เราสามารถทำดังนี้ตอนสร้างฟังก์ชัน:
1) ใช้ Arbitary argument หรือ *args
โดยการใส่ *
ก่อนชื่อ Parameter ตอนสร้างฟังก์ชัน วิธีนี้จะเป็นการส่ง Tuple
เข้าไปในในฟังก์ชัน โดยไม่ต้องระบุจำนวน Argument ที่แน่นอน ตัวอย่างเช่น:
def fruitlist(*fruit):
print("The last fruit is " + fruit[-1] + ".")
fruitlist("apple", "banana", "cherry")
ก็จะได้ The last fruit is cherry.
สังเกตว่าในฟังก์ชัน เราเลือกผลไม้รายการสุดท้ายโดยการ Slice ด้วย [-1]
ซึ่งหมายถึงรายการสุดท้าย
2) ใช้ Keyword argument หรือ kwargs
โดยการใส่ Key-value เข้าไปในฟังก์ชัน โดยตอนเรียกให้เรียก Key ก็จะได้ Value วิธีนี้ต้องระบุจำนวน Argument ที่แน่นอน เช่น:
def fruitlist(fruit1, fruit2, fruit3):
print("The last fruit is " + fruit3 + ".")
fruitlist(fruit1 = "apple", fruit2 = "banana", fruit3 = "cherry")
ก็จะได้ The last fruit is cherry.
เช่นเดิม
3) ใช้ Arbitary keyword argument หรือ **kwargs
โดยการใส่ **
ก่อนชื่อ Parameter ตอนสร้างฟังก์ชัน วิธีนี้จะเป็นการส่ง Dictionary
ของ Argument เข้าไปในฟังก์ชัน โดยตอนเรียกก็เรียก Key จะได้ Value ออกมา วิธีนี้ไม่ต้องระบุจำนวน Argument ที่แน่นอน เช่น:
def fruitlist(**fruits):
print("The last fruit is " + fruits["fruit3"] + ".")
fruitlist(fruit1 = "apple", fruit2 = "banana", fruit3 = "cherry")
ก็จะได้ The last fruit is cherry.
เช่นเดียวกัน
เราสามารถใส่ List หรือ Dictionary ที่กำหนดไว้แล้ว ลงไปเป็น Argument ได้ เช่น:
fruits = ["apple", "banana", "cherry"]
def fruitlist(fruits):
print("The last fruit is " + fruits[-1] + ".")
fruitlist(fruits)
หรือ:
fruitdict = {
"fruit1": "apple",
"fruit2": "banana",
"fruit3": "cherry"
}
def fruitlist(fruitdict):
print("The last fruit is " + fruitdict["fruit3"] + ".")
fruitlist(fruitdict)
ก็จะได้ The last fruit is cherry.
เช่นเดียวกันทั้งหมด
เราสามารถให้ฟังก์ชัน Output ค่าออกมาได้ เช่น:
def bmi(weight, height):
return weight/(height**2)
bmi(70, 1.72)
สามารถศึกษาเพิ่มเติมเกี่ยวกับ Function ได้ที่นี่
Python มี Library ที่ขยายความสามารถเฉพาะทางให้เลือกใช้จำนวนมาก เช่น numpy เป็น Library สำหรับการประมวลผลแบบ Array หลายมิติที่มีประสิทธิภาพสูง หรือ pandas เอาไว้จัดการข้อมูลแบบตาราง เป็นต้น
ก่อนจะใช้ Library เหล่านี้ เราต้องติดตั้งเสียก่อน โดยถ้าใช้ Python ปกติ ก็ใช้ pip
เป็นตัวติดตั้งและจัดการ Package เช่น pip install numpy
ส่วนถ้าใช้ Anaconda ที่แนะนำในตอนแรก ก็ใช้คำสั่ง conda
จัดการ เช่น conda install numpy
เป็นต้น
การเรียกใช้ Library มีสองวิธีใหญ่ๆ ได้แก่:
1) เรียกโดยตรง โดยใช้ import
เช่น:
import numpy
เวลาจะใช้งาน ก็ต้องเรียก numpy
ก่อน เช่น:
a = numpy.array([[1, 2], [3, 4]])
2) เรียกโดยการเปลี่ยนชื่อ หรือที่เรียกว่า Alias เพื่อย่นชื่อให้สั้นลงโดยใช้ as
จะได้เรียกใช้สะดวก เช่น:
import numpy as np
เวลาจะใช้งาน ก็สามารถเรียก np
ได้เลย เช่น:
a = np.array([[1, 2], [3, 4]])
3) เรียกเฉพาะบางฟังก์ชันหรือ Class ที่จะใช้ โดยใช้ from...import
เช่น:
from numpy import array
เวลาเรียก ก็เรียกชื่อฟังก์ชัน array
เลย เช่น:
a = array([[1, 2], [3, 4]])
สามารถศึกษาเพิ่มเติมเกี่ยวกับการ Import library ได้ที่นี่
ทั้งหมดนี้น่าจะพอให้สามารถเริ่มต้นเขียนโค้ดด้วย Python เรียกใช้ Library ต่างๆ และประยุกต์นำไปแก้ปัญหาต่างๆ ได้