and, as, assert, break, class, continue, def, del, elif, else, except, exec, finally, for, from, global, if, import, in, is, lambda, not, or, pass, print, raise, return, try, while, with, yield
การตั้งชื่อตัวแปร นิยมใช้การตั้งชื่อแบบ result = "abcdefg"
# a b c d e f g
# [0] [1] [2] [3] [4] [5] [6] # นับจาก หน้าไปหลัง
# [-7] [-6] [-5] [-4] [-3] [-2] [-1] # นับจาก หลังไปหน้า
print(result[3]) # d
print(result[6]) # g
print(result[-2]) # f1 ก็คือใช้ตัวพิมพ์เล็กทั้งหมดและแบ่งคำด้วยresult = "abcdefg"
# a b c d e f g
# [0] [1] [2] [3] [4] [5] [6] # นับจาก หน้าไปหลัง
# [-7] [-6] [-5] [-4] [-3] [-2] [-1] # นับจาก หลังไปหน้า
print(result[3]) # d
print(result[6]) # g
print(result[-2]) # f2 เช่น result = "abcdefg"
# a b c d e f g
# [0] [1] [2] [3] [4] [5] [6] # นับจาก หน้าไปหลัง
# [-7] [-6] [-5] [-4] [-3] [-2] [-1] # นับจาก หลังไปหน้า
print(result[3]) # d
print(result[6]) # g
print(result[-2]) # f3 เป็นต้น
Comment
คอมเม้นของ Python
- hash (#) ไปจนสิ้นสุดบรรทัดนั้นๆ
- แบบหลายบรรทัดจะใช้ “”” “”” ตามตัวอย่างนี้
Variables
- result = "abcdefg"
# a b c d e f g
# [0] [1] [2] [3] [4] [5] [6] # นับจาก หน้าไปหลัง
# [-7] [-6] [-5] [-4] [-3] [-2] [-1] # นับจาก หลังไปหน้า
print(result[3]) # d
print(result[6]) # g
print(result[-2]) # f4 คือ chained assignment เป็นการกำหนดค่า 2 ให้กับ a และ b - ตัวแปร (variable) สามารถตั้งชื่อได้เฉพาะ ตัวอักษร ตัวเลข และ underscore(_) ไม่สามารถขึ้นต้นด้วยตัวเลขได้
- ตัวเลขจะมี Type อยู่ 2 ประเภทคือ result = "abcdefg"
# a b c d e f g
# [0] [1] [2] [3] [4] [5] [6] # นับจาก หน้าไปหลัง
# [-7] [-6] [-5] [-4] [-3] [-2] [-1] # นับจาก หลังไปหน้า
print(result[3]) # d
print(result[6]) # g
print(result[-2]) # f5 และ result = "abcdefg"
# a b c d e f g
# [0] [1] [2] [3] [4] [5] [6] # นับจาก หน้าไปหลัง
# [-7] [-6] [-5] [-4] [-3] [-2] [-1] # นับจาก หลังไปหน้า
print(result[3]) # d
print(result[6]) # g
print(result[-2]) # f6 โดย result = "abcdefg"
# a b c d e f g
# [0] [1] [2] [3] [4] [5] [6] # นับจาก หน้าไปหลัง
# [-7] [-6] [-5] [-4] [-3] [-2] [-1] # นับจาก หลังไปหน้า
print(result[3]) # d
print(result[6]) # g
print(result[-2]) # f5 คือตัวเลขธรรมดา ส่วนresult = "abcdefg"
# a b c d e f g
# [0] [1] [2] [3] [4] [5] [6] # นับจาก หน้าไปหลัง
# [-7] [-6] [-5] [-4] [-3] [-2] [-1] # นับจาก หลังไปหน้า
print(result[3]) # d
print(result[6]) # g
print(result[-2]) # f6 คือตัวเลขที่มีจุดทศนิยม - เช็ค Type ของตัวแปรต่างๆ ได้โดยฟังชั่น result = "abcdefg"
# a b c d e f g
# [0] [1] [2] [3] [4] [5] [6] # นับจาก หน้าไปหลัง
# [-7] [-6] [-5] [-4] [-3] [-2] [-1] # นับจาก หลังไปหน้า
print(result[3]) # d
print(result[6]) # g
print(result[-2]) # f9 เช่น has_a = "A" in "bcdAefg"
has_aefg = "Aefg" in "bcdAefg"
print(has_a) # True
print(has_aefg) # Truelen() เป็นฟังค์ชันที่เอาไว้นับจำนวนความยาวของ String0 - เราสามารถ convert จาก integer ไป float หรือ float ไป integer ได้ โดยใช้ built-in functions เช่น
number = int(35.321) # แปลงค่า float เป็น integer
word = str(number) # แปลงค่า integer เป็น string
- augmented assignment คือการรวม operation และ assignment 2 คำสั่ง ด้วยการใช้เพียง statement เดียว เช่น
result += 5 # result = 15
#เป็นการ เพิ่มค่า result เท่ากับ 5 และอัพเดทค่า รวมกลายเป็น result จะเท่ากับ 15
- Boolean มีค่าได้เพียงแค่ 2 ชนิดคือ ไม่ True ก็ False โดยใช้เครื่องหมาย == เรียกว่า equality operator ในการเช็คหรือเปรียบเทียบตัวแปรสองตัว ว่ามีค่าเหมือนกันหรือไม่ เช่น
two = 2
print(one == two) # False
- นอกจากการเปรียบเทียบด้วย == แล้ว เรายังสามารถเปรียบเทียบด้วย >= (มากกว่าหรือเท่ากับ) <= (น้อยกว่าหรือเท่ากับ) > (มากกว่า) และ < (น้อยกว่า)
ตัวดำเนินการในภาษา
ตัวดำเนินการทางคณิตศาสตร์
- + บวก เช่น a + b มีค่า 30
- – ลบ เช่น a — b มีค่า -10
- * คูณ เช่น a * b มีค่า 200
- / หาร เช่น b / a มีค่า 2
- % เศษของการหาร เช่น b % a มีค่า 0
- ** ยกกำลัง เช่น a**b หมายถึง 10 ยกกำลัง 20
- // หารปัดเศษทิ้ง เช่น 9//2 is มีค่า 4 และ 9.0//2.0 มีค่า 4.0
ตัวดำเนินการเปรียบเทียบ
- == เช็คว่าค่าสองค่าเท่ากันหรือไม่ เช่น (a == b) เป็นเท็จ
- != เช็คว่าค่าสองค่าไม่เท่ากันหรือไม่ เช่น(a != b) เป็นจริง
- <> เช็คว่าค่าสองค่าไม่เท่ากันหรือไม่ เช่น(a <> b) เป็นจริง. เหมือนกับ !=
- > เช็คว่าค่าทางซ้ายมากกว่าค่าทางขวาหรือไม่ เช่น(a > b) เป็นเท็จ
- < เช็คว่าค่าทางซ้ายน้อยกว่าค่าทางขวาหรือไม่ เช่น(a < b) เป็นจริง
- >= เช็คว่าค่าทางซ้ายมากกว่าหรือเท่ากับค่าทางขวาหรือไม่ เช่น(a >= b) เป็นเท็จ
- <= เช็คว่าค่าทางซ้ายน้อยกว่าหรือเท่ากับค่าทางขวาหรือไม่ เช่น (a <= b) เป็นจริง.
ตัวดำเนินการกำหนดค่า
- = ตัวแปรทางซ้ายถูกกำหนดให้มีค่าเท่ากับทางขวา เช่น c = a + b เป็นการกำหนดค่าให้กับ c โดยให้มีค่าเท่ากับ a + b
- += บวกค่าของทางซ้ายด้วยค่าทางขวา เช่น c += a หมายความว่า c = c + a
- -= ลบค่าของทางซ้ายด้วยค่าทางขวา เช่น c -= a หมายความว่า c = c — a
- *= คูณค่าของทางซ้ายด้วยค่าทางขวา เช่น c *= a หมายความว่า c = c * a
- /= หารค่าของทางซ้ายด้วยค่าทางขวา เช่น c /= a หมายความว่า c = c / a
- %= หารเอาเศษค่าของทางซ้ายด้วยค่าทางขวา เช่น c %= a หมายความว่า c = c % a
- **= ยกกำลังค่าของทางซ้ายด้วยค่าทางขวา เช่น c **= a หมายความว่า c = c ** a
- //= หารปัดเศษทิ้งค่าของทางซ้ายด้วยค่าทางขวา เช่น c //= a หมายความว่า c = c // a
ตัวดำเนินการทางตรรกะ
- and เช็คว่าทั้งสองตัวเป็นจริงถึงจะคืนค่าจริง กรณีอื่นๆเป็น เท็จทั้งหมด เช่น (a and b) เป็นจริง
- or ถ้าทั้งสองตัวหนึ่งเป็นเท็จจะคืนค่า เท็จ กรณีอื่นๆ เป็นจริงทังหมด เช่น (a or b) เป็นจริง
- notคืนค่าตรงกันข้ามของค่าปัจจุบัน เช่น not(a and b) เป็นเท็จ เพราะ a and b เป็นจริง
ตัวดำเนินการสมาชิก
ตัวดำเนินการสมาชิกเป็น ตัวดำเนินการพิเศษของภาษา Python จะไม่พบในภาษาอื่น ไว้สำหรับเช็คว่า ค่าที่เรากำลังสนใจเป็นสมาชิกของตัวแปรนั้นๆ หรือไมจะคืนค่าเป็น จริงหรือเท็จแล้วแต่กรณีใช้กับ such as strings, lists, หรือ tuple
- in จะคืนค่าเป็นจริงถ้าพบค่าในตัวแปรที่เราสนใจ ในกรณีอื่นเป็นเท็จทั้งหมด เช่น x in y, คือค่าเป็น 1 ถ้า x เป็นสมาชิกของ y
- not in จะคืนค่าเป็นจริงถ้าไม่พบค่าในตัวแปรที่เราสนใจ ในกรณีอื่นเป็นเท็จทั้งหมด เช่น x not in y, คือค่าเป็น 1 ถ้า x ไม่เป็นสมาชิกของ y
นอกจากนี้ Python ยังมี Identity Operators เพื่อเช็คว่ามีตัวแปรที่ต้องการทราบอยู่ใน memory หรือเปล่า คือ is และ not is
ลำดับความสำคัญของตัวดำเนินการใน Python Operators Precedence
operators ทั้งหมดของ ไพทอน ตามลำดับความสำคัญจากมากไปน้อย
- ** : ยกกำลัง
- ~ +-: complement, unary plus and minus
- * / % //: คูณ, หาร, modulo and floor division
- + –: บวก, ลบ
- >> << : Right and left bitwise shift
- & : Bitwise ‘AND’
- ^ | : Bitwise exclusive `OR’ and regular `OR’
- <= < > >= : Comparison operators
- <> == != : Equality operators
- = %= /= //= -= += *= **= : Assignment operators
- is is not : Identity operators
- in not in : Membership operators
- not or and : Logical operators
นอกจากใน list แล้วยังมีตัวดำเนินการที่มีลำดับความคำคัญสูงสุดคือ “(…)”
Strings
การรวม String 2 ตัวเข้าด้วยกัน (combine) จะใช้เครื่องหมาย has_a = "A" in "bcdAefg"
has_aefg = "Aefg" in "bcdAefg"
print(has_a) # True
print(has_aefg) # Truelen() เป็นฟังค์ชันที่เอาไว้นับจำนวนความยาวของ String1 เช่น
hello = "Hello " + name
print(hello) # Hello test
Python สามารถใช้ String คูณด้วย integer ได้ด้วย เช่น has_a = "A" in "bcdAefg"
has_aefg = "Aefg" in "bcdAefg"
print(has_a) # True
print(has_aefg) # Truelen() เป็นฟังค์ชันที่เอาไว้นับจำนวนความยาวของ String2
String ใน Python เก็บค่าแต่ละ characters เป็น index โดยเริ่มต้นจาก index = 0 ตัวอย่าง คำว่าhas_a = "A" in "bcdAefg"
has_aefg = "Aefg" in "bcdAefg"
print(has_a) # True
print(has_aefg) # Truelen() เป็นฟังค์ชันที่เอาไว้นับจำนวนความยาวของ String3
สามารถใช้ค่าติดลบ ในการเข้าถึง index ของ String ได้ โดยจะเริ่มทำการนับจากด้านหลังมาด้านหน้า
result = "abcdefg"# a b c d e f g
# [0] [1] [2] [3] [4] [5] [6] # นับจาก หน้าไปหลัง
# [-7] [-6] [-5] [-4] [-3] [-2] [-1] # นับจาก หลังไปหน้า
print(result[3]) # d
print(result[6]) # g
print(result[-2]) # f
สามารถเช็คว่าใน String มีคำหรือตัวอักษรอยู่ใน String หรือไม่ผลลัพธ์จะเป็น boolean True หรือ False ด้วยการใช้ in keyword เช่น
has_a = "A" in "bcdAefg"has_aefg = "Aefg" in "bcdAefg"
print(has_a) # True
print(has_aefg) # Truelen() เป็นฟังค์ชันที่เอาไว้นับจำนวนความยาวของ String
“”” (triple-quoted) เอาไว้สำหรับประกาศ String แบบหลายๆบรรทัด
phrase = """It is a really long string
triple-quoted strings are used
to define multi-line strings
"""
length = len(phrase)
print(length) # 88
Backslash (\) เอาไว้ใช้สำหรับ escape character กรณีต้องการพิมพ์ ” หรือ ‘ ลงใน String ซึ่งโดยปกติ String จะมี ” ที่เริ่มต้นและสุดของ String หากแทรก ” ใน String โปรแกรมจะมอง ” ใน String กลายเป็นจุดสิ้นสุดของ String กลายเป็น error ไป วิธีแก้ ก็คือต้องใช้ \ เช่น
print('My name\'s John Doe') # My name's John Doe
lower() เป็นเมธอดสำหรับทำให้ String กลายเป็นตัวพิมพ์เล็ก ขณะที่ upper() เอาไว้สำหรับเปลี่ยน String เป็นตัวพิมพ์ใหญ่ การใช้งานเมธอดเราจะใช้ . (dot) ตามด้วยชื่อเมธอด เช่น
"JohnDoe".upper() # JOHNDOE"JohnDoe".lower() # johndoe
string format ใช้ % ตามหลัง String ร่วมกับตัวแปร เพื่อกำหนด format ของ String ที่เราต้องการ หลักการคือ จะเปลี่ยนค่า %s ใน String กลายเป็นตัวแปรที่เรากำหนดไว้ เช่น
float_number = float(10) # แปลงค่า integer เป็น floatnumber = int(35.321) # แปลงค่า float เป็น integer
word = str(number) # แปลงค่า integer เป็น string0
has_a = "A" in "bcdAefg"
has_aefg = "Aefg" in "bcdAefg"
print(has_a) # True
print(has_aefg) # Truelen() เป็นฟังค์ชันที่เอาไว้นับจำนวนความยาวของ String4 เป็น symbol สำหรับ String ส่วน has_a = "A" in "bcdAefg"
has_aefg = "Aefg" in "bcdAefg"
print(has_a) # True
print(has_aefg) # Truelen() เป็นฟังค์ชันที่เอาไว้นับจำนวนความยาวของ String5 เป็น symbol สำหรับใช้แทนตัวเลข
Data structures
list คือ data structure ที่เอาไว้เก็บข้อมูลหลายๆข้อมูล ค่าที่เก็บใน list ต้องเป็นชนิดเดียวกัน เช่น
float_number = float(10) # แปลงค่า integer เป็น floatnumber = int(35.321) # แปลงค่า float เป็น integer
word = str(number) # แปลงค่า integer เป็น string1
การเพิ่มข้อมูลลงไปใน list ใช้เมธอด append() และ list เป็น mutable เราสามารถเปลี่ยนข้อมูลใน list ได้ เช่น
float_number = float(10) # แปลงค่า integer เป็น floatnumber = int(35.321) # แปลงค่า float เป็น integer
word = str(number) # แปลงค่า integer เป็น string2
Tuples คือ list ที่ไม่สามารถเปลี่ยนแปลงข้อมูลได้ ไม่สามารถเพิ่ม ลบ หรือแก้ไขข้อมูลเหมือน list ได้ มี syntax ง่ายๆคือ ขึ้นต้นและปิดด้วย ( และ ) ขั้นข้อมูลด้วย comma เช่น
float_number = float(10) # แปลงค่า integer เป็น floatnumber = int(35.321) # แปลงค่า float เป็น integer
word = str(number) # แปลงค่า integer เป็น string3
Dictionary คล้ายคลึงกับ list แต่ต่างกันที่ Dictionary สามารถเข้าถึงข้อมูลได้ด้วยการใช้ key แทนที่จะเป็น index แบบ list (คล้ายคลึงกับ Ruby Hash, Java HashMap หรือ JSON ท่าเทียบกับภาษาอื่นๆ)
float_number = float(10) # แปลงค่า integer เป็น floatnumber = int(35.321) # แปลงค่า float เป็น integer
word = str(number) # แปลงค่า integer เป็น string4
in นอกจากเช็คตัวอักษรใน String ได้แล้ว ก็ยังสามารถเช็คว่ามี item ที่ต้องการใน list หรือ dictionary ได้อีกด้วย
Condition expressions
Boolean operators ใช้เปรียบเทียบ statement ผลลัพธ์เป็น has_a = "A" in "bcdAefg"
has_aefg = "Aefg" in "bcdAefg"
print(has_a) # True
print(has_aefg) # Truelen() เป็นฟังค์ชันที่เอาไว้นับจำนวนความยาวของ String6 หรือ has_a = "A" in "bcdAefg"
has_aefg = "Aefg" in "bcdAefg"
print(has_a) # True
print(has_aefg) # Truelen() เป็นฟังค์ชันที่เอาไว้นับจำนวนความยาวของ String7
has_a = "A" in "bcdAefg"
has_aefg = "Aefg" in "bcdAefg"
print(has_a) # True
print(has_aefg) # Truelen() เป็นฟังค์ชันที่เอาไว้นับจำนวนความยาวของ String8 จะเป็น has_a = "A" in "bcdAefg"
has_aefg = "Aefg" in "bcdAefg"
print(has_a) # True
print(has_aefg) # Truelen() เป็นฟังค์ชันที่เอาไว้นับจำนวนความยาวของ String6 ก็ต่อเมื่อ 2 กรณีเป็นจริงทั้งคู่นอกนั้นเป็น has_a = "A" in "bcdAefg"
has_aefg = "Aefg" in "bcdAefg"
print(has_a) # True
print(has_aefg) # Truelen() เป็นฟังค์ชันที่เอาไว้นับจำนวนความยาวของ String7
phrase = """
It is a really long string
triple-quoted strings are used
to define multi-line strings
"""
length = len(phrase)
print(length) # 881 จะเป็นจริง has_a = "A" in "bcdAefg"
has_aefg = "Aefg" in "bcdAefg"
print(has_a) # True
print(has_aefg) # Truelen() เป็นฟังค์ชันที่เอาไว้นับจำนวนความยาวของ String6 ก็ต่อเมื่อ กรณีใดเป็นจริง จะเป็น has_a = "A" in "bcdAefg"
has_aefg = "Aefg" in "bcdAefg"
print(has_a) # True
print(has_aefg) # Truelen() เป็นฟังค์ชันที่เอาไว้นับจำนวนความยาวของ String7 เมื่อทั้ง 2 กรณีเป็นเท็จ
phrase = """
It is a really long string
triple-quoted strings are used
to define multi-line strings
"""
length = len(phrase)
print(length) # 884 เอาไว้กลับค่าให้ตรงข้าม เช่น จาก has_a = "A" in "bcdAefg"
has_aefg = "Aefg" in "bcdAefg"
print(has_a) # True
print(has_aefg) # Truelen() เป็นฟังค์ชันที่เอาไว้นับจำนวนความยาวของ String6 หากมี phrase = """
It is a really long string
triple-quoted strings are used
to define multi-line strings
"""
length = len(phrase)
print(length) # 884 ก็จะกลายเป็น has_a = "A" in "bcdAefg"
has_aefg = "Aefg" in "bcdAefg"
print(has_a) # True
print(has_aefg) # Truelen() เป็นฟังค์ชันที่เอาไว้นับจำนวนความยาวของ String7
ลำดับความสำคัญ ไม่ได้เริ่มจากซ้ายไปขวา แต่นับจาก phrase = """
It is a really long string
triple-quoted strings are used
to define multi-line strings
"""
length = len(phrase)
print(length) # 884 has_a = "A" in "bcdAefg"
has_aefg = "Aefg" in "bcdAefg"
print(has_a) # True
print(has_aefg) # Truelen() เป็นฟังค์ชันที่เอาไว้นับจำนวนความยาวของ String8 และ phrase = """
It is a really long string
triple-quoted strings are used
to define multi-line strings
"""
length = len(phrase)
print(length) # 881 ตามลำดับ
print("You said \"You loved me\"") # You said "You loved me"
print('My name\'s John Doe') # My name's John Doe1 statement เอาไว้เช็คเงื่อนไขว่าเป็นจริงหรือไม่ ถ้าจริงก็จะทำงานในส่วนของ statement (Python จะใช้ indentation ด้วย 4 spaces)
number = int(35.321) # แปลงค่า float เป็น integer
word = str(number) # แปลงค่า integer เป็น string5
ตัวอย่างเช่น
float_number = float(10) # แปลงค่า integer เป็น floatnumber = int(35.321) # แปลงค่า float เป็น integer
word = str(number) # แปลงค่า integer เป็น string6
กรณี if/else หากเช็คเงื่อนไขเป็นจริง จะทำใน if แต่ถ้าไม่ใช่ก็จะทำใน else เช่น
float_number = float(10) # แปลงค่า integer เป็น floatnumber = int(35.321) # แปลงค่า float เป็น integer
word = str(number) # แปลงค่า integer เป็น string7
else if กรณีที่ต้องการเอาไว้เช็คหลายๆเงื่อนไข โดยใช้คีเวิร์ด elif เช่น
float_number = float(10) # แปลงค่า integer เป็น floatnumber = int(35.321) # แปลงค่า float เป็น integer
word = str(number) # แปลงค่า integer เป็น string8
กรณี เงื่อนไขเกี่ยวกับ มากกว่าน้อยกว่า เราสามารถยุบเงื่อนไข เขียนสั้นๆแบบนี้ก็ได้ (อันนี้ผมเพิ่งรู้จากที่ตัว IDE มันแนะนำ Simplify chained comparison เช่น
float_number = float(10) # แปลงค่า integer เป็น floatnumber = int(35.321) # แปลงค่า float เป็น integer
word = str(number) # แปลงค่า integer เป็น string9
แต่จริงๆแล้ว if/else เรามีแค่เงื่อนไขเดียวก็ได้
result = 10result += 5 # result = 15
#เป็นการ เพิ่มค่า result เท่ากับ 5 และอัพเดทค่า รวมกลายเป็น result จะเท่ากับ 150
การทำงาน Switch ในไพทอน Switch Statement Selection Python
ใน ไพทอนไม่มี Switch ให้ใช้ ตัวอย่างเช่น จะเขียน
result = 10result += 5 # result = 15
#เป็นการ เพิ่มค่า result เท่ากับ 5 และอัพเดทค่า รวมกลายเป็น result จะเท่ากับ 151
แบบใน PHP ใน ไพทอนไม่มี Switch แบบนี้ให้ใช้ เป็นภาษาที่แปลกแตกต่างจากภาษาอื่น (ภาษาอื่นๆเค้ามีกันหมด)
แต่เขียนอีกแบบได้ ได้ผลแบบเดียวกันกับ php ถ้าเขียนเป็น ไพทอน ได้ตามนี้
result += 5 # result = 15
#เป็นการ เพิ่มค่า result เท่ากับ 5 และอัพเดทค่า รวมกลายเป็น result จะเท่ากับ 152
Loops
For Loop มีรูปแบบ for i in range: เช่น วนลูปปริ้น 0–4
result = 10result += 5 # result = 15
#เป็นการ เพิ่มค่า result เท่ากับ 5 และอัพเดทค่า รวมกลายเป็น result จะเท่ากับ 153
วนลูปปริ้นข้อมูลในลิสท์ [2, 3, 5, 7]
result += 5 # result = 15
#เป็นการ เพิ่มค่า result เท่ากับ 5 และอัพเดทค่า รวมกลายเป็น result จะเท่ากับ 154
loop กับ String
result = 10result += 5 # result = 15
#เป็นการ เพิ่มค่า result เท่ากับ 5 และอัพเดทค่า รวมกลายเป็น result จะเท่ากับ 155
while loop จะ execute เมื่อ condition เป็น true
result = 10result += 5 # result = 15
#เป็นการ เพิ่มค่า result เท่ากับ 5 และอัพเดทค่า รวมกลายเป็น result จะเท่ากับ 156
break ไว้ใช้หยุด loop
continue เอาไว้ใช้ข้ามโค๊ดส่วนอื่นๆภายใน loop
Functions
ฟังค์ชันใน Python ประกาศด้วย keyword def เป็นส่วนของ code block
result = 10result += 5 # result = 15
#เป็นการ เพิ่มค่า result เท่ากับ 5 และอัพเดทค่า รวมกลายเป็น result จะเท่ากับ 157
ฟังค์ชันสามารถรับ parameter ก็ได้เช่นกัน โดยกำหนด parameters ภายใน ()
result = 10result += 5 # result = 15
#เป็นการ เพิ่มค่า result เท่ากับ 5 และอัพเดทค่า รวมกลายเป็น result จะเท่ากับ 158
ฟังค์ชันสามารถเซต default parameter ได้ในกรณีที่เราไม่ได้ส่ง parameter ให้กับฟังค์ชัน เช่น
result = 10result += 5 # result = 15
#เป็นการ เพิ่มค่า result เท่ากับ 5 และอัพเดทค่า รวมกลายเป็น result จะเท่ากับ 159
การสร้างฟังก์ชั่นไม่ระบุชื่อ ใน ไพทอน The Anonymous Functions
ในการสร้างฟังก์ชั่น ไม่ระบุชื่อ (Anonymous Functions:) นั้นสามารถสร้างโดยใช้ Keyword “lambda” ซึ่งการสร้างฟังก์ชั่นไม่ระบุชื่อนี้ เราจะไม่ใช้ keyword def เพื่อสร้างฟังก์ชั่น
ฟังก์ชั่นไม่ระบุชื่อนี้ สามารถระบุ arguments ให้กับฟังก์ชั่นกี่ตัวก็ได้ แต่การ return ค่าออกจากฟังก์ชั่น return ได้เพียงค่าเดียวเท่านั้น
ข้อจำกัดของ ฟังก์ชั่นไม่ระบุชื่อ
- ไม่สามารถ เรียกเพื่อให้แสดงค่าได้ เพราะฟังก์ชั่นไม่ระบุชื่อจำเป็นต้องมี expressions ด้วยเสมอ
- ไม่สามารถเรียกข้าม namespace ถ้า (ถ้า local เป็นคนสร้าง global จะเรียกใช้ไม่ได้)
รูปแบบการสร้าง ฟังก์ชั่นไม่ระบุชื่อ
one = 1two = 2
print(one == two) # False0
ตัวอย่าง def_function_lambda.py
one = 1two = 2
print(one == two) # False1
จากตัวอย่างจะเป็นการสร้าง ฟังก์ชั่นไม่ระบุชื่อ กำนหดให้เท่ากับ ตัวแปล mylam และทดลองเรียกใช้ ฟังก์ชั่นไม่ระบุชื่อผ่าน ตัวแปล mylam
การสร้างฟังก์ชั่น ส่งค่าออกจากฟังก์ชั่นไพทอน The return Statement
การสร้างฟังก์ชั่น และจำเป็นต้องส่งค่าออกจากฟังก์ชั่นในภาษาไพทอนนั้นจะใช้ keyword คำว่า “return” เหมือนกับภาษาอื่นๆ ประโยชน์ของการสร้างฟังก์ชั่นที่มีการ return นั้นมีประโยชน์ ในการคำนวน หรือ ลดการเขียนโค้ดที่ซ้ำๆ กันและมีการเรียกใช้กันไปมาระหว่างฟังก์ชั่นด้วย กันเอง หรือ เพื่อ กำหนดรูปแบบแสดงผลแบบต่างๆ
ตัวอย่าง def_function_return.py
one = 1two = 2
print(one == two) # False2
Classes and objects
- object คือส่วนที่รวมตัวแปร (variables) และฟังค์ชัน (function) โดย object ถูกสร้างมาจาก class
- class ก็คือรูปแบบ หรือ template ที่เอาไว้สร้าง object
หากใครไม่รู้จัก Class หรือ Object แนะนำให้อ่านเรื่อง OOP ประกอบครับ concept เดียวกัน เหมือนกันทุกภาษา
- การสร้างคลาสใน Python
two = 2
print(one == two) # False3
- การสร้าง object จาก class MyClass
two = 2
print(one == two) # False4
- ใช้ print("You said \"You loved me\"") # You said "You loved me"
print('My name\'s John Doe') # My name's John Doe2 เป็น parameter แรกของ method และเข้าถึงตัวแปร print("You said \"You loved me\"") # You said "You loved me"
print('My name\'s John Doe') # My name's John Doe3 ในคลาสด้วย print("You said \"You loved me\"") # You said "You loved me"
print('My name\'s John Doe') # My name's John Doe4เพราะ print("You said \"You loved me\"") # You said "You loved me"
print('My name\'s John Doe') # My name's John Doe2 จะ refer ไปที่ object ที่สร้างขึ้น - print("You said \"You loved me\"") # You said "You loved me"
print('My name\'s John Doe') # My name's John Doe6 เป็นฟังค์ชันที่เอาไว้สำหรับกำหนดค่าเริ่มต้นให้กับ object (มักจะมี parameter แรกเป็นprint("You said \"You loved me\"") # You said "You loved me"
print('My name\'s John Doe') # My name's John Doe2) จะถูกเรียกเมื่อ object ถูกสร้างขึ้น
ไพทอน แบบอ๊อบเจ็ค Python OOP — Object-oriented programming บนภาษาไพทอน
ไพทอนเป็นภาษาสคลิป ที่สนับสนุนการเขียนโปรแกรม แบบ OOP ก่อนศึกษาวิธีการเขียนกัน เรามาทำความรู้จักคำศัพท์ ต่างๆ เหล่านี้กันก่อน
Calss: คือ ต้นแบบสำหรับสร้างออปเจ็คโดยที่ต้นแบบที่ว่าจะถูกสร้างขึ้น โดยจะมีคุณสมบัตของคลาส คือตัวแปลในคลาส เมดทอด สามารถเข้าถึง ได้ด้วย dot(.) เครื่องหมาย .
Class variable: คือตัวแปลที่ใช้ร่วมกันภายในคลาส Class variable: ถูกกำหนดขึ้นภายในคลาส แต่อยู่นอก เมทอด ของคลาส
Instance Variable คือ ตัวแปรช ที่ถูกสร้างและยังคงอยู่ ภายใน method ของ Class ที่สร้างมันขึ้นมาเท่านั้น
Inheritance: คือการถ่ายโอนความสามารถของคลาสหนึ่งไปยังอีกคลาสหนึ่ง เช่นจากคลาสแม่ ไปยังคลาสลูก
Function overloading: คือฟังก์ชั่นที่ชื่อเหมือนกัน แต่สามารถแยการทำงาน ของฟังก์ชั่นแต่ละตัวออกจากกันได้ด้วย arguments
Constructor function: คือฟังก์ชั่นที่สร้างเรียกอัตโนมัตเมื่อมีการสร้างออปเจ็คจากคลาส ใน python ใช้ function __init__()
Instance: คือการสร้าง ออปเจ็คตากคลาส ออเจ็คที่ถูกสร้างขึ้น จะมีชนิดเป็น obj ซึ่งเป็นเอาความสามารถของคลาสทั้งหมด ออกมาเก็บไว้ในตัวแปล
Method :คือฟังก์ชั่นชนิดหนึ่งที่ถูกสร้างขึ้นภายใน คลาส
Object : คือ คือคุณสมบัติต่างๆ ของสิ่งที่เราสร้างขึ้นจากคลาส ไม่ว่าจะเป็น data members (class variables และ instance variables) และ methods.
Create Class OOP
การสร้าง Class ในไพทอน ใช้ keyword Class เหมือนกับภาษาอื่นๆ ในการประกาศสร้างคลาส
รูปแบบการสร้าง Class
two = 2
print(one == two) # False5
ตัวอย่าง สร้าง Class ชื่อ Employee
# ตัวอย่าง class_create.py
two = 2
print(one == two) # False6
การใช้งาน
one = 1two = 2
print(one == two) # False7
จากตัวอย่าง สร้าง Class ชื่อ Employee
มี Class variable 1 ตัวคือ empCount ซึ่งจะสามารถใช้งานเป็นตัวแปลที่ค่ายังคงอยู่ ไม่ว่าจะสร้าง ออปเจ็คขึ้นมากี่ตัวกี่ตั้งก็ตาม
มี Method พิเศษ 1 Method คือ __init__ ซึ่ง เป็น constructor function
self argument คือตัวแปลที่ไว้รับค่าข้างนอกเข้ามา
ผลที่ได้
one = 1two = 2
print(one == two) # False8
Built-In Class Attributes
จาก บทเรียนก่อนหน้านี้ ไพทอน การสร้างคลาส การเขียนโปรแกรมแบบออปเจ็ค Create Class OOP เมื่อเราสร้างคลาสขึ้นมาเพื่อไว้ใช้งาน ไพทอน จะสร้าง Attributes ของคลาสให้อัตโนมัต และเราสามารถเรียกใช้งานได้เลย ดังนี้
- __dict__ : Dictionary สำหรับเก็บ namespace ของคลาส
- __doc__ : คลาสข้อความสำหรับเป็นเอกสาร ถ้าเราไม่ได้กำหนดข้อความอธิบายไว้ ก็จะไม่มี Attributes นี้
- __name__: ชื่อคลาสที่สร้างขึ้น
- __module__: ชื่อโมดูลภายในคลาสที่ถูกกำหนดขึ้นมา เหมือนกับ __main__
- __bases__ : เก็บเป็นตัวแปล tuple เก็บชื่อ bass class
จะตัวอย่าง โค้ด class_create.py จาก บทที่แล้ว
เพิ่ม โค้ดลงไปตามนี้
one = 1two = 2
print(one == two) # False9
ผลของการรันจะได้ ดังนี้
name = "test"hello = "Hello " + name
print(hello) # Hello test0
OOP กับการสือทอดคลาส Class Inheritance
การเขียนโปรแกรมด้วยไพทอนแบบ Python OOP — Object-oriented programmingเราสามารถสือทอดความสามารถของคลาสที่สร้างไว้อยู่แล้ว (คลาสแม่) มาให้คลาสใหม่ที่กำลังจะขึ้น (คลาสลูก) เหมือนการเขียนแบบ OOP ในภาษา Java หรือ php และในไพทอนสามารถสือทอดความสามารถจากคลาสแม่หลายๆ คลาสมายังคลาสลูกได้
รูปแบบ
name = "test"hello = "Hello " + name
print(hello) # Hello test1
# ตัวอย่าง class_inheritance.py
name = "test"hello = "Hello " + name
print(hello) # Hello test2
การใช้งาน
name = "test"hello = "Hello " + name
print(hello) # Hello test3
ผลที่ได้
name = "test"hello = "Hello " + name
print(hello) # Hello test4
Class Inheritance multiple parent classes
การสือทอดคลาส Class Inheritance เราสามารถสืบทอดคลามสามารถจากคลาสแม่หลายๆ คลาสได้ ด้วยดังตัวอย่าง
name = "test"hello = "Hello " + name
print(hello) # Hello test5
นอกจากนี้ไพทอนยังมีฟังก์ชั่น ไว้สำหรับดูการสืบทอดของคลาส คือ
issubclass(sub, sup) คืนค่าเป็น boolean เป็นจริงถ้า sub เป็นคลาสลูกของ sup
isinstance(obj, Class) คืนค่าเป็น boolean เป็น จริงถ้า object ที่ต้งอการตรวจสอบถูกสร้างมาจาก Class (ชื่อคลาส) เป็นคลาสแม่หรือคลาสลูกก็ได้
การเรียกใช้งานฟังก์ชั่น ในไพทอน แบบ Object สอน Python
การเรียกใช้งาน ฟังก์ชั่นในลักษณะแบบ Object เหมือนกับ การสร้าง object ในการเขียนภาษาอื่นๆแบบ OOP ในไพทอน จะมองว่า ฟังก์ชั่นเป็น object ตัวหนึ่งได้