ลิงก์ข้ามภาษาในบทความนี้ มีไว้ให้ผู้อ่านและผู้ร่วมแก้ไขบทความศึกษาเพิ่มเติมโดยสะดวก เนื่องจากวิกิพีเดียภาษาไทยยังไม่มีบทความดังกล่าว กระนั้น ควรรีบสร้างเป็นบทความโดยเร็วที่สุด |
ไพทอน (อังกฤษ: Python) เป็นอินเทอร์พรีเตอร์ภาษาระดับสูงซึ่งสร้างโดยคีโด ฟัน โรสซึม โดยเริ่มใน พ.ศ. 2533 การออกแบบของภาษาไพทอนมุ่งเน้นให้ผู้โปรแกรมสามารถอ่านชุดคำสั่งได้โดยง่ายผ่านการใช้งานอักขระเว้นว่าง (whitespaces) จำนวนมาก นอกจากนั้นการออกแบบภาษาไพทอนและการประยุกต์ใช้แนวคิดการเขียนโปรแกรมเชิงวัตถุในตัวภาษายังช่วยให้นักเขียนโปรแกรมสามารถเขียนโปรแกรมที่เป็นระเบียบ อ่านง่าย มีขนาดเล็ก และง่ายต่อการบำรุง
กระบวนทัศน์ | หลากหลายรูปแบบ เช่นการเขียนโปรแกรมเชิงวัตถุ, หรือการเขียนโปรแกรมเชิงฟังก์ชัน |
---|---|
คีโด ฟัน โรสซึม | |
ผู้พัฒนา | มูลนิธิซอฟต์แวร์ไพทอน |
เริ่มเมื่อ | ค.ศ. 1990 |
รุ่นเสถียร | 3.12.4 / 6 มิถุนายน 2024 |
ระบบชนิดตัวแปร | , , ; (ตั้งแต่ 3.5 แต่มองข้ามใน ) |
ระบบปฏิบัติการ | ลินุกซ์, วินโดวส์, แมคโอเอส และอื่นๆ |
สัญญาอนุญาต | |
เว็บไซต์ | www |
, , , , , , Jython | |
ภาษาย่อย | |
, , | |
ได้รับอิทธิพลจาก | |
, Perl, Lisp, Smalltalk, | |
ส่งอิทธิพลต่อ | |
, , , | |
|
ไพทอนเป็นภาษาแบบไดนามิกพร้อมตัวเก็บขยะ ไพทอนรองรับกระบวนทัศน์การเขียนโปรแกรมหลายรูปแบบ ซึ่งรวมถึงแต่ไม่จำกัดเพียงการเขียนโปรแกรมตามลำดับขั้น การเขียนโปรแกรมเชิงวัตถุ หรือการเขียนโปรแกรมเชิงฟังก์ชัน นอกจากนี้ไพทอนเป็นภาษาที่มักถูกอธิบายว่าเป็นภาษาโปรแกรมแบบ "มาพร้อมถ่าน" (batteries included) กล่าวคือไพทอนมาพร้อมกับไลบรารีมาตรฐานจำนวนมาก เช่นโครงสร้างข้อมูลแบบซับซ้อน และไลบรารีสำหรับคณิตศาสตร์
ไพทอนมักถูกมองว่าเป็นภาษาที่สร้างต่อจากภาษา โดยไพทอน 2.0 ซึ่งออกเผยแพร่เมื่อ พ.ศ. 2543 มาพร้อมกับเครื่องมือสำหรับการเขียนโปรแกรมจำนวหนึ่ง อย่างเช่นตัวสร้างแถวรายการ (list comprehension)
ไพทอนรุ่น 3.0 เป็นไพทอนรุ่นที่ได้รับการปรับปรุงและแก้ไขจำนวนมาก ทว่าความเปลี่ยนแปลงไนไพทอน 3 นั้นเป็นการเปลี่ยนแปลงที่ไม่เข้ากันแบบย้อนหลัง กล่าวคือชุดคำสั่งที่เขียนสำหรับไพทอน 2 อาจไม่ทำงานตามปกติเมื่อสั่งให้ทำงานบนตัวแปลภาษาของไพทอน 3
ไพทอนรุ่น 2.0 หมดการสนับสนุนอย่างเป็นทางการใน พ.ศ. 2563 โดยการหมดการสนับสนุนนี้ถูกวางแผนตั้งแต่ พ.ศ. 2558 และไพทอนรุ่น 2.7.18 เป็นไพทอนรุ่น 2.7 และรุ่นตระกูล 2.0 ตัวสุดท้ายที่ออกเผยแพร่ โดยหลังจากนี้จะไม่มีการสนับสนุนความปลอดภัยหรือการปรับปรุงอื่นใดเพิ่มเติมสำหรับภาษาไพทอนรุ่น 2.0 อีก
อินเทอร์พรีเตอร์ของภาษาไพทอนสามารถใช้งานได้บนหลายระบบปฏิบัติการ ชุมชนนักพัฒนาโปรแกรมของไพทอนร่วมกันดูแลโครงการซีไพทอนโดยมีมูลนิธิซอฟต์แวร์ไพทอนซึ่งเป็นองค์กรไม่แสวงผลกำไร ทำหน้าที่ดูแลและจัดการทรัพยากรสำหรับการพัฒนาไพทอนและซีไพทอน
คุณสมบัติและปรัชญาการออกแบบ
ผู้ใช้ภาษาไพทอนสามารถเลือกกระบวนทัศน์การเขียนโปรแกรมตามที่ตนเองถนัดได้ โดยรองรับการเขียนโปรแกรมเชิงโครงสร้างและการเขียนโปรแกรมเชิงวัตถุอย่างเต็มรูปแบบ รวมถึงรองรับการเขียนโปรแกรมเชิงฟังก์ชัน (ทั้งในรูปแบบของการเขียนโปรแกรมเชิงลักษณะ และการเขียนโปรแกรมเชิงเมตาออบเจกต์) ส่วนขยายของไพทอนทำให้สามารถเขียนโปรแกรมด้วยกระบวนทัศน์อื่น เช่นการเขียนโปรแกรมเชิงตรรกะ
ไพทอนเก็บข้อมูลแบบไดนามิก (dynamic type) และใช้ขั้นตอนวิธีการนับการอ้างอิง (Reference counting) ประกอบรวมกับตัวเก็บขยะ (garbage collector) เพื่อจัดการหน่วยความจำ
ไพทอนมาพร้อมเครื่องมือสำหรับการเขียนโปรแกรมเชิงฟังก์ชันแบบที่พบในภาษาลิสป์ นอกจากนี้ไพทอนมีเครื่องมืออย่างเช่นฟังก์ชัน filter
map
และ reduce
, เครื่องมือการสร้างลิสต์ (list comprehension), แถวลำดับแบบจับคู่ (ในชื่อของ Dictionary), เซต และเครื่องมือสร้างการวนซ้ำ (generator)
แนวคิดและหลักการของไพทอนถูกสรุปในเอกสารชื่อว่า 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") ซึ่งตรงกันข้ามกับแนวคิดการออกแบบของภาษาเพิร์ลที่เชื่อว่า "เราควรทำอะไรได้มากกว่าหนึ่งวิธี" ("There's more than one way to do it") หากจะกล่าวให้ละเอียด อะเล็กซ์ มาร์เตลลี ผู้เขียนตำราภาษาไพทอน และสมาชิกของมูลนิธิซอฟต์แวร์ไพทอน กล่าวว่า "ในวัฒนธรรมของไพทอน การอธิบายว่า[วิธีการเขียนโปรแกรม]บางอย่างนั้นฉลาดมากไม่ถือเป็นคำชม"
นักพัฒนาโปรแกรมที่ใช้ภาษาไพทอนมักพยายามหลีกเลี่ยงการปรับปรุงประสิทธิภาพก่อนถึงเวลาอันควร (premature optimisation) และมักปฏิเสธการรวมโค้ดของโครงการ CPython ที่ต้องแลกประสิทธิภาพที่เพิ่มขึ้นมาเล็กน้อยกับความอ่านยากของโค้ด โดยเมื่อต้องเขียนชุดคำสั่งที่เวลาประมวลผลเป็นเรื่องสำคัญ นักพัฒนาโปรแกรมไพทอนจะนิยมเขียนส่วยขยายของโปรแกรมนั้นด้วยภาษา C แยกออกมา หรือใช้ PyPy ซึ่งเป็นตัวแปลภาษาแบบในเวลา (Just-in-time compiler) สำหรับภาษาไพทอน นอกจากนี้นักพัฒนายังมีตัวเลือกอื่นเช่นการใช้ไซทอนซึ่งเป็นตัวแปลรหัสคำสั่งจากภาษาไพทอนไปเป็นภาษาซี
หนึ่งในเป้าหมายสำคัญของภาษาไพทอนคือความสนุกในการใช้งาน ชื่อของภาษาโปรแกรมมิงไพทอนนั้นมาจากชื่อของกลุ่มนักแสดงตลก จากประเทศอังกฤษ ความมุ่งมั่นในการทำให้ภาษาไพทอนนั้นสนุกต่อการใช้นั้นพบเห็นได้เพิ่มเติมจากตัวอย่างของชุดคำสั่งในภาษาไพทอนบนเว็บไซต์ของโครงการไพทอนเอง ซึ่งเลือกใช้คำอย่างเช่น "spam and eggs" (เพื่อล้อกับตอนหนึ่งของรายการตลกจาก Monty Python) แทนที่จะเลือกใช้คำทั่วไปอย่าง foo และ bar ตามตัวอย่างภาษาโปรแกรมมิงอื่น
ชุมชนไพทอนมักนิยมใช้วลี "มีความเป็นไพทอน" (Pythonic) เพื่อกล่าวถึงรูปแบบของชุดคำสั่งของไพทอนที่มีความสะอาดสะอ้านและถูกเขียนขึ้นในลักษณะที่สอดคล้องกับปรัชญาการออกแบบดังกล่าว กล่าวคือมีความอ่านง่ายและแสดงถึงความรู้ในการเขียนชุดคำสั่งภาษาไพทอนได้เป็นอย่างดี ในทางตรงกันข้าม ชุดคำสั่งที่ไม่สามารถอ่านได้โดยง่าย (กล่าวคือชุดคำสั่งที่เหมือนการแปลงชุดคำสั่งจากภาษาโปรแกรมอื่นมาเป็นไพทอนแบบบรรทัดต่อบรรทัด) มักจะถูกเรียกว่าชุดคำสั่งที่ "ไม่มีความเป็นไพทอน" (Unpythonic)
ผู้ใช้ ผู้หลงใหล หรือผู้สันทัดภาษาไพทอนมักได้รับการขนานนามว่าเป็น "ไพธอนิสตา" (Pythonista)
จุดเด่นของภาษาไพทอน
ความเป็นภาษาสคริปต์
เนื่องจากไพทอนเป็นภาษาสคริปต์ ทำให้ใช้เวลาในการเขียนและคอมไพล์ไม่มาก ทำให้เหมาะกับงานด้าน (System administration) เป็นอย่างยิ่ง มีการสนับสนุนภาษาไพทอนโดยเป็นส่วนหนึ่งของระบบปฏิบัติการยูนิกซ์, ลินุกซ์ และสามารถติดตั้งให้ทำงานเป็นภาษาสคริปต์ของวินโดวส์ ผ่านระบบ Windows Script Host ได้อีกด้วย
ไวยากรณ์ที่อ่านง่าย
ไวยากรณ์ของไพทอนได้กำจัดการใช้สัญลักษณ์ที่ใช้ในการแบ่งบล็อกของโปรแกรม และใช้การย่อหน้าแทน ทำให้สามารถอ่านโปรแกรมที่เขียนได้ง่าย นอกจากนั้นยังมีการสนับสนุนการเขียน docstring ซึ่งเป็นข้อความสั้น ๆ ที่ใช้อธิบายการทำงานของฟังก์ชัน, คลาส และโมดูลอีกด้วย
ความเป็นภาษากาว
ไพทอนเป็นภาษากาว (Glue Language) ได้อย่างดีเนื่องจากสามารถเรียกใช้ภาษาโปรแกรมอื่น ๆ ได้หลายภาษา ทำให้เหมาะที่จะใช้เขียนเพื่อประสานงานโปรแกรมที่เขียนในภาษาต่างกันได้
ตัวอย่างภาษาโปรแกรมไพทอน
ตัวอย่างด้านล่างเป็นตัวอย่างสำหรับโปรแกรมซึ่งเขียนด้วยภาษาไพทอน 3 ซึ่งมีโครงสร้างทางวากยสัมพันธ์ต่างจากไพทอน 2
โปรแกรมสวัสดีชาวโลก
print('Hello, world!') #หรือ สวัดดีชาวโลก
โปรแกรมสำหรับการคำนวณเลขแฟกทอเรียลของจำนวนเต็มบวกใด ๆ
# คำสั่งในบรรทัดด้านล่างรับเข้าตัวเลข ก่อนแปลงเป็นจำนวนเต็มบวก # ชุดคำสั่ง `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)
ไพทอนในแพลตฟอร์มต่าง ๆ
ผู้เขียนโปรแกรมภาษาไพทอนสามารถเลือกใช้แพลตฟอร์ม
ซีไพทอน
(CPython) คือแพลตฟอร์มภาษาไพทอนดั้งเดิม โปรแกรมอินเทอร์พรีเตอร์ถูกเขียนโดยภาษาซี ซึ่งคอมไพล์ใช้ได้บนหลายระบบปฏิบัติการ เช่น วินโดวส์, ยูนิกซ์, ลินุกซ์ การใช้งานสามารถทำได้โดยการติดตั้งโปรแกรมอินเทอร์พรีเตอร์และที่จำเป็นต่าง ๆ
ไจธอน
ไจทอน (Jython) เป็นแพลตฟอร์มภาษาไพทอนที่ถูกพัฒนาบน เพื่อเพิ่มอำนวยความสะดวกในการใช้ความสามารถภาษาสคริปต์ของไพทอนลงในซอฟต์แวร์จาวาอื่น ๆ การใช้งานสามารถทำได้โดยการติดตั้งจาวาและเรียกไลบรารีของไจธอนซึ่งมาในรูปไบนารีเพื่อใช้งาน
ไพทอนดอตเน็ต
Python.NET เป็นการพัฒนาภาษาไพทอนให้สามารถทำงานบนดอตเน็ตเฟรมเวิร์กของไมโครซอฟท์ได้ โดยโปรแกรมที่ถูกเขียนจะถูกแปลงเป็น CLR ปัจจุบันมีโครงการที่นำภาษาไพทอนมาใช้บน .NET Framework ของไมโครซอฟท์แล้วคือโครงการ
ไลบรารีในไพทอน
การเขียนโปรแกรมในภาษาไพทอนโดยใช้ไลบรารีต่าง ๆ เป็นการลดภาระของโปรแกรมเมอร์ได้เป็นอย่างดี ทำให้โปรแกรมเมอร์ไม่ต้องเสียเวลากับการเขียนคำสั่งที่ซ้ำ ๆ เช่นการแสดงผลข้อมูลออกสู่หน้าจอ หรือการรับค่าต่าง ๆ
ไพทอนมีชุดไลบรารีมาตรฐานมาให้ตั้งแต่ติดตั้งอินเตอร์พรีเตอร์ นอกจากนั้นยังมีผู้พัฒนาจากทั่วโลกดำเนินการพัฒนาไลบรารีซึ่งช่วยอำนวยความสะดวกในด้านต่าง ๆ โดยจะเผยแพร่ในรูปแบบของแพ็คเกจต่าง ๆ ซึ่งสามารถติดตั้งเพิ่มเติมได้อีกด้วย
แพ็คเกจเพิ่มเติมที่น่าสนใจ
- wxPython: อีกทางเลือกหนึ่งสำหรับเขียนส่วนติดต่อกับผู้ใช้แบบกราฟิกส์ ซึ่งสามารถใช้ได้หลายระบบปฏิบัติการ
- SciPy: รวมโครงสร้างข้อมูลและการคำนวณต่าง ๆ ที่จำเป็นต้องใช้ในการเขียนโปรแกรมคำนวณทางวิทยาศาสตร์
- py2exe: ใช้สำหรับแปลงโปรแกรมที่เขียนในภาษาไพทอนให้อยู่ในรูปแบบของ ในระบบปฏิบัติการวินโดวส์
- PyWin32: ใช้สำหรับติดต่อเรียกใช้บริการบนระบบปฏิบัติการวินโดวส์และคลาสใน Microsoft Foundation Classes: MFC
- MySQLdb: ใช้สำหรับติดต่อกับระบบฐานข้อมูล MySQL
- psycopg2: ใช้สำหรับติดต่อกับระบบฐานข้อมูล โพสต์เกรสคิวเอล
- PyGTK: GTK+ สำหรับ Python ใช้สำหรับสร้างส่วนติดต่อกับผู้ใช้แบบกราฟิกส์ ซึ่งสามารถใช้ได้หลายระบบปฏิบัติการ
- PyQt: คิวต์ (วิจิททูลคิทสำหรับพัฒนาส่วนต่อประสานกราฟิกกับผู้ใช้ (GUI)) สำหรับ Python ใช้สำหรับสร้างส่วนติดต่อกับผู้ใช้แบบกราฟิกส์ ซึ่งสามารถใช้ได้หลายระบบปฏิบัติการ
อ้างอิง
- "Why is Python a dynamic language and also a strongly typed language - Python Wiki". wiki.python.org. จากแหล่งเดิมเมื่อ 14 March 2021. สืบค้นเมื่อ 2021-01-27.
- "PEP 483 -- The Theory of Type Hints". Python.org. จากแหล่งเดิมเมื่อ 14 June 2020. สืบค้นเมื่อ 14 June 2018.
- "Starlark Language". จากแหล่งเดิมเมื่อ 15 June 2020. สืบค้นเมื่อ 25 May 2019.
- Peterson, Benjamin (2020-04-20). "Python Insider: Python 2.7.18, the last release of Python 2". Python Insider. สืบค้นเมื่อ 2020-04-27.
- "Sunsetting Python 2". Python.org (ภาษาอังกฤษ). สืบค้นเมื่อ 2019-09-22.
- "PEP 373 -- Python 2.7 Release Schedule". Python.org (ภาษาอังกฤษ). สืบค้นเมื่อ 2019-09-22.
แหล่งข้อมูลอื่น
- เว็บหลักของไพทอน (อังกฤษ)
wikipedia, แบบไทย, วิกิพีเดีย, วิกิ หนังสือ, หนังสือ, ห้องสมุด, บทความ, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม, มือถือ, โทรศัพท์, Android, iOS, Apple, โทรศัพท์โมบิล, Samsung, iPhone, Xiomi, Xiaomi, Redmi, Honor, Oppo, Nokia, Sonya, MI, PC, พีซี, web, เว็บ, คอมพิวเตอร์
lingkkhamphasa inbthkhwamni miiwihphuxanaelaphurwmaekikhbthkhwamsuksaephimetimodysadwk enuxngcakwikiphiediyphasaithyyngimmibthkhwamdngklaw krann khwrribsrangepnbthkhwamodyerwthisud iphthxn xngkvs Python epnxinethxrphrietxrphasaradbsungsungsrangodykhiod fn orssum odyerimin ph s 2533 karxxkaebbkhxngphasaiphthxnmungennihphuopraekrmsamarthxanchudkhasngidodyngayphankarichnganxkkhraewnwang whitespaces canwnmak nxkcaknnkarxxkaebbphasaiphthxnaelakarprayuktichaenwkhidkarekhiynopraekrmechingwtthuintwphasayngchwyihnkekhiynopraekrmsamarthekhiynopraekrmthiepnraebiyb xanngay mikhnadelk aelangaytxkarbarungiphthxn Python krabwnthsnhlakhlayrupaebb echnkarekhiynopraekrmechingwtthu hruxkarekhiynopraekrmechingfngkchnkhiod fn orssumphuphthnamulnithisxftaewriphthxnerimemuxkh s 1990 1990 runesthiyr3 12 4 6 mithunayn 2024 9 wnkxn 6 mithunayn 2024 rabbchnidtwaepr tngaet 3 5 aetmxngkhamin rabbptibtikarlinuks winodws aemkhoxexs aelaxunsyyaxnuyatewbistwww wbr python wbr org Jythonphasayxy idrbxiththiphlcak Perl Lisp Smalltalk sngxiththiphltx phasaiphthxn thiwikitara iphthxnepnphasaaebbidnamikphrxmtwekbkhya iphthxnrxngrbkrabwnthsnkarekhiynopraekrmhlayrupaebb sungrwmthungaetimcakdephiyngkarekhiynopraekrmtamladbkhn karekhiynopraekrmechingwtthu hruxkarekhiynopraekrmechingfngkchn nxkcakniiphthxnepnphasathimkthukxthibaywaepnphasaopraekrmaebb maphrxmthan batteries included klawkhuxiphthxnmaphrxmkbilbrarimatrthancanwnmak echnokhrngsrangkhxmulaebbsbsxn aelailbrarisahrbkhnitsastr iphthxnmkthukmxngwaepnphasathisrangtxcakphasa odyiphthxn 2 0 sungxxkephyaephremux ph s 2543 maphrxmkbekhruxngmuxsahrbkarekhiynopraekrmcanwhnung xyangechntwsrangaethwraykar list comprehension iphthxnrun 3 0 epniphthxnrunthiidrbkarprbprungaelaaekikhcanwnmak thwakhwamepliynaeplnginiphthxn 3 nnepnkarepliynaeplngthiimekhaknaebbyxnhlng klawkhuxchudkhasngthiekhiynsahrbiphthxn 2 xacimthangantampktiemuxsngihthanganbntwaeplphasakhxngiphthxn 3 iphthxnrun 2 0 hmdkarsnbsnunxyangepnthangkarin ph s 2563 odykarhmdkarsnbsnunnithukwangaephntngaet ph s 2558 aelaiphthxnrun 2 7 18 epniphthxnrun 2 7 aelaruntrakul 2 0 twsudthaythixxkephyaephr odyhlngcaknicaimmikarsnbsnunkhwamplxdphyhruxkarprbprungxunidephimetimsahrbphasaiphthxnrun 2 0 xik xinethxrphrietxrkhxngphasaiphthxnsamarthichnganidbnhlayrabbptibtikar chumchnnkphthnaopraekrmkhxngiphthxnrwmknduaelokhrngkarsiiphthxnodymimulnithisxftaewriphthxnsungepnxngkhkrimaeswngphlkair thahnathiduaelaelacdkarthrphyakrsahrbkarphthnaiphthxnaelasiiphthxnkhunsmbtiaelaprchyakarxxkaebbphuichphasaiphthxnsamartheluxkkrabwnthsnkarekhiynopraekrmtamthitnexngthndid odyrxngrbkarekhiynopraekrmechingokhrngsrangaelakarekhiynopraekrmechingwtthuxyangetmrupaebb rwmthungrxngrbkarekhiynopraekrmechingfngkchn thnginrupaebbkhxngkarekhiynopraekrmechinglksna aelakarekhiynopraekrmechingemtaxxbeckt swnkhyaykhxngiphthxnthaihsamarthekhiynopraekrmdwykrabwnthsnxun echnkarekhiynopraekrmechingtrrka iphthxnekbkhxmulaebbidnamik dynamic type aelaichkhntxnwithikarnbkarxangxing Reference counting prakxbrwmkbtwekbkhya garbage collector ephuxcdkarhnwykhwamca iphthxnmaphrxmekhruxngmuxsahrbkarekhiynopraekrmechingfngkchnaebbthiphbinphasalisp nxkcakniiphthxnmiekhruxngmuxxyangechnfngkchn filter map aela reduce ekhruxngmuxkarsranglist list comprehension aethwladbaebbcbkhu inchuxkhxng Dictionary est aelaekhruxngmuxsrangkarwnsa generator aenwkhidaelahlkkarkhxngiphthxnthuksrupinexksarchuxwa Zen of Python sungrabuhlkkarkhxngphasaiwechn swyngamdikwanaekliyd Beautiful is better than ugly chdaecngdikwasxnern Explicit is better than implicit eriybngaydikwasbsxn Simple is better than complex sbsxndikwayungehying Complex is better than complicated txngisickarxanxxkidngay Readability counts iphthxnimidthukxxkaebbmaihmikhunsmbtiaelakhwamsamarthinkarthanganthukxyang aetiphthxnthukxxkaebbmaihsamarththuktxyxdidngay karxxkaebbinlksnanithaihtwkhxngphasaiphthxnidrbkhwamniymenuxngdwykhwamsamarthinkarephimswntxkhyayhruxchudkhunsmbtilngipinaexpphliekhchnthimixyukxnhnani karxxkaebbinlksnanimacakwisythsnkhxngfn orssumthitxngkarehnkarxxkaebbphasaopraekrmthimirabbaeknklangkhnadelk aetmaphrxmilbrarichudkhasngkhnadihy odyepahmaykarxxkaebblksnanimacakkhwamimsadwkinkarichphasa ABC thifn orssumekhyecxmakxnhnani okhrngsrangthangwakysmphnth syntax khxngphasaiphthxnmungennkhwameriybngayaelaimyungehying inkhnaediywknyngkhngihxisrakbnkphthnaopraekrminkareluxkwithikarekhiynopraekrmidexng prchyakarxxkaebbnikhxngiphthxnxyubnkhwamechuxthiwa khwrcamithangediyw aelathangediywethann inkarthaxairskxyang there should be one and preferably only one obvious way to do it sungtrngknkhamkbaenwkhidkarxxkaebbkhxngphasaephirlthiechuxwa erakhwrthaxairidmakkwahnungwithi There s more than one way to do it hakcaklawihlaexiyd xaelks maretlli phuekhiyntaraphasaiphthxn aelasmachikkhxngmulnithisxftaewriphthxn klawwa inwthnthrrmkhxngiphthxn karxthibaywa withikarekhiynopraekrm bangxyangnnchladmakimthuxepnkhachm nkphthnaopraekrmthiichphasaiphthxnmkphyayamhlikeliyngkarprbprungprasiththiphaphkxnthungewlaxnkhwr premature optimisation aelamkptiesthkarrwmokhdkhxngokhrngkar CPython thitxngaelkprasiththiphaphthiephimkhunmaelknxykbkhwamxanyakkhxngokhd odyemuxtxngekhiynchudkhasngthiewlapramwlphlepneruxngsakhy nkphthnaopraekrmiphthxncaniymekhiynswykhyaykhxngopraekrmnndwyphasa C aeykxxkma hruxich PyPy sungepntwaeplphasaaebbinewla Just in time compiler sahrbphasaiphthxn nxkcakninkphthnayngmitweluxkxunechnkarichisthxnsungepntwaeplrhskhasngcakphasaiphthxnipepnphasasi hnunginepahmaysakhykhxngphasaiphthxnkhuxkhwamsnukinkarichngan chuxkhxngphasaopraekrmmingiphthxnnnmacakchuxkhxngklumnkaesdngtlk cakpraethsxngkvs khwammungmninkarthaihphasaiphthxnnnsnuktxkarichnnphbehnidephimetimcaktwxyangkhxngchudkhasnginphasaiphthxnbnewbistkhxngokhrngkariphthxnexng sungeluxkichkhaxyangechn spam and eggs ephuxlxkbtxnhnungkhxngraykartlkcak Monty Python aethnthicaeluxkichkhathwipxyang foo aela bar tamtwxyangphasaopraekrmmingxun chumchniphthxnmkniymichwli mikhwamepniphthxn Pythonic ephuxklawthungrupaebbkhxngchudkhasngkhxngiphthxnthimikhwamsaxadsaxanaelathukekhiynkhuninlksnathisxdkhlxngkbprchyakarxxkaebbdngklaw klawkhuxmikhwamxanngayaelaaesdngthungkhwamruinkarekhiynchudkhasngphasaiphthxnidepnxyangdi inthangtrngknkham chudkhasngthiimsamarthxanidodyngay klawkhuxchudkhasngthiehmuxnkaraeplngchudkhasngcakphasaopraekrmxunmaepniphthxnaebbbrrthdtxbrrthd mkcathukeriykwachudkhasngthi immikhwamepniphthxn Unpythonic phuich phuhlngihl hruxphusnthdphasaiphthxnmkidrbkarkhnannamwaepn iphthxnista Pythonista cudednkhxngphasaiphthxnkhwamepnphasaskhript enuxngcakiphthxnepnphasaskhript thaihichewlainkarekhiynaelakhxmiphlimmak thaihehmaakbngandan System administration epnxyangying mikarsnbsnunphasaiphthxnodyepnswnhnungkhxngrabbptibtikaryuniks linuks aelasamarthtidtngihthanganepnphasaskhriptkhxngwinodws phanrabb Windows Script Host idxikdwy iwyakrnthixanngay iwyakrnkhxngiphthxnidkacdkarichsylksnthiichinkaraebngblxkkhxngopraekrm aelaichkaryxhnaaethn thaihsamarthxanopraekrmthiekhiynidngay nxkcaknnyngmikarsnbsnunkarekhiyn docstring sungepnkhxkhwamsn thiichxthibaykarthangankhxngfngkchn khlas aelaomdulxikdwy khwamepnphasakaw iphthxnepnphasakaw Glue Language idxyangdienuxngcaksamartheriykichphasaopraekrmxun idhlayphasa thaihehmaathicaichekhiynephuxprasannganopraekrmthiekhiyninphasatangknidtwxyangphasaopraekrmiphthxntwxyangdanlangepntwxyangsahrbopraekrmsungekhiyndwyphasaiphthxn 3 sungmiokhrngsrangthangwakysmphnthtangcakiphthxn 2 opraekrmswsdichawolk print Hello world hrux swddichawolk opraekrmsahrbkarkhanwnelkhaefkthxeriylkhxngcanwnetmbwkid khasnginbrrthddanlangrbekhatwelkh kxnaeplngepncanwnetmbwk chudkhasng int iniphthxncatdthsniymthingodyxtonmti n int input krunapxnkhxmulrbekhatwelkhid ephuxkhanwnkhaaefkthxeriyl haktwelkhmikhanxykwa 0 ihthakarykaesdngkhxphidphlad error raising odyihaesdngkhxphidphladaebb ValueError khunma if n lt 0 raise ValueError khuncaepntxngpxncanwnetmbwk prakaskhatngtnkhxngaefkthxeriyl fact 1 wnsasahrbkha i tngaet 2 thung n 1 for i in range 2 n 1 ethiybethakb fact fact i fact i aesdngphlkhatxb print fact iphthxninaephltfxrmtang phuekhiynopraekrmphasaiphthxnsamartheluxkichaephltfxrm siiphthxn CPython khuxaephltfxrmphasaiphthxndngedim opraekrmxinethxrphrietxrthukekhiynodyphasasi sungkhxmiphlichidbnhlayrabbptibtikar echn winodws yuniks linuks karichngansamarththaidodykartidtngopraekrmxinethxrphrietxraelathicaepntang icthxn icthxn Jython epnaephltfxrmphasaiphthxnthithukphthnabn ephuxephimxanwykhwamsadwkinkarichkhwamsamarthphasaskhriptkhxngiphthxnlnginsxftaewrcawaxun karichngansamarththaidodykartidtngcawaaelaeriykilbrarikhxngicthxnsungmainrupibnariephuxichngan iphthxndxtent Python NET epnkarphthnaphasaiphthxnihsamarththanganbndxtentefrmewirkkhxngimokhrsxfthid odyopraekrmthithukekhiyncathukaeplngepn CLR pccubnmiokhrngkarthinaphasaiphthxnmaichbn NET Framework khxngimokhrsxfthaelwkhuxokhrngkarilbrariiniphthxnkarekhiynopraekrminphasaiphthxnodyichilbraritang epnkarldpharakhxngopraekrmemxridepnxyangdi thaihopraekrmemxrimtxngesiyewlakbkarekhiynkhasngthisa echnkaraesdngphlkhxmulxxksuhnacx hruxkarrbkhatang iphthxnmichudilbrarimatrthanmaihtngaettidtngxinetxrphrietxr nxkcaknnyngmiphuphthnacakthwolkdaeninkarphthnailbrarisungchwyxanwykhwamsadwkindantang odycaephyaephrinrupaebbkhxngaephkhekctang sungsamarthtidtngephimetimidxikdwy aephkhekcephimetimthinasnic wxPython xikthangeluxkhnungsahrbekhiynswntidtxkbphuichaebbkrafiks sungsamarthichidhlayrabbptibtikar SciPy rwmokhrngsrangkhxmulaelakarkhanwntang thicaepntxngichinkarekhiynopraekrmkhanwnthangwithyasastr py2exe ichsahrbaeplngopraekrmthiekhiyninphasaiphthxnihxyuinrupaebbkhxng inrabbptibtikarwinodws PyWin32 ichsahrbtidtxeriykichbrikarbnrabbptibtikarwinodwsaelakhlasin Microsoft Foundation Classes MFC MySQLdb ichsahrbtidtxkbrabbthankhxmul MySQL psycopg2 ichsahrbtidtxkbrabbthankhxmul ophstekrskhiwexl PyGTK GTK sahrb Python ichsahrbsrangswntidtxkbphuichaebbkrafiks sungsamarthichidhlayrabbptibtikar PyQt khiwt wiciththulkhithsahrbphthnaswntxprasankrafikkbphuich GUI sahrb Python ichsahrbsrangswntidtxkbphuichaebbkrafiks sungsamarthichidhlayrabbptibtikarxangxing Why is Python a dynamic language and also a strongly typed language Python Wiki wiki python org cakaehlngedimemux 14 March 2021 subkhnemux 2021 01 27 PEP 483 The Theory of Type Hints Python org cakaehlngedimemux 14 June 2020 subkhnemux 14 June 2018 Starlark Language cakaehlngedimemux 15 June 2020 subkhnemux 25 May 2019 Peterson Benjamin 2020 04 20 Python Insider Python 2 7 18 the last release of Python 2 Python Insider subkhnemux 2020 04 27 Sunsetting Python 2 Python org phasaxngkvs subkhnemux 2019 09 22 PEP 373 Python 2 7 Release Schedule Python org phasaxngkvs subkhnemux 2019 09 22 aehlngkhxmulxunewbhlkkhxngiphthxn xngkvs