Python Programming

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา

เอกสารนี้เขียนขึ้นเพื่อให้ความรู้เกี่ยวกับไวยากรณ์และการเขียนโปรแกรมภาษาไพทอนเบื้องต้น ผู้เขียนสมมติว่าผู้อ่านสามารถเขียนโปรแกรมด้วยภาษาเชิงวัตถุอย่าง C++ หรือ Java ได้อยู่แล้ว เอกสารนี้ไม่ใช่เอกสารสอนเขียนโปรแกรม

หากท่านต้องการอ่านเอกสารนี้ให้ได้อรรถรสมากที่สุด กรุณาใช้ Crunchy คุณสามารถอ่านวิธีการติดตั้งและใช้ Crunchy ได้ที่นี่: การติดตั้งและใช้ Crunchy

ติดตั้งภาษาไพทอน

คุณสามารถดาวน์โหลดภาษาไพทอนได้จากเวบไซต์อย่างเป็นทางการ http://www.python.org/ ขณะนี้ (15 ตุลาคม 2551) เราแนะนำใหัคุณดาวน์โหลดไพทอนเวอร์ชัน 2.5 เนื่องจาก Crunchy ไม่สามารถใช้ได้กับไพทอนเวอร์ชันต่ำกว่า 2.4 หรือไพทอนเวอร์ชัน 3.0 ขึ้นไปได้ (เราไม่แน่ใจว่ามันใช้กับเวอร์ชัน 2.6 ได้หรือไม่เนื่องจากเรายังไม่ได้ทดสอบ) นอกจากนี้โค้ดไพทอนอื่นๆ ในเอกสารอื่นๆ ในเวบไซต์นี้ล้วนเขียนขึ้นด้วยไพทอนเวอร์ชัน 2.5 ทั้งสิ้น กรุณาดาวน์โหลดโปรแกรมติดตั้งที่เหมาะสมกับระบบปฏิบัติการที่คอมพิวเตอร์คุณใช้อยู่และติดตั้งภาษาไพทอนตามคำแนะำนำของโปรแกรมแล้ว

ตัวแปรภาษาไพทอน (Python Interpreter)

ตัวแปรภาษาไพทอนเป็นโปรแกรมที่ติดมากับภาษาไพทอนที่คุณได้ดาวน์โหลดมาเมื่อตะกี้นี้ มันมีหน้าที่สองอย่าง

  1. อ่านซอร์สโค้ดภาษาไพทอนแล้วแปรความหมายคำสั่งต่างๆ หรือ
  2. เป็นโปรแกรมที่อนุญาตให้ผู้ใช้ป้อนคำสั่งหรือนิพจน์ภาษาไพทอน แล้วพิมพ์ผลลัพท์ออกทางหน้าจอ (กล่าวคือเป็น read-eval-print loop) พูดได้อีกอย่างหนึ่งคือมันอนุญาตให้ผู้ใช้เขียนโปรแกรมได้โดยไม่ต้องเซฟเก็บไว้ในไฟล์ก่อน

เราจะใช้ตัวแปรภาษาไพทอนในรูปแบบ read-eval-print loop การทำความคุ้นเคยกับภาษาในขั้นแรก แล้วจะพูดเรื่องการเขียนซอร์สโค้ดเก็บไว้ในไฟล์ทีำหลัง

การใช้ตัวแปรภาษาไพทอนเป็น read-eval-print loop

คุณสามารถเรียกให้ตัวแปรภาษาไพทอนทำงานได้็ด้วยการสั่งคำสั่ง

python

ใน shell ในระบบปฏิบัติการของคุณ ผู้ใช้ระบบปฏิบัติการ Windows อาจจะเจอ shell บ่นว่าไม่มีโปรแกรมชื่อ python ในกรณีให้แก้ไขโดยการสั่ง

set PATH=%PATH%;C:\Python25

หรือการไปแก้ไข Environment ชื่อ Path ใน Control Panel -> System -> Advanced -> Environment Variables ให้มี C:\Python25 รวมอยู่ด้วย (อนึ่ง ไดเรคทอรี C:\Python25 นี้อาจเปลี่ยนไปตามเวอร์ชันของภาษาไพทอนที่คุณลอง กล่าวคือถ้าคุณลงเวอร์ชัน 2.6 ก็ต้องใช้ไดเรคทอรี C:\Python26 แทน นอกจากนี้คุณยังสามารถเลือกลงภาษาไพทอนที่ไดเรคทอรีอื่นๆ ก็ได้ ซึ่งในกรณีนี้คุณจะต้องใช้ไดเรคทอรีที่คุณลงภาษาไพทอนไว้แทน C:\Python25)

เมื่อคุณเรียกตัวแปรภาษาไพทอนให้ทำงานแล้ว คุณจะเห็นหน้าจอคล้ายๆ หน้าจอข้า่งล่างนี้

Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

โดยคุณสามารถพิมพ์คำสั่งภาษาไพทอนหนึ่งคำสั่ง แล้วกด ENTER ตัวแปรภาษาไพทอนก็จะนำเอาคำสั่งนั้นไปปฏิบัติ ยกตัวอย่างเช่น

>>> print "Hello, world!"
Hello, world!
>>> 1+1
2
>>> print 2+3
5

การใช้ตัวแปรภาษาไพทอนแปลโปรแกรมที่เก็บไว้ในไฟล์

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

python <<ชื่อไฟล์>>

เมื่อ <<ชื่อไฟล์>> คือชื่อไฟล์ที่เก็บโปรแกรมของเราไว้ ปกติแล้วไฟล์ที่เก็บโปรแกรมภาษาไพทอนจะมีนามสกุล .py เช่น hello.py หรือ abc.py เป็นต้น

เพื่อเป็นการสร้างความคุ้นเคยกับภาษา ลองก็อปปี้โค้ดข้างล่างนี้ใส่ไฟล์ชื่อ factorial.py

def factorial(n):
  if n == 0:
    return 1
  else:
    return n * factorial(n-1)

for n in range(10):
  print str(n)+"! =", factorial(n)

แล้วสั่ง

python factorial.py

ใน shell ซึ่งเมื่อสั่งแล้วโปรแกรมควรจะพิมพ์ค่าของฟังก์ชันแฟกตอเรียลตั้งแต่ 0! ถึง 9! ออกทางหน้าจอดังต่อไปนี้

0! = 1
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880

นิพจน์ทางคณิตศาสตร์

โดยทั่วไปแล้วนิพจน์ทางคณิตศาสตร์ในภาษาไพทอนจะคล้ายๆ กับภาษา C

>>> 6*7
42
>>> 10*(30+9) + 8
398
>>> 10.0*(30+9)+8
398.0
>>> 3*10000+7564
37564
>>> 464 / 9
51
>>> 4649 / 9.0
516.55555555555554
>>> 4649.0 / 9
516.55555555555554
>>> 10%3
1

นิพจน์ข้างต้นทำให้เราได้ข้อสังเกตดังต่อไปนี้

  • ภาษาไพทอนมีข้อมูลชนิดตัวเลขอย่างน้อยสองชนิด คือ เลขจำนวนเต็ม (int) และเลขทศนิยม (float) ในทางเทคนิคแล้ว float ของไพทอนมีความละเอียดเท่ากับ double ในภาษา C
  • มีการทำ type coercion คล้ายภาษา C คือเมื่อนำ int ไปบวกหรือคูณกับ float แล้วก็จะได้ float
  • เครื่องหมายหาร (/) ของไพทอนคล้ายภาษา C กล่าวคือ ถ้าเราเอา int ไปหาร int เราจะได้ผลหารเป็น int แต่ถ้าเอา int ไปหาร float หรือเอา float ไปหาร int จะได้ผลลัพท์เป็น float

สิ่งที่น่าสังเกตของเครื่องหมาย (/) และเครื่องหมายหารเอาเศษ (%) หารคือ ถ้าตัวหารเป็นบวกแล้ว มันจะพยายามทำให้เศษของการหารจะเป็นบวกด้วยเสมอ

>>> -11/3
-4
>>> -11%3
1

ซึ่งนี่ผิดกับภาษา C ซึ่งเมื่อคำนวณนิพจน์ -11 / 3 จะได้ผลลัพธ์เป็น -3 และเมื่อสั่ง -11 % 3 จะได้ผลเป็น -2 อย่างไรก็ดีถ้าตัวหารเป็นลบ ไพทอนจะมีพฤติกรรมเหมือนกับภาษา C

>>> -11/-3
3
>>> -11%-3
-2

นอกจากนี้ ไพทอนยังมีเครื่องหมายยกกำลัง (**) ซึ่งมีความสำคัญ (precedence) มากกว่าเครื่องเครื่องหมายคูณ

>>> 4**2
16
>>> 4.0**2
16.0
>>> 2**0.5
1.4142135623730951
>>> 4*3**2
36
>>> (4*3)**2
144

ตัวแปรและการกำหนดค่าให้ตัวแปร

เราสามารถกำหนดค่าให้ตัวแปรได้โดยใช้เครื่องหมายเท่ากับ (=)

>>> x = 20
>>> 2*x
40
>>> y = x+5
>>> y
25
>>> y**2
625

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

>>> x = 428
>>> x/3
142
>>> x = x * 1.0
>>> x/3
142.66666666666666

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

>>> x = y = z = 0
>>> x
0
>>> y
0
>>> z
0

หรือจะกำหนดค่าให้ตัวแปรทีละหลายๆ ตัวก็ได้

>>> x, y, z = 1, 2, 3
>>> x
1
>>> y
2
>>> z
3

คำสั่ง print

คำสั่ง print มีไว้เพื่อพิมพ์ข้อความและค่าต่างๆ ออกทาง standard output ยกตัวอย่าง เช่น

>>> print 1
1
>>> print 2+5
7
>>> print 2.0 / 3
0.666666666667
>>> x = 65536
>>> print x
65536

โดยคำสั่ง print จะทำการเว้นบรรทัดหลังจากพิมพ์ค่าออกไปแล้วให้โดยอัตโนมัติ

คำสั่ง print สามารถรับ argument ได้หลายตัว โดยเราคั่น argument ด้วยเครื่องหมายคอมมา (,) คำสั่ง print จะใส่ช่องว่างระหว่าง argument ที่อยู่ติดกันให้โดยอัตโนมัติ

>>> print 10, 9**3, 0.5*0.1234, 0
10 729 0.0617 0
>>> x, y, z = 7, 8, 9
>>> print x, y, z
7 8 9

สตริง

ค่าประเภทสตริงในไพทอนนั้นคล้ายกับค่าประเภทสตริงในภาษา C และภาษา Java ที่ต่างกันคือทั้งเครื่องหมายฟันหนู (") และเครื่องหมายฝนทอง (') สามารถใช้ล้อมสตริืงเหมือนกัน

>>> print "THIS IS AN EX-PARROT!!"
THIS IS AN EX-PARROT!!
>>> print 'THIS IS AN EX-PARROT!!'
THIS IS AN EX-PARROT!!

เช่นเดียวกับในภาษา C ถ้าเราต้องการตัวอักษรฟันหนู (") ในสตริงที่ล้อมด้วยตัวอักษรฟันหนู เราจะต้องใช้ตัว escape sequence \" แทนตัวอักษรฟันหนู ในทำนองเดียวกัน ถ้าเราต้องการเครื่องฝนทอง (') ในสตริงที่ล้อมด้วยเครื่องหมายฝนทอง เราต้องใช้ escape sequence \' แทน

>>> print "What do you mean \"miss\"?"
What do you mean "miss"?
>>> print 'I\'m sorry, I have a cold.'
I'm sorry, I have a cold.

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

>>> print '"VOOM"?!? Mate, this bird would not "voom" if you put four million volts through it!'
"VOOM"?!? Mate, this bird would not "voom" if you put four million volts through it!
>>> print "'E's bleedin' demised!"
'E's bleedin' demised! 

Escape sequence อื่นๆ เช่น \n, \t, หรือ \\ ยังมีพฤติกรรมเหมือนกับในภาษา C ทุกประการ

print "PININ' for the FJORDS?!?!?!?\nWhat kind of talk is that?"
PININ' for the FJORDS?!?!?!?
What kind of talk is that?