ผลต่างระหว่างรุ่นของ "ภาษาไพทอน"

เนื้อหาที่ลบ เนื้อหาที่เพิ่ม
Styyx (คุย | ส่วนร่วม)
ย้อนการแก้ไขของ JackDaniels898 (พูดคุย) ไปยังรุ่นก่อนหน้าโดย 159.192.98.50
ป้ายระบุ: ย้อนรวดเดียว
this is the best
บรรทัด 25:
| wikibooks = ภาษาไพทอน
}}
* good
 
'''ไพทอน''' ({{lang-en|Python}}) เป็น[[อินเทอร์พรีเตอร์]][[ภาษาโปรแกรมระดับสูง|ภาษาระดับสูง]]ซึ่งสร้างโดย[[คีโด ฟัน โรสซึม]] โดยเริ่มใน พ.ศ. 2533 การออกแบบของภาษาไพทอนมุ่งเน้นให้ผู้โปรแกรมสามารถอ่านชุดคำสั่งได้โดยง่ายผ่านการใช้[[:en:off-side rule|งานอักขระเว้นว่าง (whitespaces) จำนวนมาก]] นอกจากนั้นการออกแบบภาษาไพทอนและการประยุกต์ใช้แนวคิดการเขียน[[โปรแกรมเชิงวัตถุ]]ในตัวภาษายังช่วยให้[[โปรแกรมเมอร์|นักเขียนโปรแกรม]]สามารถเขียนโปรแกรมที่เป็นระเบียบ อ่านง่าย มีขนาดเล็ก และง่ายต่อการบำรุง<ref>https://web.archive.org/web/20120623165941/http://cutter.rexx.com/~dkuhlman/python_book_01.html</ref>
 
ไพทอนเป็นภาษาแบบไดนามิกพร้อม[[:en:Garbage collection (computer science)|ตัวเก็บขยะ]] ไพทอนรองรับ[[กระบวนทัศน์การเขียนโปรแกรม]]หลายรูปแบบ ซึ่งรวมถึงแต่ไม่จำกัดเพียงการเขียนโปรแกรมตามลำดับขั้น การเขียนโปรแกรมเชิงวัตถุ หรือการเขียนโปรแกรมเชิงฟังก์ชัน นอกจากนี้ไพทอนเป็นภาษาที่มักถูกอธิบายว่าเป็นภาษาโปรแกรมแบบ "มาพร้อมถ่าน" (batteries included) กล่าวคือไพทอนมาพร้อมกับ[[:en:Standard Library|ไลบรารีมาตรฐาน]]จำนวนมาก เช่นโครงสร้างข้อมูลแบบซับซ้อน และไลบรารีสำหรับคณิตศาสตร์
 
ไพทอนมักถูกมองว่าเป็นภาษาที่สร้างต่อจากภาษา [[ภาษาโปรแกรม ABC|ABC]] โดยไพทอน 2.0 ซึ่งออกเผยแพร่เมื่อ พ.ศ. 2543 มาพร้อมกับเครื่องมือสำหรับการเขียนโปรแกรมจำนวหนึ่ง อย่างเช่น[[:en:List Comprehension|ตัวสร้างแถวรายการ]] (list comprehension)
 
ไพทอนรุ่น 3.0 เป็นไพทอนรุ่นที่ได้รับการปรับปรุงและแก้ไขจำนวนมาก ทว่าความเปลี่ยนแปลงไนไพทอน 3 นั้นเป็นการเปลี่ยนแปลงที่[[:en:Backward compatibility|ไม่เข้ากันแบบย้อนหลัง]] กล่าวคือชุดคำสั่งที่เขียนสำหรับไพทอน 2 อาจไม่ทำงานตามปกติเมื่อสั่งให้ทำงานบนตัวแปลภาษาของไพทอน 3
 
ไพทอนรุ่น 2.0 หมดการสนับสนุนอย่างเป็นทางการใน พ.ศ. 2563 โดยการหมดการสนับสนุนนี้ถูกวางแผนตั้งแต่ พ.ศ. 2558 และไพทอนรุ่น 2.7.18 เป็นไพทอนรุ่น 2.7 และรุ่นตระกูล 2.0 ตัวสุดท้ายที่ออกเผยแพร่<ref>{{Cite web|url=https://pythoninsider.blogspot.com/2020/04/python-2718-last-release-of-python-2.html|title=Python Insider: Python 2.7.18, the last release of Python 2|last=Peterson|first=Benjamin|date=2020-04-20|website=Python Insider|access-date=2020-04-27}}</ref> โดยหลังจากนี้จะไม่มีการสนับสนุนความปลอดภัยหรือการปรับปรุงอื่นใดเพิ่มเติมสำหรับภาษาไพทอนรุ่น 2.0 อีก<ref>{{Cite web|url=https://www.python.org/doc/sunset-python-2/|title=Sunsetting Python 2|website=Python.org|language=en|access-date=2019-09-22}}</ref><ref>{{Cite web|url=https://www.python.org/dev/peps/pep-0373/|title=PEP 373 -- Python 2.7 Release Schedule|website=Python.org|language=en|access-date=2019-09-22}}</ref>
 
[[อินเทอร์พรีเตอร์]]ของภาษาไพทอนสามารถใช้งานได้บนหลายระบบปฏิบัติการ ชุมชนนักพัฒนาโปรแกรมของไพทอนร่วมกันดูแลโครงการ[[:en:CPython|ซีไพทอน]]โดยมี[[มูลนิธิซอฟต์แวร์ไพทอน]]ซึ่งเป็นองค์กรไม่แสวงผลกำไร ทำหน้าที่ดูแลและจัดการทรัพยากรสำหรับการพัฒนาไพทอนและซีไพทอน
 
== คุณสมบัติและปรัชญาการออกแบบ ==
 
<!-- TODO: Add citations from English Wikipedia (it's quite straightforward) -->
 
ผู้ใช้ภาษาไพทอนสามารถเลือก[[กระบวนทัศน์การเขียนโปรแกรม]]ตามที่ตนเองถนัดได้ โดยรองรับการเขียนโปรแกรมเชิงโครงสร้างและ[[การเขียนโปรแกรมเชิงวัตถุ]]อย่างเต็มรูปแบบ รวมถึงรองรับ[[การเขียนโปรแกรมเชิงฟังก์ชัน]] (ทั้งในรูปแบบของ[[การเขียนโปรแกรมเชิงลักษณะ]] และการเขียนโปรแกรมเชิงเมตาออบเจกต์) ส่วนขยายของไพทอนทำให้สามารถเขียนโปรแกรมด้วยกระบวนทัศน์อื่น เช่น[[การเขียนโปรแกรมเชิงตรรกะ]]
 
ไพทอนเก็บข้อมูลแบบไดนามิก (dynamic type) และใช้ขั้นตอนวิธี[[:en:Reference counting|การนับการอ้างอิง]] (Reference counting) ประกอบรวมกับ[[:en:Garbage collection (computer science)|ตัวเก็บขยะ]] (garbage collector) เพื่อจัดการหน่วยความจำ
 
ไพทอนมาพร้อมเครื่องมือสำหรับการเขียนโปรแกรมเชิงฟังก์ชันแบบที่พบใน[[ภาษาลิสป์]] นอกจากนี้ไพทอนมีเครื่องมืออย่างเช่นฟังก์ชัน <code>filter</code> <code>map</code> และ <code>reduce</code>, [[:en:List comprehension|เครื่องมือการสร้างลิสต์]] (list comprehension), [[แถวลำดับแบบจับคู่]] (ในชื่อของ Dictionary), [[เซต]] และ[[:en:Generator_(computer_programming)|เครื่องมือสร้างการวนซ้ำ]] (generator)
 
แนวคิดและหลักการของไพทอนถูกสรุปในเอกสารชื่อว่า [[:en:Zen of Python|Zen of Python]] ซึ่งระบุหลักการของภาษาไว้เช่น
 
* สวยงามดีกว่าน่าเกลียด (Beautiful is better than ugly.)
* ชัดแจ้งดีกว่าซ่อนเร้น (Explicit is better than implicit.)
* เรียบง่ายดีกว่าซับซ้อน (Simple is better than complex.)
* ซับซ้อนดีกว่ายุ่งเหยิง (Complex is better than complicated.)
* ต้องใส่ใจการอ่านออกได้ง่าย (Readability counts.)
 
ไพทอนไม่ได้ถูกออกแบบมาให้มีคุณสมบัติและความสามารถในการทำงานทุกอย่าง แต่ไพทอนถูกออกแบบมาให้สามารถถูกต่อยอดได้ง่าย การออกแบบในลักษณะนี้ทำให้ตัวของภาษาไพทอนได้รับความนิยมเนื่องด้วยความสามารถในการเพิ่มส่วนต่อขยายหรือชุดคุณสมบัติลงไปในแอปพลิเคชันที่มีอยู่ก่อนหน้านี้ การออกแบบในลักษณะนี้มาจากวิสัยทัศน์ของฟัน โรสซึมที่ต้องการเห็นการออกแบบภาษาโปรแกรมที่มีระบบแกนกลางขนาดเล็ก แต่มาพร้อมไลบรารีชุดคำสั่งขนาดใหญ่ โดยเป้าหมายการออกแบบลักษณะนี้มาจากความไม่สะดวกในการใช้ภาษา ABC ที่ฟัน โรสซึมเคยเจอมาก่อนหน้านี้
 
โครงสร้างทางวากยสัมพันธ์ (syntax) ของภาษาไพทอนมุ่งเน้นความเรียบง่ายและไม่ยุ่งเหยิง ในขณะเดียวกันยังคงให้อิสระกับนักพัฒนาโปรแกรมในการเลือกวิธีการเขียนโปรแกรมได้เอง ปรัชญาการออกแบบนี้ของไพทอนอยู่บนความเชื่อที่ว่า "ควรจะมีทางเดียว—และทางเดียวเท่านั้น—ในการทำอะไรสักอย่าง" ("there should be one—and preferably only one—obvious way to do it") ซึ่งตรงกันข้ามกับแนวคิดการออกแบบของ[[ภาษาเพิร์ล]]ที่เชื่อว่า "[[:en:There's more than one way to do it|เราควรทำอะไรได้มากกว่าหนึ่งวิธี]]" ("There's more than one way to do it") หากจะกล่าวให้ละเอียด [[:en:Alex Martelli|อะเล็กซ์ มาร์เตลลี]] ผู้เขียนตำราภาษาไพทอน และสมาชิกของมูลนิธิซอฟต์แวร์ไพทอน กล่าวว่า "ในวัฒนธรรมของไพทอน การอธิบายว่า[วิธีการเขียนโปรแกรม]บางอย่างนั้น''ฉลาดมาก'' ไม่ถือเป็นคำชม"
 
นักพัฒนาโปรแกรมที่ใช้ภาษาไพทอนมักพยายามหลีกเลี่ยง[[:en:premature optimization|การปรับปรุงประสิทธิภาพก่อนถึงเวลาอันควร]] (premature optimisation) และมักปฏิเสธการรวมโค้ดของโครงการ CPython ที่ต้องแลกประสิทธิภาพที่เพิ่มขึ้นมาเล็กน้อยกับความอ่านยากของโค้ด โดยเมื่อต้องเขียนชุดคำสั่งที่เวลาประมวลผลเป็นเรื่องสำคัญ นักพัฒนาโปรแกรมไพทอนจะนิยมเขียนส่วยขยายของโปรแกรมนั้นด้วยภาษา C แยกออกมา หรือใช้ [[:en:PyPy|PyPy]] ซึ่งเป็น[[:en:Just-in-time compilation|ตัวแปลภาษาแบบในเวลา]] (Just-in-time compiler) สำหรับภาษาไพทอน นอกจากนี้นักพัฒนายังมีตัวเลือกอื่นเช่นการใช้[[:en:Cython|ไซทอน]]ซึ่งเป็นตัวแปลรหัสคำสั่งจากภาษาไพทอนไปเป็นภาษาซี
 
หนึ่งในเป้าหมายสำคัญของภาษาไพทอนคือความสนุกในการใช้งาน ชื่อของภาษาโปรแกรมมิงไพทอนนั้นมาจากชื่อของกลุ่มนักแสดงตลก [[Monty Python]] จากประเทศอังกฤษ ความมุ่งมั่นในการทำให้ภาษาไพทอนนั้นสนุกต่อการใช้นั้นพบเห็นได้เพิ่มเติมจากตัวอย่างของชุดคำสั่งในภาษาไพทอนบนเว็บไซต์ของโครงการไพทอนเอง ซึ่งเลือกใช้คำอย่างเช่น "spam and eggs" (เพื่อล้อกับตอนหนึ่งของรายการตลกจาก Monty Python) แทนที่จะเลือกใช้คำทั่วไปอย่าง foo และ bar ตามตัวอย่างภาษาโปรแกรมมิงอื่น
 
ชุมชนไพทอนมักนิยมใช้วลี "มีความเป็นไพทอน" (Pythonic) เพื่อกล่าวถึงรูปแบบของชุดคำสั่งของไพทอนที่มีความสะอาดสะอ้านและถูกเขียนขึ้นในลักษณะที่สอดคล้องกับปรัชญาการออกแบบดังกล่าว กล่าวคือมีความอ่านง่ายและแสดงถึงความรู้ในการเขียนชุดคำสั่งภาษาไพทอนได้เป็นอย่างดี ในทางตรงกันข้าม ชุดคำสั่งที่ไม่สามารถอ่านได้โดยง่าย (กล่าวคือชุดคำสั่งที่เหมือนการแปลงชุดคำสั่งจากภาษาโปรแกรมอื่นมาเป็นไพทอนแบบบรรทัดต่อบรรทัด) มักจะถูกเรียกว่าชุดคำสั่งที่ "ไม่มีความเป็นไพทอน" (Unpythonic)
 
ผู้ใช้ ผู้หลงใหล หรือผู้สันทัดภาษาไพทอนมักได้รับการขนานนามว่าเป็น "ไพธอนิสตา" (Pythonista)
 
== จุดเด่นของภาษาไพทอน ==
=== ความเป็นภาษาสคริปต์ ===
เนื่องจากไพทอนเป็น[[ภาษาสคริปต์]] ทำให้ใช้เวลาในการเขียนและ[[คอมไพล์]]ไม่มาก ทำให้เหมาะกับงานด้าน[[การดูแลระบบ]] (System administration) เป็นอย่างยิ่ง มีการสนับสนุนภาษาไพทอนโดยเป็นส่วนหนึ่งของ[[ระบบปฏิบัติการ]][[ยูนิกซ์]], [[ลินุกซ์]] และสามารถติดตั้งให้ทำงานเป็นภาษาสคริปต์ของวินโดวส์ ผ่านระบบ [[:en:Windows Script Host|Windows Script Host]] ได้อีกด้วย
=== ไวยากรณ์ที่อ่านง่าย ===
ไวยากรณ์ของไพทอนได้กำจัดการใช้สัญลักษณ์ที่ใช้ในการแบ่งบล็อกของโปรแกรม และใช้การย่อหน้าแทน ทำให้สามารถอ่านโปรแกรมที่เขียนได้ง่าย นอกจากนั้นยังมีการสนับสนุนการเขียน docstring ซึ่งเป็นข้อความสั้น ๆ ที่ใช้อธิบายการทำงานของ[[ฟังก์ชัน]], [[คลาส]] และ[[โมดูล]]อีกด้วย
 
=== ความเป็นภาษากาว ===
ไพทอนเป็นภาษากาว (Glue Language) ได้อย่างดีเนื่องจากสามารถเรียกใช้ภาษาโปรแกรมอื่น ๆ ได้หลายภาษา ทำให้เหมาะที่จะใช้เขียนเพื่อประสานงานโปรแกรมที่เขียนในภาษาต่างกันได้
 
== ตัวอย่างภาษาโปรแกรมไพทอน ==
ตัวอย่างด้านล่างเป็นตัวอย่างสำหรับโปรแกรมซึ่งเขียนด้วยภาษาไพทอน 3 ซึ่งมีโครงสร้างทางวากยสัมพันธ์ต่างจากไพทอน 2
 
=== โปรแกรมสวัสดีชาวโลก ===
<syntaxhighlight lang="python">
print('Hello, world!')
</syntaxhighlight>
 
=== โปรแกรมสำหรับการคำนวณเลข[[แฟกทอเรียล]]ของจำนวนเต็มบวกใด ๆ ===
<syntaxhighlight lang="python">
# คำสั่งในบรรทัดด้านล่างรับเข้าตัวเลข ก่อนแปลงเป็นจำนวนเต็มบวก
# ชุดคำสั่ง `int()` ในไพทอนจะตัดทศนิยมทิ้งโดยอัตโนมัติ
n = int(input('กรุณาป้อนข้อมูลรับเข้าตัวเลขใด ๆ เพื่อคำนวณค่าแฟกทอเรียล: '))
 
# หากตัวเลขมีค่าน้อยกว่า 0 ให้ทำการยกแสดงข้อผิดพลาด (error raising)
# โดยให้แสดงข้อผิดพลาดแบบ `ValueError` ขึ้นมา
if n < 0:
raise ValueError('คุณจำเป็นต้องป้อนจำนวนเต็มบวก')
 
# ประกาศค่าตั้งต้นของแฟกทอเรียล
fact = 1
 
# วนซ้ำสำหรับค่า i ตั้งแต่ 2 ถึง (n+1)
for i in range(2, n + 1):
# เทียบเท่ากับ fact = fact * i
fact *= i
 
# แสดงผลคำตอบ
print(fact)
</syntaxhighlight>
 
== ไพทอนในแพลตฟอร์มต่าง ๆ ==
ผู้เขียนโปรแกรมภาษาไพทอนสามารถเลือกใช้แพลตฟอร์ม
 
=== ซีไพทอน ===
[[ซีไพทอน]] (CPython) คือแพลตฟอร์มภาษาไพทอนดั้งเดิม โปรแกรมอินเทอร์พรีเตอร์ถูกเขียนโดย[[ภาษาซี]] ซึ่ง[[คอมไพล์]]ใช้ได้บนหลาย[[ระบบปฏิบัติการ]] เช่น [[วินโดวส์]], [[ยูนิกซ์]], [[ลินุกซ์]] การใช้งานสามารถทำได้โดยการติดตั้งโปรแกรมอินเทอร์พรีเตอร์และ[[แพ็คเกจซอฟต์แวร์|แพ็คเกจ]]ที่จำเป็นต่าง ๆ
 
=== ไจธอน ===
[[ไจธอน]] (Jython) เป็นแพลตฟอร์มภาษาไพทอนที่ถูกพัฒนาบน[[แพลตฟอร์มจาวา]] เพื่อเพิ่มอำนวยความสะดวกในการใช้ความสามารถ[[ภาษาสคริปต์]]ของไพทอนลงในซอฟต์แวร์จาวาอื่น ๆ
การใช้งานสามารถทำได้โดยการติดตั้งจาวาและเรียกไลบรารีของไจธอนซึ่งมาในรูปไบนารีเพื่อใช้งาน
 
=== ไพทอนดอตเน็ต ===
Python.NET เป็นการพัฒนาภาษาไพทอนให้สามารถทำงานบน[[ดอตเน็ตเฟรมเวิร์ก]]ของไมโครซอฟท์ได้ โดยโปรแกรมที่ถูกเขียนจะถูกแปลงเป็น [[CLR]] ปัจจุบันมีโครงการที่นำภาษาไพทอนมาใช้บน .NET Framework ของไมโครซอฟท์แล้วคือโครงการ [[IronPython]]
 
== ไลบรารีในไพทอน ==
การเขียนโปรแกรมในภาษาไพทอนโดยใช้[[ไลบรารี]]ต่าง ๆ เป็นการลดภาระของ[[โปรแกรมเมอร์]]ได้เป็นอย่างดี ทำให้โปรแกรมเมอร์ไม่ต้องเสียเวลากับการเขียนคำสั่งที่ซ้ำ ๆ เช่นการแสดงผลข้อมูลออกสู่หน้าจอ หรือการรับค่าต่าง ๆ
 
ไพทอนมีชุดไลบรารีมาตรฐานมาให้ตั้งแต่ติดตั้งอินเตอร์พรีเตอร์ นอกจากนั้นยังมีผู้พัฒนาจากทั่วโลกดำเนินการพัฒนาไลบรารีซึ่งช่วยอำนวยความสะดวกในด้านต่าง ๆ โดยจะเผยแพร่ในรูปแบบของแพ็คเกจต่าง ๆ ซึ่งสามารถติดตั้งเพิ่มเติมได้อีกด้วย
 
=== แพ็คเกจเพิ่มเติมที่น่าสนใจ ===
* wxPython: อีกทางเลือกหนึ่งสำหรับเขียน[[ส่วนติดต่อกับผู้ใช้แบบกราฟิกส์]] ซึ่งสามารถใช้ได้หลาย[[ระบบปฏิบัติการ]]
* SciPy: รวม[[โครงสร้างข้อมูล]]และการคำนวณต่าง ๆ ที่จำเป็นต้องใช้ในการเขียนโปรแกรมคำนวณทางวิทยาศาสตร์
* py2exe: ใช้สำหรับแปลงโปรแกรมที่เขียนในภาษาไพทอนให้อยู่ในรูปแบบของ ใน[[ระบบปฏิบัติการ]][[วินโดวส์]]
* PyWin32: ใช้สำหรับติดต่อเรียกใช้บริการบนระบบปฏิบัติการ[[วินโดวส์]]และ[[คลาส]]ใน [[:en:MFC|Microsoft Foundation Classes: MFC]]
* MySQLdb: ใช้สำหรับติดต่อกับระบบฐานข้อมูล [[MySQL]]
* psycopg2: ใช้สำหรับติดต่อกับระบบฐานข้อมูล [[โพสต์เกรสคิวเอล]]
* PyGTK: GTK+ สำหรับ Python ใช้สำหรับสร้าง[[ส่วนติดต่อกับผู้ใช้แบบกราฟิกส์]] ซึ่งสามารถใช้ได้หลาย[[ระบบปฏิบัติการ]]
* PyQt: Qt สำหรับ Python ใช้สำหรับสร้าง[[ส่วนติดต่อกับผู้ใช้แบบกราฟิกส์]] ซึ่งสามารถใช้ได้หลาย[[ระบบปฏิบัติการ]]
 
== อ้างอิง ==