ผลต่างระหว่างรุ่นของ "Python Programming"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
 
(ไม่แสดง 27 รุ่นระหว่างกลางโดยผู้ใช้ 2 คน)
แถว 1: แถว 1:
เอกสารนี้เขียนขึ้นเพื่อให้ความรู้เกี่ยวกับไวยากรณ์และการเขียนโปรแกรม[http://www.python.org/ ภาษาไพทอน]เบื้องต้น ผู้เขียนสมมติว่าผู้อ่านสามารถเขียนโปรแกรมด้วยภาษาเชิงวัตถุอย่าง C++ หรือ Java ได้อยู่แล้ว เอกสารนี้'''ไม่ใช่เอกสารสอนเขียนโปรแกรม'''
+
เอกสารนี้เขียนขึ้นเพื่อให้ความรู้เกี่ยวกับไวยากรณ์และการเขียนโปรแกรม[http://www.python.org/ ภาษาไพทอน]เบื้องต้น ผู้เขียนสมมติว่าผู้อ่านมีพื้นฐานด้านการโปรแกรมเชิงวัตถุเช่นในภาษา C++ หรือ Java ได้อยู่แล้ว เอกสารนี้'''ไม่ใช่เอกสารสอนเขียนโปรแกรม'''
  
หากท่านต้องการอ่านเอกสารนี้ให้ได้อรรถรสมากที่สุด กรุณาใช้ [http://code.google.com/p/crunchy/ Crunchy] คุณสามารถอ่านวิธีการติดตั้งและใช้ Crunchy ได้ที่นี่: [[How to Use Crunchy|การติดตั้งและใช้ Crunchy]]
+
หากท่านต้องการอ่านเอกสารนี้ให้ได้อรรถรสมากที่สุด กรุณาทดลองปฏิบัติตามตัวอย่างผ่านโปรแกรมที่อนุญาตให้ใช้ไพทอนในโหมดโต้ตอบ เช่นไพทอนเชลล์ โปรแกรม Spyder หรือ Jupyter (IPython) Notebook
  
== ติดตั้งภาษาไพทอน ==
+
== สารบัญ ==
คุณสามารถดาวน์โหลดภาษาไพทอนได้จากเวบไซต์อย่างเป็นทางการ http://www.python.org/ ขณะนี้ (15 ตุลาคม 2551) เราแนะนำใหัคุณดาวน์โหลดไพทอนเวอร์ชัน 2.5 เนื่องจาก Crunchy ไม่สามารถใช้ได้กับไพทอนเวอร์ชันต่ำกว่า 2.4 หรือไพทอนเวอร์ชัน 3.0 ขึ้นไปได้ (เราไม่แน่ใจว่ามันใช้กับเวอร์ชัน 2.6 ได้หรือไม่เนื่องจากเรายังไม่ได้ทดสอบ) นอกจากนี้โค้ดไพทอนอื่นๆ ในเอกสารอื่นๆ ในเวบไซต์นี้ล้วนเขียนขึ้นด้วยไพทอนเวอร์ชัน 2.5 ทั้งสิ้น กรุณาดาวน์โหลดโปรแกรมติดตั้งที่เหมาะสมกับระบบปฏิบัติการที่คอมพิวเตอร์คุณใช้อยู่และติดตั้งภาษาไพทอนตามคำแนะำนำของโปรแกรมแล้ว
+
* [[Python Programming/Setting Up Python|Setting Up Python]]
 
+
* [[Python Programming/Python Interpreter|Python Interpreter]]
== ตัวแปรภาษาไพทอน (Python Interpreter) ==
+
* [[Python Programming/Mathematical Expression|Mathematical Expressions]]
ตัวแปรภาษาไพทอนเป็นโปรแกรมที่ติดมากับภาษาไพทอนที่คุณได้ดาวน์โหลดมาเมื่อตะกี้นี้ มันมีหน้าที่สองอย่าง
+
* [[Python Programming/Variables and Assignments|Variables and Assignments]]
 
+
* [[Python Programming/Functions|Functions]]
# อ่านซอร์สโค้ดภาษาไพทอนแล้วแปรความหมายคำสั่งต่างๆ ''หรือ''
+
* [[Python Programming/User-Defined Functions|User-Defined Functions]]
# เป็นโปรแกรมที่อนุญาตให้ผู้ใช้ป้อนคำสั่งหรือนิพจน์ภาษาไพทอน แล้วพิมพ์ผลลัพท์ออกทางหน้าจอ (กล่าวคือเป็น [http://en.wikipedia.org/wiki/REPL read-eval-print loop]) พูดได้อีกอย่างหนึ่งคือมันอนุญาตให้ผู้ใช้เขียนโปรแกรมได้โดยไม่ต้องเซฟเก็บไว้ในไฟล์ก่อน
+
* [[Python Programming/Print Command|Print Command]]
 
+
* [[Python Programming/Strings|Strings]]
เราจะใช้ตัวแปรภาษาไพทอนในรูปแบบ read-eval-print loop การทำความคุ้นเคยกับภาษาในขั้นแรก แล้วจะพูดเรื่องการเขียนซอร์สโค้ดเก็บไว้ในไฟล์ทีำหลัง
+
* [[Python Programming/Boolean Expressions|Boolean Expressions]]
 
+
* [[Python Programming/If Statements|If Statements]]
=== การใช้ตัวแปรภาษาไพทอนเป็น read-eval-print loop ===
+
* [[Python Programming/Tuples|Tuples]]
คุณสามารถเรียกให้ตัวแปรภาษาไพทอนทำงานได้็ด้วยการสั่งคำสั่ง
+
* [[Python Programming/Lists|Lists]]
python
+
* [[Python Programming/Loops|Loops]]
ใน shell ในระบบปฏิบัติการของคุณ ผู้ใช้ระบบปฏิบัติการ Windows อาจจะเจอ shell บ่นว่าไม่มีโปรแกรมชื่อ python ในกรณีให้แก้ไขโดยการสั่ง
+
* [[Python Programming/Dictionaries|Dictionaries]]
set PATH=%PATH%;C:\Python25
+
* [[Python Programming/Objects|Objects]]
หรือการไปแก้ไข Environment ชื่อ Path ใน Control Panel -> System -> Advanced -> Environment Variables ให้มี C:\Python25 รวมอยู่ด้วย (อนึ่ง ไดเรคทอรี C:\Python25 นี้อาจเปลี่ยนไปตามเวอร์ชันของภาษาไพทอนที่คุณลอง กล่าวคือถ้าคุณลงเวอร์ชัน 2.6 ก็ต้องใช้ไดเรคทอรี C:\Python26 แทน นอกจากนี้คุณยังสามารถเลือกลงภาษาไพทอนที่ไดเรคทอรีอื่นๆ ก็ได้ ซึ่งในกรณีนี้คุณจะต้องใช้ไดเรคทอรีที่คุณลงภาษาไพทอนไว้แทน C:\Python25)
+
* [[Python Programming/Classes|Classes]]
 
+
* [[Python Programming/Inheritance|Inheritance]]
เมื่อคุณเรียกตัวแปรภาษาไพทอนให้ทำงานแล้ว คุณจะเห็นหน้าจอคล้ายๆ หน้าจอข้า่งล่างนี้
+
* [[Python Programming/Modules|Modules]]
 
 
<pre>
 
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.
 
>>>
 
</pre>
 
 
 
โดยคุณสามารถพิมพ์คำสั่งภาษาไพทอนหนึ่งคำสั่ง แล้วกด ENTER ตัวแปรภาษาไพทอนก็จะนำเอาคำสั่งนั้นไปปฏิบัติ ยกตัวอย่างเช่น
 
 
 
<pre title="interpreter">
 
>>> print "Hello, world!"
 
Hello, world!
 
>>> 1+1
 
2
 
>>> print 2+3
 
5
 
</pre>
 
 
 
=== การใช้ตัวแปรภาษาไพทอนแปลโปรแกรมที่เก็บไว้ในไฟล์ ===
 
เราสามารถเรียกตัวแปรภาษาไพทอนให้แปลโปรแกรมที่เก็บไว้ในไฟล์ได้ด้วยการสั่ง
 
python <<ชื่อไฟล์>>
 
เมื่อ <<ชื่อไฟล์>> คือชื่อไฟล์ที่เก็บโปรแกรมของเราไว้ ปกติแล้วไฟล์ที่เก็บโปรแกรมภาษาไพทอนจะมีนามสกุล .py เช่น hello.py หรือ abc.py เป็นต้น
 
 
 
เพื่อเป็นการสร้างความคุ้นเคยกับภาษา ลองก็อปปี้โค้ดข้างล่างนี้ใส่ไฟล์ชื่อ factorial.py
 
<pre title="editor external">
 
def factorial(n):
 
  if n == 0:
 
    return 1
 
  else:
 
    return n * factorial(n-1)
 
 
 
for n in range(10):
 
  print str(n)+"! =", factorial(n)
 
</pre>
 
แล้วสั่ง
 
python factorial.py
 
ใน shell ซึ่งเมื่อสั่งแล้วโปรแกรมควรจะพิมพ์ค่าของฟังก์ชันแฟกตอเรียลตั้งแต่ 0! ถึง 9! ออกทางหน้าจอดังต่อไปนี้
 
<pre>
 
0! = 1
 
1! = 1
 
2! = 2
 
3! = 6
 
4! = 24
 
5! = 120
 
6! = 720
 
7! = 5040
 
8! = 40320
 
9! = 362880
 
</pre>
 
 
 
== นิพจน์ทางคณิตศาสตร์ ==
 
โดยทั่วไปแล้วนิพจน์ทางคณิตศาสตร์ในภาษาไพทอนจะคล้ายๆ กับภาษา C
 
<pre title="interpreter">
 
>>> 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
 
</pre>
 
นิพจน์ข้างต้นทำให้เราได้ข้อสังเกตดังต่อไปนี้
 
* ภาษาไพทอนมีข้อมูลชนิดตัวเลขอย่างน้อยสองชนิด คือ เลขจำนวนเต็ม (int) และเลขทศนิยม (float) ในทางเทคนิคแล้ว float ของไพทอนมีความละเอียดเท่ากับ double ในภาษา C
 
* มีการทำ [http://en.wikipedia.org/wiki/Type_conversion type coercion] คล้ายภาษา C คือเมื่อนำ int ไปบวกหรือคูณกับ float แล้วก็จะได้ float
 
* เครื่องหมายหาร (/) ของไพทอนคล้ายภาษา C กล่าวคือ ถ้าเราเอา int ไปหาร int เราจะได้ผลหารเป็น int แต่ถ้าเอา int ไปหาร float หรือเอา float ไปหาร int จะได้ผลลัพท์เป็น float
 
 
 
สิ่งที่น่าสังเกตของเครื่องหมาย (/) และเครื่องหมายหารเอาเศษ (%) หารคือ ถ้าตัวหารเป็นบวกแล้ว มันจะพยายามทำให้เศษของการหารจะเป็นบวกด้วยเสมอ
 
<pre title="interpreter">
 
>>> -11/3
 
-4
 
>>> -11%3
 
1
 
</pre>
 
ซึ่งนี่ผิดกับภาษา C ซึ่งเมื่อคำนวณนิพจน์ -11 / 3 จะได้ผลลัพธ์เป็น -3 และเมื่อสั่ง -11 % 3 จะได้ผลเป็น -2 อย่างไรก็ดีถ้าตัวหารเป็นลบ ไพทอนจะมีพฤติกรรมเหมือนกับภาษา C
 
<pre title="interpreter">
 
>>> -11/-3
 
3
 
>>> -11%-3
 
-2
 
</pre>
 
 
 
นอกจากนี้ ไพทอนยังมีเครื่องหมายยกกำลัง (**) ซึ่งมีความสำคัญ (precedence) มากกว่าเครื่องเครื่องหมายคูณ
 
<pre title="interpreter">
 
>>> 4**2
 
16
 
>>> 4.0**2
 
16.0
 
>>> 2**0.5
 
1.4142135623730951
 
>>> 4*3**2
 
36
 
>>> (4*3)**2
 
144
 
</pre>
 
 
 
== ตัวแปรและการกำหนดค่าให้ตัวแปร ==
 
เราสามารถกำหนดค่าให้ตัวแปรได้โดยใช้เครื่องหมายเท่ากับ (=)
 
<pre title="interpreter">
 
>>> x = 20
 
>>> 2*x
 
40
 
>>> y = x+5
 
>>> y
 
25
 
>>> y**2
 
625
 
</pre>
 
สังเกตว่าในภาษาไพทอน เราไม่จำเป็นตัองประกาศชื่อและชนิดของตัวแปรล่วงหน้าเหมือนภาษา C, C++, หรือ Java นอกจากนี้ตัวแปรในภาษาไพธอนจะเก็บข้อมูลชนิดใดก็ได้ และชนิดข้อมูลที่มันเก็บก็สามารถเปลี่ยนไปได้เรื่อยๆ ถ้ามันถูกกำหนดค่าใหม่ เช่น
 
<pre title="interpreter">
 
>>> x = 428
 
>>> x/3
 
142
 
>>> x = x * 1.0
 
>>> x/3
 
142.66666666666666
 
</pre>
 
เราสามารถกำหนดตัวแปรหลายๆ ตัวให้มีค่าเดียวกันได้เหมือนในภาษา C
 
<pre title="interpreter">
 
>>> x = y = z = 0
 
>>> x
 
0
 
>>> y
 
0
 
>>> z
 
0
 
</pre>
 
หรือจะกำหนดค่าให้ตัวแปรทีละหลายๆ ตัวก็ได้
 
<pre title="interpreter">
 
>>> x, y, z = 1, 2, 3
 
>>> x
 
1
 
>>> y
 
2
 
>>> z
 
3
 
</pre>
 
 
 
== ฟังก์ชัน ==
 
ไพทอนมีฟังก์ชันสำเร็จรูปที่สามารถที่สามารถเรียกใช้ได้เลยอยู่หลายฟังก์ชัน ไวยากรณ์การเรียกฟังก์ชันของภาษาไพธอนเหมือนกับภาษา C และ Java กล่าวคือเขียนชื่อฟังก์ชันแล้วตามด้วยวงเล็บเปิด แล้วใส่ parameter ซึ่งถ้า parameter มีหลายตัวก็ให้คั่น parameter ที่อยู่ติดกันด้วยเครื่องหมายคอมมา (,) แล้วตามด้วยวงเล็บปิด เช่น โค้ดตัวอย่างต่อไปนี้เรียกใช้ฟังก์ชัน <tt>abs(x)</tt> ซึ่งคืนค่าสัมบูรณ์ของ <tt>x</tt> ที่ป้อนให้
 
<pre title="interpreter">
 
>>> abs(-10)
 
10
 
>>> abs(0)
 
0
 
>>> abs(10.5)
 
10
 
</pre>
 
ฟังก์ชัน <tt>pow(x,y)</tt> ซึ่งคือค่า <tt>x</tt> ยกกำลัง <tt>y</tt> ซึ่งสามารถใช้แทน <tt>x**y</tt> ได้
 
<pre title="interperter">
 
>>> pow(2, 16)
 
65536
 
>>> pow(2, pow(2, 2))
 
16
 
>>> pow(5, 0.5)
 
2.2360679774997898
 
pow(5, -2)
 
0.040000000000000001
 
</pre>
 
 
 
== คำสั่ง print ==
 
คำสั่ง print มีไว้เพื่อพิมพ์ข้อความและค่าต่างๆ ออกทาง standard output ยกตัวอย่าง เช่น
 
<pre title="interpreter">
 
>>> print 1
 
1
 
>>> print 2+5
 
7
 
>>> print 2.0 / 3
 
0.666666666667
 
>>> x = 65536
 
>>> print x
 
65536
 
</pre>
 
 
 
โดยคำสั่ง print จะทำการเว้นบรรทัดหลังจากพิมพ์ค่าออกไปแล้วให้โดยอัตโนมัติ
 
 
 
คำสั่ง print สามารถรับ argument ได้หลายตัว โดยเราคั่น argument ด้วยเครื่องหมายคอมมา (,) คำสั่ง print จะใส่ช่องว่างระหว่าง argument ที่อยู่ติดกันให้โดยอัตโนมัติ
 
<pre title="interpreter">
 
>>> 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
 
</pre>
 
 
 
== สตริง ==
 
ค่าประเภทสตริงในไพทอนนั้นคล้ายกับค่าประเภทสตริงในภาษา C และภาษา Java ที่ต่างกันคือทั้งเครื่องหมายฟันหนู (") และเครื่องหมายฝนทอง (') สามารถใช้ล้อมสตริืงเหมือนกัน
 
<pre title="interpreter">
 
>>> print "THIS IS AN EX-PARROT!!"
 
THIS IS AN EX-PARROT!!
 
>>> print 'THIS IS AN EX-PARROT!!'
 
THIS IS AN EX-PARROT!!
 
</pre>
 
เช่นเดียวกับในภาษา C ถ้าเราต้องการตัวอักษรฟันหนู (") ในสตริงที่ล้อมด้วยตัวอักษรฟันหนู เราจะต้องใช้ตัว escape sequence <tt>\"</tt> แทนตัวอักษรฟันหนู ในทำนองเดียวกัน ถ้าเราต้องการเครื่องฝนทอง (') ในสตริงที่ล้อมด้วยเครื่องหมายฝนทอง เราต้องใช้ escape sequence <tt>\'</tt> แทน
 
<pre title="interpreter">
 
>>> 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.
 
</pre>
 
แต่เราไม่ต้องใช้ escape sequence ถ้าเราต้องการตัวอักษรฟันหนูในสตริงที่่ล้อมด้วยเครื่องหมายฝนทอง และในทางกลับกันก้เป็นจริงด้วย
 
<pre title="interpreter">
 
>>> 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!
 
</pre>
 
Escape sequence อื่นๆ เช่น <tt>\n</tt>, <tt>\t</tt>, หรือ <tt>\\</tt> ยังมีพฤติกรรมเหมือนกับในภาษา C ทุกประการ
 
<pre title="interpreter">
 
>>> print "PININ' for the FJORDS?!?!?!?\nWhat kind of talk is that?"
 
PININ' for the FJORDS?!?!?!?
 
What kind of talk is that?
 
>>> print "Owner:\t\tNo, no.....No, 'e's stunned!\nMr. Praline:\tSTUNNED?!?"
 
Owner: No, no.....No, 'e's stunned!
 
Mr. Praline: STUNNED?!?
 
</pre>
 

รุ่นแก้ไขปัจจุบันเมื่อ 16:57, 3 ตุลาคม 2558

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

หากท่านต้องการอ่านเอกสารนี้ให้ได้อรรถรสมากที่สุด กรุณาทดลองปฏิบัติตามตัวอย่างผ่านโปรแกรมที่อนุญาตให้ใช้ไพทอนในโหมดโต้ตอบ เช่นไพทอนเชลล์ โปรแกรม Spyder หรือ Jupyter (IPython) Notebook

สารบัญ