10. PEP-20 The Zen of Python
●
ท่านผู้อาวุโสไพธอน Tim Peters ได้ร้อยเรียง
แนวทางของท่านเผด็จการใจดีเพื่อชีวิต (BDFL –
Guido van Rossum) ออกมาเป็นลำานำา 20 บาท แต่มี
เพียง 19 บาทที่ได้รจนา
1.สวยงามย่อมดีกว่าน่าเกลียด
2.ชัดแจ้งย่อมดีกว่าโดยนัย
3.เรียบง่ายย่อมดีกว่าซับซ้อน
11. PEP-20 The Zen of Python (cont.)
4.ซับซ้อนย่อมดีกว่ายุงเหยิง
่
5.โปร่งใสย่อมดีกว่าทับซ้อน
6.โล่งย่อมดีกว่าแออัด
7.การอ่านแล้วเข้าใจง่ายจำาเป็นเสมอ
8.กรณีพเศษ ไม่ได้พิเศษจนต้องแหกกฏ
ิ
9.แต่กระนั้นสิ่งทีใช้งานได้ย่อมชนะสิ่งที่บริสุทธิ์
่
(เขียนตามกฏแต่ใช้งานไม่ได้)
12. PEP-20 The Zen of Python (cont.)
10.ข้อผิดพลาดไม่ควรถูกปล่อยผ่านอย่างเงียบเชียบ
11.ยกเว้นว่าต้องการปล่อยผ่านแบบตั้งใจ
12.เมือเจอความกำากวมจงอย่าคาดเดา
่
13.มันควรจะมีเพียงหนึ่งวิธี และเป็นหนึงวิธีที่ชัดแจ้งในการ
่
ทำาสิ่งใดๆ
14.แต่กระนันวิธีนนอาจจะไม่ชัดแจ้งแต่แรกยกเว้นเจ้าจะเป็น
้ ั้
ชาวดัทช์
13. PEP-20 The Zen of Python (cont.)
15.ทำาตอนนี้ย่อมดีกว่าไม่ทำาเลย
16.แต่กระนั้นไม่ทำาเลยมักจะดีกว่าต้องทำาเดี๋ยวนี้
17.ถ้าการอิมพลิเมนต์มันอธิบายยาก มัน เป็นความคิดที่ไม่ดี
18.ถ้าการอิมพลิเมนต์มันอธิบายง่าย มัน อาจจะเป็นความคิดที่ดี
19.เนมสเปซเป็นความคิดทีบรรเจิด เรามาทำากันอีกเยอะๆเถอะ!
่
20.
แปลจาก http://www.python.org/dev/peps/pep-0020/
14. ชนิดของตัวแปร
● String/Unicode a = 'hello there'
● Integer b=7
● Floating point c = 3.2
● Boolean (True/False) d = True
● None e = None
● Tuple f = (1,2,3,'a','b','c',0.4)
● List g = [1,2,3,'a','b','c',0.4]
● Dictionary h = {'id': 'cwt', 'age': 33}
● Class instance g = MyClass()
15. เล่นกับ Tuple List and Dictionary
●
Tuple สร้างแล้วแก้ไขสิงที่อยู่ภายในไม่ได้
่
●
การแก้ tuple คือ ทำาลายตัวเก่าแล้วสร้างตัวใหม่
●
List สร้างแล้วแก้ไขสิงที่อยู่ภายในได้
่
●
นอกจากแก้แลัวยัง ทำาได้อีกหลายอย่าง --> (demo)
●
Dictionary คือตัวแปรประเภท key, value
●
สมาชิกของ tutple list และ Value ของ dictionary
นั้นจะเป็นอะไรก็ได้ --> (demo)
17. การกระทำา (cont.)
●
Tuple + tuple หรือ list + list ได้
● (1,2) + (3,4) == (1,2,3,4)
● [1,2] + [3,4] == [1,2,3,4]
●
แต่ tuple + list ไม่ได้
●
เขียนย่อการกระทำาบางอย่างได้ เช่น
●
x = x+1 เขียนได้เป็น x += 1
18. การกระทำาทาง Logic
●
การกระทำางาน Logic เขียนเป็นสัญลักษณ์ก็ได้ เช่น & | แต่
นิยมเขียนเป็นข้อความ and or not มากกว่า
●
X & Y นิยมเขียนเป็น X and Y
●
การเปรียบเทียบตัวแปร กับค่า True False None จะใช้ is
● if x is True: <do something>
● if y is not None: <do something>
●
การเปรียบเทียบตัวแปรกับตัวแปร ใช้ == เช่น --> (demo)
●
การกระทำางาน Logic จะเขียนแบบย่อ ก็ได้ เช่น
● X &= (a == b)
20. Function (cont.)
●
การกำาหนด function ไม่จำาเป็นต้องรับตัวแปรก็ได้
●
Function ไม่จำาเป็นต้อง return ค่าใดๆ โดยการไม่สั่ง
return เมื่อจบ function จะถือว่า return None
●
ตัวแปรภายใน function ชื่อซำ้ากับข้างนอกได้ เพราะ
ถือว่าเป็น local
●
แต่ถ้ากำาหนดชือตัวแปรภายในซำ้ากับตัวแปรข้างนอก
่
แล้ว จะไม่สามารถใช้งานตัวแปรข้างนอกใน
function นั้นได้อีก
21. Python as a script
●
ถ้ามี function หลายๆ ตัว ควรจะมี main function
เพื่อเรียกใช้ function แต่ละตัวตามลำาดับ
def a(x,y):
return x+y
def b(x,y):
return x-y
if __name__ == '__main__':
a(1,2)
b(3,4)
22. Python as a script (cont.)
●
เหตุที่ต้องมีการกำาหนด
● if __name__ == '__main__':
●
เพราะต้องการให้ อะไรก็ตามภายใต้ if นี้ ทำาการก็ต่อ
เมื่อถูกเรียกใช้ตรงๆ จากภายนอก เช่น ถูกสังว่า
่
● $ python example.py
●
แต่จะไม่ทำางานเมื่อโดน import ด้วย python file อื่น
เช่น from example import *
● --> (demo)
23. Python แบบ OOP
●
ต้องมีการกำาหนด class
●
Class เสมือนแม่พิมพ์ขนม เมือแคะขนมออกมา ตัวขนมจะ
่
มีรูปร่างเหมือนแม่พิมพ์ แต่กินได้ (คงไม่มใครแทะแม่พมพ์
ี ิ
เล่น)
●
Python class ก็เป็นเช่นเดียวกัน
●
Class instance กำาเนิดจาก class และมี life cycle เกิด
ขึ้น ตั้งอยู่ และดับไป สุดท้ายโดน garbage collector เก็บ
กวาด
24. Python แบบ OOP (cont.)
●
การกำาหนด class
class MyClass(object):
def __init__(self, a):
self.a = a
self.x_file = open('x.txt','r')
def __del__(self):
self.x_file.close()
def read_x(self):
return self.x_file.reads()
●
การสร้าง class instance
my_class = MyClass(1)
34. Tristate Conditions (cont.)
●
ระวังเวลาเขียนเงื่อนไขเปรียบเทียบ
●
จาก The Zen of Python, ชัดแจ้งย่อมดีกว่าโดยนัย
● if x: # ถ้า x มีค่าอะไรก็ตามทีไม่ใช่ 0, False, None
่
<do something>
●
แต่ถ้าต้องการทำาเมือ x เป็น None เท่านัน
่ ้
● If x is None:
<do otherthing>
●
ในกรณีแรก ถ้าจะเขียนให้ชดแจ้ง เขียนแบบนีก็ได้
ั ้
● If x is not None:
35. Loop
● For
for x in [1,2,3,4]:
print(x)
● While
x=0
while x < 10:
print(x)
x += 1
● Endless loop
while True: