Python (ภาษาโปรแกรม)
งูหลามเป็นตีความ ระดับสูง วัตถุประสงค์ทั่วไปการเขียนโปรแกรมภาษา ปรัชญาการออกแบบของงูใหญ่เน้นการอ่านรหัสที่มีการใช้ที่โดดเด่นของการเยื้องอย่างมีนัยสำคัญ ใช้ภาษาโครงสร้างเช่นเดียวกับobject-orientedจุดมุ่งหมายวิธีการที่จะช่วยเหลือโปรแกรมเมอร์เขียนชัดเจนรหัสตรรกะสำหรับโครงการขนาดเล็กและขนาดใหญ่ [29]
![]() | |
กระบวนทัศน์ | หลายกระบวนทัศน์ : เชิงวัตถุ , [1] ขั้นตอน ( จำเป็น ), การทำงาน , มีโครงสร้าง , สะท้อนแสง |
---|---|
ออกแบบโดย | กุยโดฟานรอสซัม |
นักพัฒนา | Python Software Foundation |
ปรากฏตัวครั้งแรก | กุมภาพันธ์ 2534 [2] |
การเปิดตัวที่เสถียร | 3.9.5 [3] ![]() |
ดูตัวอย่างรุ่น | 3.10.0b1 [3] ![]() |
วินัยในการพิมพ์ | เป็ด , ไดนามิก , การพิมพ์ที่แข็งแกร่ง ; [4] ทีละน้อย (ตั้งแต่ 3.5 แต่ละเว้นในCPython ) [5] |
ระบบปฏิบัติการ | Linux , macOS , Windows 8และใหม่กว่า และอื่น ๆ |
ใบอนุญาต | สิทธิ์การใช้งาน Python Software Foundation |
นามสกุลไฟล์ | .py, .pyi, .pyc, .pyd, .pyo (ก่อนหน้า 3.5), [6] .pyw, .pyz (ตั้งแต่ 3.5) [7] |
เว็บไซต์ | www . python .org |
การใช้งานที่สำคัญ | |
CPython , PyPy , Stackless Python , MicroPython , CircuitPython , IronPython , Jython | |
ภาษาถิ่น | |
Cython , RPython , Starlark [8] | |
ได้รับอิทธิพลจาก | |
ABC , [9] Ada , [10] ALGOL 68 , [11] APL , [12] C , [13] C ++ , [14] CLU , [15] Dylan , [16] Haskell , [17] Icon , [18 ] Java , [19] Lisp , [20] Modula-3 , [14] Perl , ML มาตรฐาน[12] | |
ได้รับอิทธิพล | |
Apache Groovy , Boo , Cobra , CoffeeScript , [21] D , F # , Genie , [22] Go , JavaScript , [23] [24] Julia , [25] Nim , Ring, [26] Ruby , [27] Swift [ 28] | |
|
งูหลามเป็นแบบไดนามิกพิมพ์และขยะที่เก็บรวบรวม มันสนับสนุนหลายกระบวนทัศน์การเขียนโปรแกรมรวมทั้งโครงสร้าง (โดยเฉพาะอย่างยิ่งในการดำเนินการ ) เชิงวัตถุและโปรแกรมการทำงาน งูใหญ่มักจะถูกอธิบายว่าเป็น "แบตเตอรี่รวมถึง" ภาษาเนื่องจากการที่ครอบคลุมมาตรฐานห้องสมุด [30]
Guido van Rossumเริ่มทำงานกับ Python ในช่วงปลายทศวรรษ 1980 โดยเป็นตัวต่อจากภาษาโปรแกรม ABCและเปิดตัวครั้งแรกในปี 1991 ในชื่อ Python 0.9.0 [31] Python 2.0 ได้รับการปล่อยตัวในปี 2000 และแนะนำคุณสมบัติใหม่ ๆ เช่นcomprehensions รายการและระบบการเก็บขยะใช้นับการอ้างอิง Python 3.0 ได้รับการเผยแพร่ในปี 2008 และเป็นการแก้ไขครั้งใหญ่ของภาษาที่ไม่สามารถใช้งานร่วมกับเวอร์ชันย้อนหลังได้อย่างสมบูรณ์และโค้ด Python 2 ส่วนใหญ่จะไม่ทำงานโดยไม่ได้แก้ไขบน Python 3 Python 2 ถูกยกเลิกด้วยเวอร์ชัน 2.7.18 ในปี 2020 [32]
Python ได้รับการจัดอันดับให้เป็นหนึ่งในภาษาโปรแกรมยอดนิยมอย่างต่อเนื่อง [33] [34] [35] [36] [37]
ประวัติศาสตร์

งูหลามได้รู้สึกในช่วงปลายปี 1980 [38]โดยกุยรถตู้ซัมที่Centrum Wiskunde & Informatica (CWI) ในเนเธอร์แลนด์เป็นทายาทที่จะABC ภาษาการเขียนโปรแกรมซึ่งได้รับแรงบันดาลใจจากSETL , [39]ความสามารถในการจัดการข้อยกเว้นและการเชื่อมต่อกับระบบปฏิบัติการอะมีบา [9]การดำเนินงานเริ่มในเดือนธันวาคมปี 1989 [40] Van Rossum ไหล่รับผิดชอบ แต่เพียงผู้เดียวสำหรับโครงการที่เป็นนักพัฒนานำจนถึง 12 กรกฎาคม 2018 เมื่อเขาประกาศ "วันหยุดถาวร" ของเขาจากความรับผิดชอบของเขาเป็นงูหลามของเผด็จการใจดี For Life , ชื่อที่ชุมชน Python มอบให้กับเขาเพื่อสะท้อนถึงความมุ่งมั่นในระยะยาวของเขาในฐานะหัวหน้าผู้มีอำนาจตัดสินใจของโครงการ [41]ปัจจุบันเขาเป็นผู้นำของเขาร่วมกันในฐานะสมาชิกคนหนึ่งของสภาควบคุมห้าคน [42] [43] [44]ในเดือนมกราคม 2019 นักพัฒนาหลักของ Python ที่ใช้งานอยู่ได้เลือก Brett Cannon, Nick Coghlan, Barry Warsaw, Carol Willing และ Van Rossum ให้เป็น "Steering Council" ห้าคนเพื่อเป็นผู้นำโครงการ [45]กุยโดฟานรอสซัมได้ถอนการเสนอชื่อของเขาในปี 2020 สภาบังคับเลี้ยว [46]
งูหลาม 2.0 ได้รับการปล่อยตัวเมื่อวันที่ 16 ตุลาคม 2000 ด้วยคุณสมบัติใหม่ที่สำคัญจำนวนมากรวมทั้งวงจรการตรวจสอบการ เก็บขยะและการสนับสนุนUnicode [47]
งูหลาม 3.0 ได้รับการปล่อยตัวเมื่อวันที่ 3 เดือนธันวาคม 2008 มันเป็นแก้ไขที่สำคัญของภาษาที่ไม่สมบูรณ์ย้อนกลับกันได้ [48]คุณลักษณะที่สำคัญหลายอย่างถูกส่งกลับไปยัง Python 2.6.x [49]และซีรีส์เวอร์ชัน 2.7.x การเผยแพร่ Python 3 รวมถึง2to3
ยูทิลิตี้ซึ่งจะทำการแปลโค้ด Python 2 เป็น Python 3 โดยอัตโนมัติ (อย่างน้อยบางส่วน) [50]
วันที่สิ้นสุดอายุการใช้งานของ Python 2.7 เริ่มต้นในปี 2015 จากนั้นเลื่อนไปเป็นปี 2020 เนื่องจากกังวลว่าโค้ดที่มีอยู่จำนวนมากไม่สามารถส่งต่อไปยัง Python 3 ได้อย่างง่ายดาย[51] [52]ไม่มีแพตช์ความปลอดภัยอีกต่อไป หรือการปรับปรุงอื่น ๆ จะได้รับการเผยแพร่ [53] [54]ด้วยการสิ้นสุดอายุการใช้งานของ Python 2 รองรับเฉพาะ Python 3.6.x [55]และใหม่กว่าเท่านั้น
Python 3.9.2 และ 3.8.8 ถูกเร่ง[56]เป็นทุกรุ่นของงูใหญ่ (รวมถึง 2.7 [57] ) มีปัญหาด้านความปลอดภัยที่นำไปสู่ความเป็นไปได้โค้ดจากระยะไกล[58]และเว็บพิษแคช [59]
ปรัชญาการออกแบบและคุณสมบัติ
งูหลามเป็นภาษาโปรแกรมหลายกระบวนทัศน์ เขียนโปรแกรมเชิงวัตถุและโครงสร้างการเขียนโปรแกรมได้รับการสนับสนุนอย่างเต็มที่และอีกหลายแห่งจากคุณลักษณะของมันสนับสนุนการเขียนโปรแกรมการทำงานและการเขียนโปรแกรมเชิงลักษณะ (รวมถึงmetaprogramming [60]และmetaobjects (วิธีการมายากล)) [61]กระบวนทัศน์อื่น ๆ อีกมากมายได้รับการสนับสนุนผ่านทางส่วนขยายรวมทั้งการออกแบบโดยการทำสัญญา[62] [63]และโปรแกรมตรรกะ [64]
งูหลามใช้พิมพ์แบบไดนามิกและการรวมกันของการนับการอ้างอิงและการเก็บขยะรอบการตรวจสอบสำหรับการจัดการหน่วยความจำ [65]นอกจากนี้ยังมีคุณสมบัติการแก้ปัญหาชื่อแบบไดนามิก(การผูกภายหลัง) ซึ่งผูกเมธอดและชื่อตัวแปรระหว่างการทำงานของโปรแกรม
การออกแบบของ Python ให้การสนับสนุนบางอย่างสำหรับการเขียนโปรแกรมเชิงฟังก์ชันในประเพณีLisp มันมีfilter
, map
และreduce
ฟังก์ชั่น; comprehensions รายการ , พจนานุกรมชุดและเครื่องกำเนิดไฟฟ้าการแสดงออก [66]ห้องสมุดมาตรฐานมีสองโมดูล (itertools และ functools) ที่ใช้เครื่องมือการทำงานที่ยืมมาจากHaskellและมาตรฐาน ML [67]
ปรัชญาหลักของภาษาสรุปไว้ในเอกสารThe Zen of Python ( PEP 20 ) ซึ่งรวมถึงคำพังเพยเช่น: [68]
- สวยดีกว่าน่าเกลียด
- Explicit ดีกว่าโดยปริยาย
- ง่ายดีกว่าซับซ้อน
- ซับซ้อนดีกว่าซับซ้อน
- จำนวนความสามารถในการอ่าน
Python ได้รับการออกแบบมาให้ขยายได้สูง(พร้อมโมดูล) แทนที่จะมีฟังก์ชันทั้งหมดในตัว โมดูลาร์ขนาดกะทัดรัดนี้ทำให้เป็นที่นิยมโดยเฉพาะในฐานะวิธีการเพิ่มอินเตอร์เฟสที่ตั้งโปรแกรมได้ให้กับแอปพลิเคชันที่มีอยู่ วิสัยทัศน์ของ Van Rossum เกี่ยวกับภาษาหลักขนาดเล็กที่มีไลบรารีมาตรฐานขนาดใหญ่และตัวแปลที่ขยายได้ง่ายเกิดจากความไม่พอใจของเขากับABCซึ่งใช้แนวทางตรงกันข้าม [38]
Python มุ่งมั่นที่จะใช้ไวยากรณ์และไวยากรณ์ที่เรียบง่ายและไม่เกะกะในขณะที่ให้นักพัฒนามีทางเลือกในวิธีการเขียนโค้ด ในทางตรงกันข้ามกับPerl " มีมากกว่าหนึ่งวิธีในการทำ " คติพจน์ Python รวบรวม "ควรมีเพียงวิธีเดียวและควรมีเพียงวิธีเดียวเท่านั้นที่จะทำได้" ปรัชญาการออกแบบ [68] อเล็กซ์เทลซึ่งเป็นเพื่อนที่มูลนิธิหลามซอฟแวร์และ Python เขียนหนังสือเขียนว่า "เพื่ออธิบายสิ่งที่เป็น 'ฉลาด' จะไม่ถือว่าเป็นคำชมเชยในวัฒนธรรมหลาม." [69]
นักพัฒนาของ Python พยายามหลีกเลี่ยงการเพิ่มประสิทธิภาพก่อนเวลาอันควรและปฏิเสธแพตช์ไปยังส่วนที่ไม่สำคัญของการใช้งานอ้างอิงCPythonซึ่งจะทำให้ความเร็วเพิ่มขึ้นเล็กน้อยด้วยต้นทุนของความชัดเจน [70]เมื่อความเร็วเป็นสิ่งที่สำคัญเป็นโปรแกรมเมอร์หลามสามารถย้ายฟังก์ชั่นเวลาที่สำคัญในการขยายโมดูลที่เขียนในภาษาเช่น C หรือการใช้PyPyเป็นคอมไพเลอร์เพียงแค่ในเวลา นอกจากนี้ยังมีCythonซึ่งแปลสคริปต์ Python เป็น C และทำการเรียก API ระดับ C โดยตรงไปยังตัวแปล Python
เป้าหมายสำคัญของนักพัฒนา Python คือการทำให้มันสนุกกับการใช้งาน สิ่งนี้สะท้อนให้เห็นในชื่อภาษาซึ่งเป็นเครื่องบรรณาการให้กับกลุ่มนักแสดงตลกชาวอังกฤษMonty Python [71]และในบางครั้งก็ใช้วิธีการเล่นแบบฝึกหัดและเอกสารอ้างอิงเช่นตัวอย่างที่อ้างถึงสแปมและไข่ (จากภาพร่าง Monty Python ที่มีชื่อเสียง ) แทน ของfoo และบาร์มาตรฐาน [72] [73]
neologismทั่วไปในชุมชน Python คือpythonicซึ่งอาจมีความหมายหลากหลายที่เกี่ยวข้องกับรูปแบบโปรแกรม การบอกว่าโค้ดเป็น pythonic คือการบอกว่ามันใช้สำนวน Python ได้ดีว่ามันเป็นธรรมชาติหรือแสดงความคล่องแคล่วในภาษาซึ่งสอดคล้องกับปรัชญาที่เรียบง่ายของ Python และเน้นที่ความสามารถในการอ่าน ในทางตรงกันข้ามรหัสที่เป็นเรื่องยากที่จะเข้าใจหรืออ่านเหมือนถอดความหยาบจากการเขียนโปรแกรมภาษาอื่นเรียกว่าunpythonic [74] [75]
ผู้ใช้และชื่นชมของงูใหญ่โดยเฉพาะอย่างยิ่งผู้ที่ถือว่ามีความรู้หรือมีประสบการณ์มักจะเรียกว่าPythonistas [76] [77]
ไวยากรณ์และความหมาย
Python หมายถึงภาษาที่อ่านได้ง่าย การจัดรูปแบบจะไม่กระจัดกระจายและมักใช้คำหลักภาษาอังกฤษซึ่งภาษาอื่น ๆ ใช้เครื่องหมายวรรคตอน ไม่เหมือนกับภาษาอื่น ๆ คือไม่ใช้วงเล็บปีกกาในการคั่นบล็อกและอนุญาตให้ใช้เครื่องหมายอัฒภาคหลังคำสั่งได้ แต่มักใช้ไม่บ่อยนัก แต่ก็มีข้อยกเว้นประโยคน้อยลงและเป็นกรณีพิเศษกว่าCหรือปาสคาล [78]
เยื้อง
ใช้งูหลามช่องว่างเยื้องมากกว่าวงเล็บปีกกาหรือคำหลักเพื่อกำหนดเขตบล็อก การเพิ่มขึ้นของการเยื้องเกิดขึ้นหลังจากข้อความบางอย่าง การลดลงของการเยื้องหมายถึงการสิ้นสุดของบล็อกปัจจุบัน [79]ดังนั้นโครงสร้างภาพของโปรแกรมจึงแสดงถึงโครงสร้างทางความหมายของโปรแกรมได้อย่างถูกต้อง [2]บางครั้งคุณลักษณะนี้เรียกว่าoff-side ruleซึ่งภาษาอื่น ๆ บางภาษาใช้ร่วมกัน แต่ในภาษาส่วนใหญ่การเยื้องไม่มีความหมายใด ๆ ขนาดการเยื้องที่แนะนำคือช่องว่างสี่ช่อง [80]
คำสั่งและขั้นตอนการควบคุม
คำสั่งของ Python รวมถึง (อื่น ๆ ):
- มอบหมาย
=
คำสั่งโดยใช้เครื่องหมายเท่ากับเดียว if
คำสั่งซึ่งเงื่อนไขรันบล็อกของรหัสพร้อมด้วยelse
และelif
(การหดตัวของอื่น-ถ้ามี)for
คำสั่งซึ่ง iterates มากกว่าวัตถุ iterable จับองค์ประกอบตัวแปรท้องถิ่นสำหรับการใช้งานโดยแต่ละบล็อกที่แนบมาwhile
คำสั่งที่รันบล็อกของรหัสตราบเท่าที่มันมีสภาพที่เป็นจริงtry
คำสั่งซึ่งจะช่วยให้ข้อยกเว้นการเลี้ยงดูในการป้องกันรหัสที่แนบมาของมันจะถูกจับและจัดการโดยexcept
คำสั่ง; นอกจากนี้ยังช่วยให้มั่นใจได้ว่าโค้ดล้างข้อมูลในfinally
บล็อกจะถูกเรียกใช้เสมอไม่ว่าบล็อกจะออกจากบล็อกอย่างไรraise
คำสั่งที่ใช้ในการยกระดับข้อยกเว้นที่ระบุหรืออีกยกข้อยกเว้นจับclass
คำสั่งที่รันบล็อกของรหัสและแนบ namespace ท้องถิ่นกับระดับสำหรับใช้ในการเขียนโปรแกรมเชิงวัตถุdef
คำสั่งที่กำหนดฟังก์ชั่นหรือวิธีการwith
คำสั่งจาก Python 2.5 ได้รับการปล่อยตัวในเดือนกันยายนปี 2006 [81]ซึ่งล้อมรอบการป้องกันรหัสภายในผู้จัดการบริบท (ตัวอย่างเช่นซื้อล็อคก่อนบล็อกของรหัสที่มีการเรียกใช้และปล่อยล็อคหลังจากนั้นหรือเปิดไฟล์แล้วปิด มัน) ซึ่งอนุญาตให้มีพฤติกรรมที่เหมือนการได้มาซึ่งทรัพยากรเป็นการเริ่มต้น (RAII) และแทนที่สำนวนการลองทั่วไป / ในที่สุด [82]- breakคำสั่งออกจากวง
continue
งบข้ามย้ำนี้และยังคงมีรายการถัดไปdel
งบเอาตัวแปรซึ่งหมายถึงการอ้างอิงจากชื่อเพื่อให้มีค่าเป็นลบและพยายามที่จะใช้ตัวแปรที่จะทำให้เกิดข้อผิดพลาด คุณสามารถกำหนดตัวแปรที่ถูกลบใหม่ได้pass
คำสั่งซึ่งทำหน้าที่เป็นNOP จำเป็นต้องใช้ไวยากรณ์ในการสร้างบล็อกโค้ดว่างassert
คำสั่งที่ใช้ในระหว่างการแก้จุดบกพร่องในการตรวจสอบเพื่อหาเงื่อนไขที่ควรใช้yield
คำสั่งที่ส่งกลับค่าจากเครื่องกำเนิดไฟฟ้าฟังก์ชั่น จาก Python 2.5yield
ยังเป็นตัวดำเนินการ รูปแบบนี้จะใช้ในการดำเนินการcoroutinesreturn
คำสั่งที่ใช้ในการส่งกลับค่าจากฟังก์ชั่นimport
คำสั่งที่ใช้ในการโมดูลนำเข้าที่มีฟังก์ชั่นหรือตัวแปรสามารถนำมาใช้ในโครงการปัจจุบัน มีสามวิธีในการใช้import
:import <module name> [as <alias>]
from <module name> import *
from <module name> import <definition 1> [as <alias 1>], <definition 2> [as <alias 2>], ...
.
คำสั่งที่ได้รับมอบหมาย ( =
) ดำเนินการโดยการจับชื่อเป็นข้อมูลอ้างอิงในการแยกแบบไดนามิกจัดสรรวัตถุ ตัวแปรอาจถูกเด้งกลับไปยังวัตถุใด ๆ ในเวลาใดก็ได้ ใน Python ชื่อตัวแปรเป็นตัวอ้างอิงทั่วไปและไม่มีชนิดข้อมูลตายตัวที่เกี่ยวข้อง อย่างไรก็ตามในช่วงเวลาหนึ่งตัวแปรจะอ้างถึงออบเจ็กต์บางอย่างซึ่งจะมีประเภท สิ่งนี้เรียกว่าการพิมพ์แบบไดนามิกและเปรียบเทียบกับภาษาโปรแกรมที่พิมพ์แบบคงที่โดยที่ตัวแปรแต่ละตัวอาจมีเฉพาะค่าบางประเภทเท่านั้น
Python ไม่รองรับการเพิ่มประสิทธิภาพการโทรหางหรือการต่อเนื่องระดับเฟิร์สคลาสและตาม Guido van Rossum มันจะไม่ทำเช่นนั้น [83] [84]อย่างไรก็ตามการสนับสนุนที่ดีสำหรับcoroutineฟังก์ชันการทำงานที่เหมือนจะมีอยู่ใน 2.5 โดยการขยาย ธปั่นไฟ [85]ก่อน 2.5 กำเนิดก็ขี้เกียจ iterators ; ข้อมูลถูกส่งออกไปทางเดียวจากเครื่องกำเนิดไฟฟ้า จาก Python 2.5 เป็นไปได้ที่จะส่งข้อมูลกลับไปยังฟังก์ชันเครื่องกำเนิดไฟฟ้าและจาก Python 3.3 ข้อมูลสามารถส่งผ่านหลายระดับ [86]
นิพจน์
นิพจน์ Python บางอย่างคล้ายกับที่พบในภาษาเช่นCและJavaในขณะที่บางนิพจน์ไม่ได้:
- การบวกการลบและการคูณจะเหมือนกัน แต่พฤติกรรมของการหารแตกต่างกัน มีการแบ่งสองประเภทใน Python พวกเขามีการแบ่งชั้น (หรือแบ่งจำนวนเต็ม)
//
และจุดลอยตัว/
ส่วน [87] Python ยังใช้ตัว**
ดำเนินการสำหรับการยกกำลัง - จาก Python 3.5 ตัว
@
ดำเนินการ infix ใหม่ได้รับการแนะนำ มันมีจุดมุ่งหมายที่จะใช้โดยห้องสมุดเช่นNumPyสำหรับคูณเมทริกซ์ [88] [89] - จาก Python 3.8 ไวยากรณ์ที่
:=
เรียกว่า 'ตัวดำเนินการวอลรัส' ถูกนำมาใช้ กำหนดค่าให้กับตัวแปรเป็นส่วนหนึ่งของนิพจน์ที่ใหญ่ขึ้น [90] - ใน Python
==
เปรียบเทียบตามค่าเทียบกับ Java ซึ่งเปรียบเทียบตัวเลขตามค่า[91]และอ็อบเจ็กต์โดยการอ้างอิง [92] (การเปรียบเทียบค่าใน Java บนวัตถุสามารถทำได้ด้วยequals()
วิธีการนี้)is
ตัวดำเนินการของ Python อาจใช้เพื่อเปรียบเทียบข้อมูลประจำตัวของวัตถุ (การเปรียบเทียบโดยการอ้างอิง) ในหลามเปรียบเทียบอาจจะถูกล่ามโซ่ยกตัวอย่างเช่นa <= b <= c
- งูหลามใช้คำ
and
,or
,not
สำหรับผู้ประกอบการบูลีนมากกว่าสัญลักษณ์&&
,||
,!
ใช้ใน Java และ C - งูหลามมีประเภทการแสดงออกเรียกว่าเข้าใจรายการเช่นเดียวกับการแสดงออกทั่วไปมากขึ้นเรียกว่ากำเนิดแสดงออก [66]
- ฟังก์ชั่นที่ไม่ระบุชื่อจะดำเนินการโดยใช้การแสดงออกแลมบ์ดา ; อย่างไรก็ตามสิ่งเหล่านี้มีข้อ จำกัด ในการที่ร่างกายสามารถแสดงออกได้เพียงอย่างเดียว
- นิพจน์เงื่อนไขใน Python เขียนเป็น[93] (แตกต่างกันตามลำดับของตัวถูกดำเนินการจากตัวดำเนินการทั่วไปกับภาษาอื่น ๆ )
x if c else y
c ? x : y
- งูหลามทำให้ความแตกต่างระหว่างรายการและtuples รายการถูกเขียนเป็นไม่แน่นอนและไม่สามารถใช้เป็นคีย์ของพจนานุกรมได้ (คีย์พจนานุกรมต้องไม่เปลี่ยนรูปใน Python) ทูเปิลเขียนเป็นไม่เปลี่ยนรูปและสามารถใช้เป็นคีย์ของพจนานุกรมได้หากองค์ประกอบทั้งหมดของทูเปิลไม่เปลี่ยนรูป ตัวดำเนินการสามารถใช้เพื่อเชื่อมสองทูเปิลเข้าด้วยกันซึ่งไม่ได้ปรับเปลี่ยนเนื้อหาโดยตรง แต่สร้างทูเพิลใหม่ที่มีองค์ประกอบของทูเปิลทั้งสองที่ให้มา ดังนั้นเมื่อกำหนดให้ตัวแปรเริ่มต้นเท่ากับการเรียกใช้การประเมินครั้งแรกซึ่งให้ผลตอบแทนซึ่งได้รับมอบหมายกลับไปดังนั้นจึง "ปรับเปลี่ยนเนื้อหา" ของได้อย่างมีประสิทธิภาพในขณะที่สอดคล้องกับลักษณะที่ไม่เปลี่ยนรูปของวัตถุทูเปิล วงเล็บเป็นทางเลือกสำหรับทูเปิลในบริบทที่ไม่คลุมเครือ [94]
[1, 2, 3]
(1, 2, 3)
+
t
(1, 2, 3)
t = t + (4, 5)
t + (4, 5)
(1, 2, 3, 4, 5)
t
t
- Python มีลำดับการคลายแพ็กซึ่งในหลาย ๆ นิพจน์แต่ละรายการจะประเมินเป็นสิ่งที่สามารถกำหนดให้กับ (ตัวแปรคุณสมบัติที่เขียนได้ ฯลฯ ) มีความเกี่ยวข้องในลักษณะเดียวกันกับการสร้างตัวอักษรทูเพิลและโดยรวมจะถูกวางไว้บน ด้านซ้ายมือของเครื่องหมายเท่ากับในคำสั่งมอบหมาย คำสั่งคาดว่าออบเจ็กต์ที่ทำซ้ำได้ทางด้านขวามือของเครื่องหมายเท่ากับซึ่งจะสร้างค่าจำนวนเดียวกันกับนิพจน์ที่เขียนได้ที่ระบุไว้เมื่อวนซ้ำและจะวนซ้ำผ่านโดยกำหนดค่าที่สร้างขึ้นแต่ละค่าให้กับนิพจน์ที่เกี่ยวข้องทางด้านซ้าย . [95]
%
งูหลามมีผู้ประกอบการ "รูปแบบสตริง" ฟังก์ชั่นนี้ analogously เพื่อprintf
จัดรูปแบบสตริงในCเช่นประเมิน ในหลาม 3 และ 2.6+ นี้ได้รับการเสริมด้วยวิธีการเรียนเช่น งูหลาม 3.6 เพิ่ม "F-สตริง": [96]"spam=%s eggs=%d" % ("blah", 2)
"spam=blah eggs=2"
format()
str
"spam={0} eggs={1}".format("blah", 2)
blah = "blah"; eggs = 2; f'spam={blah} eggs={eggs}'
- สตริงใน Python สามารถเชื่อมต่อกันได้โดย "เพิ่ม" (ตัวดำเนินการเดียวกับการเพิ่มจำนวนเต็มและการลอยตัว) เช่นผลตอบแทน แม้ว่าสตริงของคุณจะมีตัวเลข แต่ก็ยังคงเพิ่มเป็นสตริงแทนที่จะเป็นจำนวนเต็ม เช่นผลตอบแทน
"spam" + "eggs"
"spameggs"
"2" + "2"
"22"
- Python มีตัวอักษรสตริงหลายประเภท:
- สตริงที่คั่นด้วยเครื่องหมายอัญประกาศเดี่ยวหรือคู่ ซึ่งแตกต่างจากในเปลือกหอย Unix , Perlและภาษา Perl อิทธิพลเครื่องหมายคำพูดเดียวและเครื่องหมายอัญประกาศทำงานเหมือนกัน ทั้งสองประเภทของสตริงใช้เครื่องหมาย (
\
) เป็นตัวหนี การแก้ไขสตริงพร้อมใช้งานใน Python 3.6 เป็น "ตัวอักษรสตริงที่จัดรูปแบบ" [96] - สตริงที่ยกมาสามบรรทัดซึ่งเริ่มต้นและลงท้ายด้วยเครื่องหมายอัญประกาศเดี่ยวหรือเครื่องหมายคำพูดคู่สามชุด พวกเขาอาจมีระยะเวลานานหลายบรรทัดและฟังก์ชั่นเช่นเอกสารที่นี่ในเปลือกหอย Perl และทับทิม
- พันธุ์สตริงดิบแสดงโดยนำหน้าสตริงลิเทอรัลด้วย
r
. ไม่ตีความลำดับการหลบหนี ด้วยเหตุนี้สตริงดิบจึงมีประโยชน์โดยที่แบ็กสแลชตามตัวอักษรเป็นเรื่องปกติเช่นนิพจน์ทั่วไปและพา ธสไตล์ของWindows เปรียบเทียบ "@
-quoting" ในC #
- สตริงที่คั่นด้วยเครื่องหมายอัญประกาศเดี่ยวหรือคู่ ซึ่งแตกต่างจากในเปลือกหอย Unix , Perlและภาษา Perl อิทธิพลเครื่องหมายคำพูดเดียวและเครื่องหมายอัญประกาศทำงานเหมือนกัน ทั้งสองประเภทของสตริงใช้เครื่องหมาย (
- งูหลามมีดัชนีอาร์เรย์และหั่นอาร์เรย์แสดงออกในรายการแสดงเป็น
a[key]
, หรือ ดัชนีเป็นศูนย์และดัชนีเชิงลบจะสัมพันธ์กับจุดสิ้นสุด Slices ใช้องค์ประกอบจากดัชนีเริ่มต้นจนถึงดัชนีหยุดแต่ไม่รวมถึงดัชนีหยุด พารามิเตอร์ slice ที่สามเรียกว่าstepหรือstrideช่วยให้สามารถข้ามและย้อนกลับองค์ประกอบได้ อาจละเว้นดัชนี Slice ตัวอย่างเช่นส่งคืนสำเนาของรายการทั้งหมด แต่ละองค์ประกอบของชิ้นเป็นสำเนาตื้นๆa[start:stop]
a[start:stop:step]
a[:]
ในหลามความแตกต่างระหว่างการแสดงออกและงบจะถูกบังคับใช้อย่างเหนียวแน่นในทางตรงกันข้ามกับภาษาเช่นสามัญชัด , โครงการหรือทับทิม สิ่งนี้นำไปสู่การทำซ้ำฟังก์ชันการทำงานบางอย่าง ตัวอย่างเช่น:
- แสดงรายการความเข้าใจเทียบกับ
for
-loops - นิพจน์เงื่อนไขเทียบกับ
if
บล็อก eval()
กับexec()
ฟังก์ชั่น (ในหลาม 2exec
คือคำสั่ง); อดีตมีไว้สำหรับการแสดงออกส่วนหลังใช้สำหรับคำแถลง
คำสั่งไม่สามารถเป็นส่วนหนึ่งของนิพจน์ดังนั้นรายการและความเข้าใจอื่น ๆ หรือนิพจน์แลมบ์ดาซึ่งเป็นนิพจน์ทั้งหมดไม่สามารถมีคำสั่งได้ กรณีเฉพาะของกรณีนี้คือคำสั่งมอบหมายเช่นไม่สามารถเป็นส่วนหนึ่งของนิพจน์เงื่อนไขของคำสั่งเงื่อนไข สิ่งนี้มีข้อดีในการหลีกเลี่ยงข้อผิดพลาด C แบบคลาสสิกจากการเข้าใจผิดตัวดำเนินการกำหนดสำหรับตัวดำเนินการความเท่าเทียมกันในเงื่อนไข: เป็นรหัส C ที่ถูกต้อง (แต่อาจไม่ได้ตั้งใจ) แต่ทำให้เกิดข้อผิดพลาดทางไวยากรณ์ใน Pythona = 1
=
==
if (c = 1) { ... }
if c = 1: ...
วิธีการ
เมธอดบนวัตถุคือฟังก์ชันที่แนบมากับคลาสของอ็อบเจ็กต์ ไวยากรณ์คือสำหรับวิธีการปกติและฟังก์ชั่น, น้ำตาลประโยคสำหรับ เมธอด Python มีพารามิเตอร์ที่ชัดเจนในการเข้าถึงข้อมูลอินสแตนซ์ตรงกันข้ามกับนัย(หรือ) ในภาษาโปรแกรมเชิงวัตถุอื่น ๆ (เช่นC ++ , Java , Objective-CหรือRuby ) [97]instance.method(argument)
Class.method(instance, argument)
self
self
this
กำลังพิมพ์

Python ใช้การพิมพ์แบบเป็ดและพิมพ์อ็อบเจ็กต์ แต่ไม่ได้พิมพ์ชื่อตัวแปร จำกัด ประเภทจะไม่ตรวจสอบที่รวบรวมเวลา ; แต่การดำเนินการกับวัตถุอาจล้มเหลวแสดงว่าวัตถุที่กำหนดไม่ใช่ประเภทที่เหมาะสม แม้จะมีการพิมพ์แบบไดนามิกแต่ Python ก็ถูกพิมพ์อย่างรุนแรงโดยห้ามไม่ให้ดำเนินการที่ไม่ได้กำหนดไว้อย่างชัดเจน (เช่นการเพิ่มตัวเลขลงในสตริง) แทนที่จะพยายามทำความเข้าใจกับสิ่งเหล่านี้อย่างเงียบ ๆ
งูหลามช่วยให้โปรแกรมเมอร์เพื่อกำหนดประเภทของตัวเองโดยใช้การเรียนซึ่งส่วนใหญ่มักจะใช้สำหรับการเขียนโปรแกรมเชิงวัตถุ ใหม่กรณีของการเรียนถูกสร้างขึ้นโดยการเรียกชั้น (ตัวอย่างเช่นหรือ) และชั้นเรียนที่มีอินสแตนซ์ของmetaclass (ตัวเองเป็นตัวอย่างของตัวเอง) ที่ช่วยให้metaprogrammingและสะท้อนให้เห็นถึงSpamClass()
EggsClass()
type
ก่อนที่รุ่น 3.0, Python มีสองชนิดของการเรียน: แบบเก่าและแบบใหม่ [98]ไวยากรณ์ของทั้งสองสไตล์เหมือนกันความแตกต่างคือว่าคลาสobject
นั้นสืบทอดมาจากทางตรงหรือทางอ้อม (คลาสสไตล์ใหม่ทั้งหมดจะสืบทอดมาจากobject
และเป็นอินสแตนซ์ของtype
) ใน Python 2 เวอร์ชันตั้งแต่ Python 2.2 เป็นต้นไปสามารถใช้คลาสทั้งสองประเภทได้ คลาสแบบเก่าถูกกำจัดใน Python 3.0
แผนระยะยาวคือการสนับสนุนอย่างค่อยเป็นค่อยไปพิมพ์[99]และจากงูหลาม 3.5 ไวยากรณ์ของภาษาช่วยให้ระบุประเภทคงที่ แต่พวกเขาจะไม่ได้ตรวจสอบในการดำเนินการเริ่มต้นCPython ตัวตรวจสอบประเภทคงที่ซึ่งเป็นทางเลือกสำหรับการทดลองชื่อmypyสนับสนุนการตรวจสอบประเภทเวลาคอมไพล์ [100]
ประเภท | ความไม่แน่นอน | คำอธิบาย | ตัวอย่างไวยากรณ์ |
---|---|---|---|
bool | ไม่เปลี่ยนรูป | ค่าบูลีน | True False |
bytearray | ไม่แน่นอน | ลำดับของไบต์ | bytearray(b'Some ASCII') bytearray(b"Some ASCII") bytearray([119, 105, 107, 105]) |
bytes | ไม่เปลี่ยนรูป | ลำดับของไบต์ | b'Some ASCII' b"Some ASCII" bytes([119, 105, 107, 105]) |
complex | ไม่เปลี่ยนรูป | จำนวนเชิงซ้อนที่มีส่วนจริงและส่วนจินตภาพ | 3+2.7j 3 + 2.7j |
dict | ไม่แน่นอน | อาร์เรย์เชื่อมโยง (หรือพจนานุกรม) ของคู่คีย์และค่า สามารถมีประเภทผสมกัน (คีย์และค่า) คีย์ต้องเป็นประเภทที่แฮชได้ | {'key1': 1.0, 3: False} {} |
ellipsis ก | ไม่เปลี่ยนรูป | จุดไข่ปลาตัวยึดที่จะใช้เป็นดัชนีในNumPyอาร์เรย์ | ... Ellipsis |
float | ไม่เปลี่ยนรูป | เลขทศนิยมที่มีความแม่นยำสองเท่า ความแม่นยำขึ้นอยู่กับเครื่อง แต่ในทางปฏิบัติโดยทั่วไปจะใช้เป็นหมายเลขIEEE 754 64 บิตที่มีความแม่นยำ 53 บิต [101] |
|
frozenset | ไม่เปลี่ยนรูป | ชุดที่ไม่เรียงลำดับไม่มีรายการที่ซ้ำกัน สามารถมีประเภทคละกันได้หากล้างทำความสะอาดได้ | frozenset([4.0, 'string', True]) |
int | ไม่เปลี่ยนรูป | จำนวนเต็มขนาดไม่ จำกัด[102] | 42 |
list | ไม่แน่นอน | รายการสามารถมีประเภทคละกัน | [4.0, 'string', True] [] |
NoneType ก | ไม่เปลี่ยนรูป | อ็อบเจ็กต์ที่แสดงถึงการไม่มีค่าซึ่งมักเรียกว่าnullในภาษาอื่น | None |
NotImplementedType ก | ไม่เปลี่ยนรูป | ตัวยึดตำแหน่งที่สามารถส่งคืนจากตัวดำเนินการที่โอเวอร์โหลดเพื่อระบุชนิดตัวถูกดำเนินการที่ไม่รองรับ | NotImplemented |
range | ไม่เปลี่ยนรูป | ลำดับของตัวเลขที่ใช้กันทั่วไปสำหรับการวนซ้ำจำนวนครั้งที่ระบุในfor ลูป[103] | range(1, 10) range(10, -5, -2) |
set | ไม่แน่นอน | ชุดที่ไม่เรียงลำดับไม่มีรายการที่ซ้ำกัน สามารถมีประเภทคละกันได้หากล้างทำความสะอาดได้ | {4.0, 'string', True} set() |
str | ไม่เปลี่ยนรูป | ตัวอักษร : ลำดับของ codepoints Unicode | 'Wikipedia' "Wikipedia" "" "ครอบคลุมหลายบรรทัด" "" |
tuple | ไม่เปลี่ยนรูป | สามารถมีประเภทคละกัน | (4.0, 'string', True) ('single element',) () |
^ aไม่สามารถเข้าถึงได้โดยตรงจากชื่อ
การดำเนินการทางคณิตศาสตร์
งูหลามมีสัญลักษณ์ปกติสำหรับผู้ประกอบการทางคณิตศาสตร์ ( +
, -
, *
, /
) ผู้ประกอบการส่วนพื้น//
และมอดุโล %
(ที่เหลือสามารถลบเช่น4 % -3 == -2
) นอกจากนี้ยังมี**
สำหรับการยกกำลังเช่น5**3 == 125
และและเมทริกซ์ผู้ประกอบการคูณ9**0.5 == 3.0
[104]ตัวดำเนินการเหล่านี้ทำงานเหมือนคณิตศาสตร์แบบดั้งเดิม แบบเดียวกับที่กฎความสำคัญผู้ประกอบการมัด ( และยังสามารถเป็นเอกเพื่อแสดงตัวเลขบวกและลบตามลำดับ)@
+
-
การหารระหว่างจำนวนเต็มทำให้เกิดผลลัพธ์ทศนิยม พฤติกรรมของการแบ่งมีการเปลี่ยนแปลงอย่างมีนัยสำคัญเมื่อเวลาผ่านไป: [105]
- Python 2.1 และก่อนหน้านี้ใช้พฤติกรรมการแบ่งของ C ตัว
/
ดำเนินการคือการหารจำนวนเต็มถ้าตัวถูกดำเนินการทั้งสองเป็นจำนวนเต็มและการหารทศนิยมเป็นอย่างอื่น จำนวนเต็มส่วนรอบต่อ 0 กรัมและ7/3 == 2
-7/3 == -2
- Python 2.2 เปลี่ยนการหารจำนวนเต็มเพื่อปัดเศษไปยังอินฟินิตี้เชิงลบเช่น
7/3 == 2
และ-7/3 == -3
. มี//
การแนะนำตัวดำเนินการแบ่งชั้น ดังนั้น7//3 == 2
,-7//3 == -3
, และ7.5//3 == 2.0
-7.5//3 == -3.0
การเพิ่มทำให้โมดูลใช้กฎ Python 3.0 สำหรับการแบ่ง (ดูถัดไป)from __future__ import division
- งูหลาม 3.0 การเปลี่ยนแปลงไปสู่การแบ่งเสมอจุดลอยตัวเช่น
/
5/2 == 2.5
ในแง่ของ Python /
คือการหารจริง (หรือเพียงแค่การหาร ) และ//
คือการแบ่งชั้น /
ก่อนที่รุ่น 3.0 เป็นส่วนคลาสสิก [105]
การปัดเศษเป็นค่าอนันต์เชิงลบแม้ว่าจะแตกต่างจากภาษาส่วนใหญ่ แต่จะเพิ่มความสอดคล้องกัน ตัวอย่างเช่นหมายความว่าสมการเป็นจริงเสมอ ก็หมายความว่าสมการที่ถูกต้องสำหรับทั้งบวกและลบค่านิยมของ อย่างไรก็ตามการรักษาความถูกต้องของสมการนี้หมายความว่าในขณะที่ผลลัพธ์ของเป็นไปตามที่คาดไว้ในช่วงครึ่งเปิด [0, b ) โดยที่จำนวนเต็มบวกคือจำนวนเต็มบวกจะต้องอยู่ในช่วงเวลา ( b , 0] เมื่อเป็นลบ[106](a + b)//b == a//b + 1
b*(a//b) + a%b == a
a
a%b
b
b
Python มีround
ฟังก์ชันสำหรับปัดเศษ float เป็นจำนวนเต็มที่ใกล้ที่สุด สำหรับผูกทำลาย , Python 3 ใช้รอบที่จะได้ : round(1.5)
และทั้งการผลิตround(2.5)
[107]รุ่นก่อน 3 ใช้รอบห่างจากศูนย์ : เป็น, คือ [108]2
round(0.5)
1.0
round(-0.5)
−1.0
Python อนุญาตให้มีนิพจน์บูลีนที่มีความสัมพันธ์ความเท่าเทียมกันหลายแบบในลักษณะที่สอดคล้องกับการใช้งานทั่วไปในคณิตศาสตร์ ตัวอย่างเช่นนิพจน์a < b < c
จะทดสอบว่าa
น้อยกว่าb
และb
น้อยกว่าc
หรือไม่ [109]ภาษา C-มาตีความสำนวนนี้แตกต่างกัน: ใน C แสดงออกคนแรกที่จะประเมินa < b
ผลใน 0 หรือ 1 c
และผลที่ว่านั้นก็จะนำมาเปรียบเทียบกับ [110]
Python ใช้เลขคณิตที่มีความแม่นยำโดยพลการสำหรับการดำเนินการจำนวนเต็มทั้งหมด Decimal
พิมพ์ / ชั้นในdecimal
โมดูลให้ทศนิยมจำนวนจุดลอยตัวเพื่อความแม่นยำโดยพลการที่กำหนดไว้ล่วงหน้าและโหมดการปัดเศษหลาย [111]Fraction
ชั้นในfractions
โมดูลให้ความแม่นยำโดยพลการสำหรับการสรุปตัวเลข [112]
เนื่องจากไลบรารีคณิตศาสตร์ที่กว้างขวางของ Python และNumPyไลบรารีของบุคคลที่สามที่ขยายขีดความสามารถดั้งเดิมมากขึ้นจึงมักใช้เป็นภาษาสคริปต์ทางวิทยาศาสตร์เพื่อช่วยในปัญหาต่างๆเช่นการประมวลผลข้อมูลตัวเลขและการจัดการ [113] [114]
ตัวอย่างการเขียนโปรแกรม
โปรแกรมHello world :
พิมพ์( 'สวัสดีชาวโลก - -' )
โปรแกรมคำนวณแฟกทอเรียลของจำนวนเต็มบวก:
n = int ( อินพุต( 'พิมพ์ตัวเลขและแฟกทอเรียลจะถูกพิมพ์:' ))ถ้า n < 0 : เพิ่ม ValueError ( 'คุณต้องป้อนจำนวนเต็มที่ไม่เป็นลบ' )แฟกทอเรียล = 1 สำหรับ ฉัน ใน ช่วง( 2 , n + 1 ): แฟกทอเรียล * = iพิมพ์( แฟกทอเรียล)
ห้องสมุด
ไลบรารีมาตรฐานขนาดใหญ่ของ Python ซึ่งมักอ้างว่าเป็นจุดแข็งที่ยิ่งใหญ่ที่สุดแห่งหนึ่ง[115]มีเครื่องมือที่เหมาะกับงานหลายอย่าง สำหรับการใช้งานอินเทอร์เน็ตหันหน้าไปทางรูปแบบหลายมาตรฐานและโปรโตคอลเช่นMIMEและHTTPได้รับการสนับสนุน จะรวมถึงโมดูลสำหรับการสร้างอินเตอร์เฟซผู้ใช้แบบกราฟิก , การเชื่อมต่อกับฐานข้อมูลเชิงสัมพันธ์ , การสร้างตัวเลข pseudorandomคณิตศาสตร์กับทศนิยมพลแม่นยำ[116]การจัดการกับการแสดงออกปกติและการทดสอบหน่วย
บางส่วนของไลบรารีมาตรฐานครอบคลุมตามข้อกำหนด (ตัวอย่างเช่นการใช้งานWeb Server Gateway Interface (WSGI) เป็นwsgiref
ไปตาม PEP 333 [117] ) แต่โมดูลส่วนใหญ่ไม่ใช่ พวกเขาจะถูกระบุโดยรหัสของพวกเขาเอกสารภายในและห้องทดสอบ อย่างไรก็ตามเนื่องจากไลบรารีมาตรฐานส่วนใหญ่เป็นโค้ด Python ข้ามแพลตฟอร์มจึงมีเพียงไม่กี่โมดูลเท่านั้นที่ต้องมีการแก้ไขหรือเขียนใหม่สำหรับการใช้งานตัวแปร
ณ เดือนมีนาคม 2564[อัปเดต]หลามแพ็คเกจดัชนี (PyPI), พื้นที่เก็บข้อมูลอย่างเป็นทางการสำหรับบุคคลที่สามซอฟแวร์ ธ ที่มีมากกว่า 290,000 [118]แพคเกจที่มีความหลากหลายของการทำงานรวมไปถึง:
- ระบบอัตโนมัติ
- การวิเคราะห์ข้อมูล
- ฐานข้อมูล
- เอกสารประกอบ
- ส่วนต่อประสานผู้ใช้แบบกราฟิก
- การประมวลผลภาพ
- การเรียนรู้ของเครื่อง
- แอพมือถือ
- มัลติมีเดีย
- เครือข่ายคอมพิวเตอร์
- การคำนวณทางวิทยาศาสตร์
- การดูแลระบบ
- กรอบการทดสอบ
- การประมวลผลข้อความ
- เฟรมเวิร์กของเว็บ
- การขูดเว็บ
สภาพแวดล้อมการพัฒนา
การใช้งาน Python ส่วนใหญ่ (รวมถึง CPython) รวมถึงการวนรอบการพิมพ์ (REPL) ซึ่งอนุญาตให้ทำหน้าที่เป็นตัวแปลบรรทัดคำสั่งซึ่งผู้ใช้ป้อนคำสั่งตามลำดับและรับผลลัพธ์ทันที
เปลือกหอยอื่น ๆ รวมทั้งIDLEและIPythonเพิ่มความสามารถในการต่อไปเช่นการปรับปรุงอัตโนมัติเสร็จ, การเก็บสถานะเซสชันและเน้นไวยากรณ์
เช่นเดียวกับสภาพแวดล้อมการพัฒนาแบบรวมเดสก์ท็อปมาตรฐานยังมีIDE ที่ใช้เว็บเบราว์เซอร์ SageMath (มีไว้สำหรับการพัฒนาโปรแกรม Python ทางวิทยาศาสตร์และคณิตศาสตร์); PythonAnywhereซึ่งเป็น IDE บนเบราว์เซอร์และสภาพแวดล้อมการโฮสต์ และหลังคา IDE พาณิชย์หลาม IDE เน้นการคำนวณทางวิทยาศาสตร์ [119]
การนำไปใช้งาน
การใช้งานอ้างอิง
CPythonคือการนำไปใช้อ้างอิงของ Python มันเขียนด้วยภาษา Cซึ่งตรงตามมาตรฐานC89พร้อมคุณสมบัติC99 ที่เลือกได้หลายอย่าง (หากมี C เวอร์ชันที่ใหม่กว่าถือว่าล้าสมัย[120] [121] CPython มีส่วนขยาย C ของตัวเอง แต่ส่วนขยายของบุคคลที่สามไม่ จำกัด เฉพาะ C รุ่นเก่า เวอร์ชันต่างๆเช่นสามารถใช้กับC11หรือC ++ [122] ) [123]มันรวบรวมโปรแกรม Python เป็นสื่อกลางbytecode [124]ซึ่งจะถูกดำเนินการแล้วโดยของเครื่องเสมือน [125] CPython แจกจ่ายด้วยไลบรารีมาตรฐานขนาดใหญ่ที่เขียนด้วยส่วนผสมของ C และ Python ดั้งเดิม มันสามารถใช้ได้สำหรับแพลตฟอร์มจำนวนมากรวมทั้งของ Windows (เริ่มต้นด้วยงูหลาม 3.9 ติดตั้งหลามจงใจล้มเหลวในการติดตั้งบนWindows 7และ 8; [126] [127] Windows XPได้รับการสนับสนุนจน Python 3.5) และทันสมัยที่สุดUnix เหมือนระบบ รวมทั้ง MacOS (และแอปเปิ้ล M1แม็คตั้งแต่ Python 3.9.1, กับการติดตั้งการทดลอง) และการสนับสนุนอย่างไม่เป็นทางการสำหรับเช่นVMS [128] ความสามารถในการพกพาแพลตฟอร์มเป็นหนึ่งในสิ่งที่สำคัญที่สุด[129]ในช่วงกรอบเวลา Python 1 และ 2 แม้กระทั่งOS / 2และSolarisก็ได้รับการสนับสนุน; การสนับสนุน[130]ถูกยกเลิกไปแล้วในหลายแพลตฟอร์ม
การใช้งานอื่น ๆ
- PyPyเป็นล่ามที่รวดเร็วและสอดคล้องกับ Python 2.7 และ 3.6 [131]ใช้คอมไพเลอร์เพียงในเวลานำการปรับปรุงที่สำคัญกว่าความเร็ว CPython แต่ห้องสมุดหลายเขียนใน C ไม่สามารถใช้กับมัน [132]
- Stackless Pythonเป็นทางแยกที่สำคัญของการดำเนินการที่ CPython microthreads ; มันไม่ได้ใช้call stackในลักษณะเดียวกันจึงทำให้สามารถใช้งานโปรแกรมพร้อมกันได้อย่างหนาแน่น PyPy ยังมีเวอร์ชันแบบไม่ซ้อนกัน [133]
- MicroPythonและCircuitPythonงูหลาม 3 สายพันธุ์ที่เหมาะสำหรับไมโครคอนโทรลเลอร์รวมทั้งเลโก้ Mindstorms EV3 [134]
- Pyston เป็นรูปแบบหนึ่งของรันไทม์ Python ที่ใช้การคอมไพล์แบบทันเวลาเพื่อเร่งการทำงานของโปรแกรม Python [135]
- Cinder เป็นทางแยกที่มุ่งเน้นประสิทธิภาพของ CPython 3.8 ซึ่งมีการเพิ่มประสิทธิภาพจำนวนมากรวมถึงการแคชแบบอินไลน์ของ bytecode การประเมินโครูทีนอย่างกระตือรือร้นJITวิธีการในแต่ละครั้งและคอมไพเลอร์ bytecode ที่ทดลอง [136]
การใช้งานที่ไม่รองรับ
คอมไพเลอร์ Python แบบทันเวลาอื่น ๆ ได้รับการพัฒนา แต่ตอนนี้ไม่รองรับ:
- Google เริ่มโครงการชื่อUnladen Swallowในปี 2009 โดยมีจุดประสงค์เพื่อเร่งความเร็วล่าม Python ให้เร็วขึ้นห้าเท่าโดยใช้LLVMและปรับปรุงความสามารถในการอ่านแบบมัลติเธรดเพื่อขยายขนาดเป็นหลายพันคอร์[137]ในขณะที่การใช้งานทั่วไปประสบปัญหาล่ามแปลภาษาทั่วโลก .
- Psycoเป็นคอมไพเลอร์เฉพาะทางที่ถูกยกเลิกในเวลาเดียว (ซึ่งไม่รองรับ Python 2.7 หรือใหม่กว่า) ที่ทำงานร่วมกับ CPython และแปลง bytecode เป็นรหัสเครื่องในขณะรันไทม์ โค้ดที่ปล่อยออกมาเป็นรหัสเฉพาะสำหรับข้อมูลบางประเภทและเร็วกว่ารหัส Python มาตรฐาน
- PyS60เป็นล่าม Python 2 สำหรับโทรศัพท์มือถือSeries 60 ที่Nokia วางจำหน่ายในปี 2548 โดยใช้โมดูลจำนวนมากจากไลบรารีมาตรฐานและโมดูลเพิ่มเติมบางส่วนสำหรับการทำงานร่วมกับระบบปฏิบัติการSymbian Nokia N900ยังรองรับ Python พร้อมด้วยไลบรารีวิดเจ็ตGTKซึ่งช่วยให้สามารถเขียนและรันโปรแกรมบนอุปกรณ์เป้าหมายได้ [138]
ข้ามคอมไพเลอร์เป็นภาษาอื่น
มีคอมไพเลอร์หลายตัวสำหรับภาษาอ็อบเจ็กต์ระดับสูงโดยมี Python ที่ไม่ถูก จำกัด ชุดย่อยที่ จำกัด ของ Python หรือภาษาที่คล้ายกับ Python เป็นภาษาต้นทาง:
- Cythonคอมไพล์ (superset of) Python 2.7 ถึงC (ในขณะที่โค้ดผลลัพธ์สามารถใช้ได้กับ Python 3 และเช่นC ++ )
- Nuitkaรวบรวม Python เป็น C ++ [139]
- Pythran รวบรวมย่อยของงูหลาม 3 กับC ++ [140] [141] [142]
- Pyrex (รุ่นล่าสุดในปี 2010) และShed Skin (รุ่นล่าสุดในปี 2013) คอมไพล์เป็น C และ C ++ ตามลำดับ
- ของ Google Grumpy (รุ่นล่าสุดในปี 2017) transpilesงูหลาม 2 Go [143] [144] [145]
- IronPython (ตอนนี้ยกเลิกโดยไมโครซอฟท์) ช่วยให้การทำงานหลาม 2.7 โปรแกรมบน .NET ทั่วไปรันไทม์ภาษา [146]
- Jythonรวบรวม Python 2.7 เป็น Java bytecode ซึ่งอนุญาตให้ใช้ไลบรารี Java จากโปรแกรม Python [147]
- MyHDLเป็นงูหลามที่ใช้ภาษาอธิบายฮาร์ดแวร์ (HDL) รหัสที่แปลง MyHDL เพื่อVerilogหรือVHDLรหัส
- Numbaใช้LLVMเพื่อรวบรวมส่วนย่อยของ Python เข้ากับรหัสเครื่อง
- Brython, [148] Transcrypt [149] [150]และPyjs (รุ่นล่าสุดในปี 2012) รวบรวมงูหลามJavaScript
- RPythonสามารถคอมไพล์เป็นCและใช้เพื่อสร้างตัวแปล PyPy ของ Python
ประสิทธิภาพ
การเปรียบเทียบประสิทธิภาพของการใช้งาน Python ต่างๆในปริมาณงานที่ไม่ใช่ตัวเลข (combinatorial) ถูกนำเสนอที่ EuroSciPy '13 [151]ผลการดำเนินงานของงูใหญ่เมื่อเทียบกับภาษาโปรแกรมอื่น ๆ นอกจากนี้ยังมีวัดประสิทธิผลโดยคอมพิวเตอร์ภาษามาตรฐานเกม [152]
การพัฒนา
การพัฒนาของ Python ส่วนใหญ่ดำเนินการผ่านกระบวนการPython Enhancement Proposal (PEP) ซึ่งเป็นกลไกหลักในการนำเสนอคุณสมบัติใหม่ที่สำคัญรวบรวมข้อมูลชุมชนเกี่ยวกับปัญหาและบันทึกการตัดสินใจในการออกแบบ Python [153]รูปแบบการเข้ารหัส Python ครอบคลุมใน PEP 8 [154] PEP ที่โดดเด่นได้รับการตรวจสอบและแสดงความคิดเห็นโดยชุมชน Python และสภาควบคุม [153]
การปรับปรุงภาษาสอดคล้องกับการพัฒนาการใช้งานอ้างอิง CPython รายชื่ออีเมล python-dev เป็นฟอรัมหลักสำหรับการพัฒนาภาษา ประเด็นที่จะกล่าวถึงในRoundup บั๊กเจ้าภาพที่bugs.python.org [155]เดิมทีการพัฒนาเกิดขึ้นบนที่เก็บซอร์สโค้ดที่โฮสต์เองซึ่งรันMercurialจนกระทั่ง Python ย้ายไปที่GitHubในเดือนมกราคม 2017 [156]
การเผยแพร่สู่สาธารณะของ CPython มีสามประเภทโดยแยกตามส่วนของหมายเลขเวอร์ชัน:
- รุ่นย้อนกลับเข้ากันไม่ได้ที่รหัสคาดว่าจะแบ่งและความต้องการที่จะได้รับด้วยตนเองรังเพลิง ส่วนแรกของหมายเลขเวอร์ชันจะเพิ่มขึ้น การเผยแพร่เหล่านี้เกิดขึ้นไม่บ่อยนัก - เวอร์ชัน 3.0 เปิดตัว 8 ปีหลังจาก 2.0
- การออกรุ่นหลักหรือ "ฟีเจอร์" จะเกิดขึ้นทุกๆ 18 เดือน แต่ด้วยการนำจังหวะการวางจำหน่ายปีละครั้งที่เริ่มต้นด้วย Python 3.9 คาดว่าจะเกิดขึ้นปีละครั้ง [157] [158]ส่วนใหญ่เข้ากันได้ แต่แนะนำคุณสมบัติใหม่ ส่วนที่สองของหมายเลขเวอร์ชันจะเพิ่มขึ้น เวอร์ชันหลักแต่ละเวอร์ชันได้รับการสนับสนุนโดยการแก้ไขข้อบกพร่องเป็นเวลาหลายปีหลังจากการเผยแพร่ [159]
- การเผยแพร่บั๊ก[160]ซึ่งไม่มีการแนะนำคุณลักษณะใหม่เกิดขึ้นทุกๆ 3 เดือนและจะเกิดขึ้นเมื่อมีการแก้ไขจุดบกพร่องจำนวนเพียงพอตั้งแต่ต้นน้ำนับตั้งแต่รุ่นล่าสุด ช่องโหว่ด้านความปลอดภัยยังได้รับการแก้ไขในรุ่นเหล่านี้ ส่วนที่สามและสุดท้ายของหมายเลขเวอร์ชันจะเพิ่มขึ้น [160]
หลายอัลฟ่าเบต้าและปล่อยผู้สมัครยังมีการเปิดตัวเป็นตัวอย่างและสำหรับการทดสอบก่อนที่จะเผยแพร่สุดท้าย แม้ว่าจะมีกำหนดการคร่าวๆสำหรับแต่ละรุ่น แต่ก็มักจะล่าช้าหากโค้ดไม่พร้อม ทีมพัฒนาของ Python จะตรวจสอบสถานะของโค้ดโดยเรียกใช้ชุดทดสอบหน่วยขนาดใหญ่ในระหว่างการพัฒนา [161]
สำคัญประชุมวิชาการเกี่ยวกับงูหลามเป็นPyCon นอกจากนี้ยังมีโปรแกรมให้คำปรึกษาหลามพิเศษเช่นPyladies
Pythons 3.10 เลิกใช้ wstr (ที่จะลบออกใน Python 3.12 หมายถึงต้องแก้ไขส่วนขยาย Python [162] ), [163]และยังมีแผนที่จะเพิ่มการจับคู่รูปแบบให้กับภาษา [164]
ตัวสร้างเอกสาร API
เครื่องมือที่สามารถสร้างเอกสารสำหรับ Python API ได้แก่pydoc (พร้อมใช้งานเป็นส่วนหนึ่งของไลบรารีมาตรฐาน), Sphinx , Pdocและส้อมDoxygenและGraphvizเป็นต้น [165]
การตั้งชื่อ
ชื่อของ Python มาจากกลุ่มตลกของอังกฤษMonty Pythonซึ่ง Guido van Rossum ผู้สร้าง Python ชอบในขณะที่พัฒนาภาษา การอ้างอิง Monty Python มักปรากฏในรหัสและวัฒนธรรม Python [166]ตัวอย่างเช่นตัวแปร metasyntacticมักจะใช้ในวรรณคดีหลามเป็นสแปมและไข่แทนแบบดั้งเดิมfooและบาร์ [166] [167]เอกสาร Python อย่างเป็นทางการยังมีการอ้างอิงต่างๆเกี่ยวกับกิจวัตรของ Monty Python [168] [169]
คำนำหน้าPy-ใช้เพื่อแสดงว่ามีบางอย่างเกี่ยวข้องกับ Python ตัวอย่างของการใช้คำนำหน้านี้ในชื่อของโปรแกรม Python หรือห้องสมุด ได้แก่Pygameเป็นผลผูกพันของSDLหลาม (ที่ใช้กันทั่วไปในการสร้างเกม); PyQtและPyGTKซึ่งผูกQtและGTKกับ Python ตามลำดับ และPyPyการใช้งาน Python ที่เขียนด้วย Python
ใช้
ตั้งแต่ปี 2546 Python ได้รับการจัดอันดับให้อยู่ในสิบอันดับแรกของภาษาโปรแกรมยอดนิยมอย่างต่อเนื่องในTIOBE Programming Community Indexโดย ณ เดือนกุมภาพันธ์ 2021[อัปเดต]เป็นภาษายอดนิยมอันดับสาม (รองจากJavaและC ) [170]ได้รับเลือกเป็นภาษาโปรแกรมแห่งปี (สำหรับ "เรตติ้งที่เพิ่มขึ้นสูงสุดในหนึ่งปี") ในปี 2007, 2010, 2018 และ 2020 (ภาษาเดียวที่ทำได้สี่ครั้ง[171] ) [172]
การศึกษาเชิงประจักษ์พบว่าภาษาสคริปต์เช่น Python มีประสิทธิผลมากกว่าภาษาทั่วไปเช่น C และ Java สำหรับปัญหาการเขียนโปรแกรมที่เกี่ยวข้องกับการจัดการสตริงและการค้นหาในพจนานุกรมและพบว่าการใช้หน่วยความจำมักจะ "ดีกว่า Java และไม่ แย่กว่า C หรือ C ++ มาก " [173]
องค์กรขนาดใหญ่ที่ใช้ Python ได้แก่Wikipedia , Google , [174] Yahoo! , [175] เซิร์น , [176] นาซ่า , [177] Facebook , [178] Amazon , Instagram , [179] Spotify [180]และบางหน่วยงานขนาดเล็กเช่นILM [181]และITA [182]เว็บไซต์ข่าวสังคมออนไลน์Redditส่วนใหญ่เขียนด้วยภาษา Python [183]
งูใหญ่สามารถทำหน้าที่เป็นภาษาสคริปต์สำหรับการใช้งานเว็บเช่นผ่านmod_wsgiสำหรับApache เว็บเซิร์ฟเวอร์ [184]ด้วยWeb Server Gateway Interface API มาตรฐานได้พัฒนาขึ้นเพื่ออำนวยความสะดวกให้กับแอปพลิเคชันเหล่านี้ เว็บเฟรมเวิร์กเช่นDjango , Pylons , Pyramid , TurboGears , web2py , Tornado , Flask , BottleและZopeสนับสนุนนักพัฒนาในการออกแบบและบำรุงรักษาแอปพลิเคชันที่ซับซ้อน PyjsและIronPythonสามารถใช้เพื่อพัฒนาแอปพลิเคชันที่ใช้ Ajax ในฝั่งไคลเอ็นต์ SQLAlchemyสามารถใช้เป็นตัวทำแผนที่ข้อมูลไปยังฐานข้อมูลเชิงสัมพันธ์ บิดเป็นกรอบในการสื่อสารระหว่างเครื่องคอมพิวเตอร์โปรแกรมและถูกนำมาใช้ (ตัวอย่าง) โดยDropbox
ไลบรารีเช่นNumPy , SciPyและMatplotlibอนุญาตให้ใช้ Python ในการคำนวณทางวิทยาศาสตร์ได้อย่างมีประสิทธิภาพ, [185] [186]กับไลบรารีเฉพาะเช่นBiopythonและAstropy ที่ให้ฟังก์ชันการทำงานเฉพาะโดเมน SageMathเป็นระบบพีชคณิตคอมพิวเตอร์ที่มีอินเตอร์เฟซที่โน๊ตบุ๊คโปรแกรมได้ในหลาม: ครอบคลุมห้องสมุดหลาย ๆ ด้านของคณิตศาสตร์รวมทั้งพีชคณิต , combinatorics , คณิตศาสตร์ตัวเลข , ทฤษฎีจำนวนและแคลคูลัส [187] OpenCVมีการผูกหลามกับชุดสมบูรณ์ของคุณสมบัติสำหรับวิสัยทัศน์คอมพิวเตอร์และการประมวลผลภาพ [188]
งูหลามเป็นที่นิยมใช้ในปัญญาประดิษฐ์โครงการและการเรียนรู้เครื่องโครงการด้วยความช่วยเหลือของห้องสมุดเช่นTensorFlow , Keras , PytorchและScikit เรียนรู้ [189] [190] [191] [192]ในฐานะที่เป็นภาษาสคริปต์ที่มีสถาปัตยกรรมแบบโมดูลาร์ไวยากรณ์ที่เรียบง่ายและอุดมไปด้วยเครื่องมือการประมวลผลข้อความงูใหญ่มักจะใช้สำหรับการประมวลผลภาษาธรรมชาติ [193]
Python ได้ถูกฝังลงในผลิตภัณฑ์ซอฟต์แวร์จำนวนมากเป็นภาษาสคริปต์เรียบร้อยแล้วรวมถึงซอฟต์แวร์วิธีการ จำกัด เอลิเมนต์เช่นAbaqus , 3D parametric modeler เช่นFreeCAD , แพ็คเกจแอนิเมชั่น 3 มิติเช่น3ds Max , Blender , Cinema 4D , Lightwave , Houdini , Maya , modo , MotionBuilder , Softimage , ผลภาพเรียงพิมพ์Nuke , 2D โปรแกรมการถ่ายภาพเช่นGIMP , [194] Inkscape , ScribusและPaint Shop Pro , [195]และโน้ตดนตรีโปรแกรมเช่นscorewriterและกระทั่ง GNU Debuggerใช้ Python เป็นเครื่องพิมพ์ที่สวยงามเพื่อแสดงโครงสร้างที่ซับซ้อนเช่นคอนเทนเนอร์ C ++ Esriส่งเสริมหลามเป็นทางเลือกที่ดีที่สุดสำหรับการเขียนสคริปต์ในArcGIS [196]นอกจากนี้ยังมีการใช้ในหลายวิดีโอเกม[197] [198]และได้รับการรับรองเป็นครั้งแรกของสามใช้ได้การเขียนโปรแกรมภาษาในGoogle App Engine , อีกสองคนถูกJavaและไป [199]
ระบบปฏิบัติการจำนวนมากมี Python เป็นส่วนประกอบมาตรฐาน มันมาพร้อมกับที่สุดลินุกซ์ , [200] AmigaOS 4 (โดยใช้ Python 2.7) FreeBSD (เป็นแพ็กเกจ), NetBSD , OpenBSD (เป็นแพ็กเกจ) และMacOSและสามารถนำมาใช้จากบรรทัดคำสั่ง (Terminal) ลีนุกซ์หลายรุ่นใช้ตัวติดตั้งที่เขียนด้วย Python: Ubuntuใช้ตัวติดตั้งUbiquityในขณะที่Red Hat LinuxและFedoraใช้ตัวติดตั้งAnaconda Gentoo Linuxใช้งูหลามในของระบบการจัดการแพคเกจ , พอร์เทจ
Python ถูกใช้อย่างกว้างขวางในอุตสาหกรรมการรักษาความปลอดภัยข้อมูลรวมถึงการพัฒนาช่องโหว่ [201] [202]
ซอฟต์แวร์Sugarส่วนใหญ่สำหรับแล็ปท็อปหนึ่งเครื่องต่อ Child XO ซึ่งพัฒนาแล้วที่Sugar Labsเขียนด้วยภาษา Python [203]ราสเบอร์รี่ Pi เดียวบอร์ดคอมพิวเตอร์โครงการได้นำงูหลามเป็นภาษาที่ใช้เขียนโปรแกรมหลัก
LibreOfficeมี Python และตั้งใจที่จะแทนที่ Java ด้วย Python Python Scripting Provider เป็นคุณลักษณะหลัก[204]ตั้งแต่เวอร์ชัน 4.0 ตั้งแต่วันที่ 7 กุมภาพันธ์ 2556
ภาษาที่ได้รับอิทธิพลจาก Python
การออกแบบและปรัชญาของ Python มีอิทธิพลต่อภาษาโปรแกรมอื่น ๆ มากมาย:
- Booใช้การเยื้องไวยากรณ์ที่คล้ายกันและรูปแบบวัตถุที่คล้ายกัน [205]
- Cobraใช้การเยื้องและไวยากรณ์ที่คล้ายกันและเอกสารAcknowledgementจะแสดงรายการ Python เป็นอันดับแรกในบรรดาภาษาที่มีอิทธิพลต่อมัน [206]
- CoffeeScriptเป็นภาษาโปรแกรมที่คอมไพล์ข้ามไป JavaScript ได้ไวยากรณ์หลามแรงบันดาลใจ
- ECMAScript / JavaScriptยืมตัววนซ้ำและเครื่องกำเนิดไฟฟ้าจาก Python [207]
- GDScriptซึ่งเป็นภาษาสคริปต์ที่คล้ายกับ Python ในตัวของเกมGodot [208]
- Goออกแบบมาสำหรับ "ความเร็วในการทำงานในภาษาไดนามิกเช่น Python" [209]และใช้ไวยากรณ์เดียวกันสำหรับการแบ่งอาร์เรย์
- Groovyถูกกระตุ้นด้วยความปรารถนาที่จะนำปรัชญาการออกแบบหลามเพื่อJava [210]
- Juliaได้รับการออกแบบให้ "ใช้งานได้สำหรับการเขียนโปรแกรมทั่วไปเช่น Python" [25]
- Nimใช้การเยื้องและไวยากรณ์ที่คล้ายกัน [211]
- ยูกิฮิโระมัตสึโมโตะผู้สร้างRubyกล่าวว่า "ฉันต้องการภาษาสคริปต์ที่มีประสิทธิภาพมากกว่าภาษา Perl และเน้นเชิงวัตถุมากกว่า Python นั่นเป็นเหตุผลที่ฉันตัดสินใจออกแบบภาษาของตัวเอง" [212]
- Swiftซึ่งเป็นภาษาโปรแกรมที่พัฒนาโดย Apple มีไวยากรณ์ที่ได้รับแรงบันดาลใจจาก Python [213]
แนวทางปฏิบัติในการพัฒนาของ Python ได้รับการเลียนแบบโดยภาษาอื่น ๆ ตัวอย่างเช่นการปฏิบัติในการกำหนดให้ต้องใช้เอกสารที่อธิบายถึงเหตุผลและประเด็นรอบ ๆ การเปลี่ยนแปลงภาษา (ใน Python, PEP) ก็ใช้ในTcl , [214] Erlang , [215]และ Swift เช่นกัน [216]
ดูสิ่งนี้ด้วย
- ไวยากรณ์และความหมายของ Python
- pip (ผู้จัดการแพ็คเกจ)
- การเขียนโปรแกรมที่แตกต่างกัน
อ้างอิง
- ^ "ทั่วไปหลามคำถามที่พบบ่อย - งูใหญ่ 3.9.2 เอกสาร" docs.python.org สืบค้นเมื่อ28 มีนาคม 2564 .
- ^ ก ข Guttag, John V. (12 สิงหาคม 2559). รู้เบื้องต้นเกี่ยวกับการคำนวณและการเขียนโปรแกรมใช้งูหลาม: ด้วยการประยุกต์ใช้ในการทำความเข้าใจข้อมูล MIT Press. ISBN 978-0-262-52962-4.
- ^ ก ข "งูใหญ่ 3.8.10, 3.9.5 และ 3.10.0b1 อยู่ในขณะนี้พร้อมใช้งาน" 3 พฤษภาคม 2021 สืบค้นเมื่อ4 พฤษภาคม 2564 .
- ^ "ทำไมงูหลามเป็นภาษาแบบไดนามิกและยังเป็นภาษาพิมพ์มั่น - งูหลามวิกิพีเดีย" wiki.python.org สืบค้นเมื่อ27 มกราคม 2564 .
- ^ "PEP 483 - ทฤษฎีของประเภทคำแนะนำ" Python.org
- ^ นามสกุลไฟล์. pyo ถูกลบออกใน Python 3.5 ดู PEP 0488
- ^ Holth, Moore (30 มีนาคม 2557). "PEP 0441 - การปรับปรุงหลามไปรษณีย์ Application Support" สืบค้นเมื่อ12 พฤศจิกายน 2558 .
- ^ "ภาษาสตาร์ลาร์ค" . สืบค้นเมื่อ25 พฤษภาคม 2562 .
- ^ ก ข "เหตุใด Python จึงถูกสร้างขึ้นตั้งแต่แรก" . ทั่วไปหลามคำถามที่พบบ่อย มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ22 มีนาคม 2550 .
- ^ "Ada 83 Reference Manual (งบเพิ่ม)"
- ^ Kuchling, Andrew M. (22 ธันวาคม 2549). "บทสัมภาษณ์ Guido van Rossum (กรกฎาคม 1998)" . amk.ca สืบค้นจากต้นฉบับเมื่อ 1 พฤษภาคม 2550 . สืบค้นเมื่อ12 มีนาคม 2555 .
- ^ ก ข "itertools - ฟังก์ชั่นการสร้าง iterators สำหรับการวนลูปที่มีประสิทธิภาพ - งูใหญ่ 3.7.1 เอกสาร" docs.python.org
- ^ van Rossum, Guido (1993). "ข้อมูลเบื้องต้นเกี่ยวกับ Python สำหรับโปรแกรมเมอร์ UNIX / C" การดำเนินการของ NLUUG Najaarsconferentie (ดัตช์ UNIX กลุ่มผู้ใช้) CiteSeerX 10.1.1.38.2023
แม้ว่าการออกแบบของ C จะห่างไกลจากอุดมคติ แต่อิทธิพลที่มีต่อ Python ก็มีมาก
- ^ ก ข "ชั้นเรียน" . งูหลามกวดวิชา มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ20 กุมภาพันธ์ 2555 .
เป็นส่วนผสมของกลไกคลาสที่พบใน C ++ และ Modula-3
- ^ ลุนด์เฟรดริก "โทรตามวัตถุ" . effbot.org สืบค้นเมื่อ21 พฤศจิกายน 2560 .
แทนที่ "CLU" ด้วย "Python" "record" ด้วย "อินสแตนซ์" และ "ขั้นตอน" ด้วย "ฟังก์ชันหรือวิธีการ" และคุณจะได้รับคำอธิบายเกี่ยวกับโมเดลวัตถุของ Python ที่ค่อนข้างแม่นยำ
- ^ Simionato, มิเคเล่ "งูใหญ่ 2.3 วิธีมติสั่งซื้อ" Python Software Foundation
วิธีการ C3 นั้นไม่มีส่วนเกี่ยวข้องกับ Python เนื่องจากถูกคิดค้นโดยคนที่ทำงานกับ Dylan และมีการอธิบายไว้ในกระดาษที่มีไว้สำหรับเสียงกระเพื่อม
- ^ Kuchling, AM "การเขียนโปรแกรม HOWTO ฟังก์ชั่น" เอกสาร v2.7.2 หลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ9 กุมภาพันธ์ 2555 .
- ^ เชเมเนาเออร์, นีล; ปีเตอร์สทิม; Hetland, Magnus Lie (18 พฤษภาคม 2544). "PEP 255 - ง่ายปั่นไฟ" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ9 กุมภาพันธ์ 2555 .
- ^ สมิ ธ เควินดี; จิวเวตต์จิมเจ.; มอนทานาโร่ข้าม; แบ็กซ์เตอร์, แอนโธนี (2 กันยายน 2547). "PEP 318 - ตกแต่งสำหรับฟังก์ชั่นและวิธีการ" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ24 กุมภาพันธ์ 2555 .
- ^ "เพิ่มเติมเครื่องมือในการควบคุมการไหล" งูหลาม 3 เอกสาร มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ24 กรกฎาคม 2558 .
- ^ "CoffeeScript" coffeescript.org .
- ^ "การเขียนโปรแกรมภาษา Genie สอน" สืบค้นเมื่อ28 กุมภาพันธ์ 2563 .
- ^ "Perl และ Python อิทธิพลใน JavaScript" www.2ality.com . 24 กุมภาพันธ์ 2556 . สืบค้นเมื่อ15 พฤษภาคม 2558 .
- ^ Rauschmayer, Axel "บทที่ 3: ธรรมชาติของ JavaScript; อิทธิพล" รีลลี่พูด JavaScript สืบค้นเมื่อ15 พฤษภาคม 2558 .
- ^ ก ข "ทำไมเราจึงสร้างจูเลีย" เว็บไซต์ของจูเลีย กุมภาพันธ์ 2555 . สืบค้นเมื่อ5 มิถุนายน 2557 .
เราต้องการบางสิ่งที่สามารถใช้งานได้สำหรับการเขียนโปรแกรมทั่วไปเช่น Python [... ]
- ^ Ring Team (4 ธันวาคม 2560). "เสียงเรียกเข้าและภาษาอื่น ๆ " . ring-lang.net . วงแหวน -หลัง.
- ^ บินี, โอลา (2550). ปฏิบัติ JRuby on Rails Web 2.0 โครงการ: นำ Ruby on Rails เพื่อแพลตฟอร์ม เบิร์กลีย์: APress. น. 3 . ISBN 978-1-59059-881-8.
- ^ Lattner, Chris (3 มิถุนายน 2014). "คริสแลตต์เนอร์ของโฮมเพจ" คริสแลตต์เนอร์ สืบค้นเมื่อ3 มิถุนายน 2557 .
ภาษา Swift เป็นผลมาจากความพยายามอย่างไม่รู้จักเหน็ดเหนื่อยจากทีมผู้เชี่ยวชาญด้านภาษาผู้เชี่ยวชาญด้านการจัดทำเอกสารนินจาการเพิ่มประสิทธิภาพคอมไพเลอร์และกลุ่มทดลองใช้ภายในที่มีความสำคัญอย่างเหลือเชื่อซึ่งให้ข้อเสนอแนะเพื่อช่วยปรับแต่งและทดสอบแนวคิดในการต่อสู้ แน่นอนว่ามันยังได้รับประโยชน์อย่างมากจากประสบการณ์ที่ได้รับชัยชนะอย่างหนักจากภาษาอื่น ๆ ในสาขาการวาดภาพแนวคิดจาก Objective-C, Rust, Haskell, Ruby, Python, C #, CLU และอื่น ๆ อีกมากมายที่จะแสดงรายการ
- ^ Kuhlman, Dave. "งูหลามหนังสือ: เริ่มต้นหลามงูหลามขั้นสูงและการออกกำลังกายงูใหญ่" ส่วน 1.1. สืบค้นจากต้นฉบับ (PDF)เมื่อ 23 มิถุนายน 2555.
- ^ "เกี่ยวกับ Python" . มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ24 เมษายน 2555 .ส่วนที่สอง "แฟน ๆ ของ Python ใช้วลี" รวมแบตเตอรี่ "เพื่ออธิบายไลบรารีมาตรฐานซึ่งครอบคลุมตั้งแต่การประมวลผลแบบอะซิงโครนัสไปจนถึงไฟล์ zip"
- ^ Rossum, Guido Van (20 มกราคม 2552). "ประวัติความเป็นมาของงูใหญ่: ย่อเส้นเวลาของงูใหญ่" ประวัติความเป็นมาของงูใหญ่ สืบค้นเมื่อ5 มีนาคม 2564 .
- ^ ปีเตอร์สัน, เบนจามิน (20 เมษายน 2020). "งูใหญ่ Insider: งูหลาม 2.7.18, รุ่นล่าสุดของงูหลาม 2" ภายในหลาม สืบค้นเมื่อ27 เมษายน 2563 .
- ^ ดัชนี TIOBE (ธันวาคม 2020) "ดัชนี TIOBE สำหรับธันวาคม 2020" TIOBE.com . สืบค้นเมื่อ20 ธันวาคม 2563 .
- ^ "ดัชนี | TIOBE - บริษัท ซอฟต์แวร์ที่มีคุณภาพ" www.tiobe.com . สืบค้นเมื่อ2 กุมภาพันธ์ 2564 .
Python ได้รับรางวัลภาษาโปรแกรม TIOBE แห่งปี! นับเป็นครั้งที่ 4 ในประวัติศาสตร์ซึ่งเป็นบันทึก! ชื่อนี้มอบให้กับภาษาโปรแกรมที่ได้รับความนิยมสูงสุดในหนึ่งปี
- ^ "กองมากเกินนักพัฒนาสำรวจ 2020" กองมากเกิน สืบค้นเมื่อ5 มีนาคม 2564 .
- ^ "รัฐของผู้พัฒนาระบบนิเวศในปี 2020 Infographic" JetBrains: เครื่องมือสำหรับนักพัฒนาสำหรับมืออาชีพและทีมงาน สืบค้นเมื่อ5 มีนาคม 2564 .
- ^ "PYPL PopularitY of Programming Language index" . pypl.github.io สืบค้นเมื่อ26 มีนาคม 2564 .
- ^ ก ข Venners, Bill (13 มกราคม 2546). "การสร้างงูหลาม" . Artima นักพัฒนาซอฟต์แวร์ อาร์ติมา. สืบค้นเมื่อ22 มีนาคม 2550 .
- ^ van Rossum, Guido (29 สิงหาคม 2543). "SETL (คือ: อุ่นเกี่ยวกับตัวอักษรช่วง)" หลาม Dev (รายชื่อผู้รับจดหมาย) สืบค้นเมื่อ13 มีนาคม 2554 .
- ^ van Rossum, Guido (20 มกราคม 2552). "บทสรุปเส้นเวลาของงูใหญ่" ประวัติความเป็นมาของงูใหญ่ สืบค้นเมื่อ20 มกราคม 2552 .
- ^ Fairchild, Carlie (12 กรกฎาคม 2018). "กุยรถตู้ซัมก้าวลงจากบทบาทเป็น ธ เผด็จการใจดีเพื่อชีวิต" ลินุกซ์วารสาร สืบค้นเมื่อ13 กรกฎาคม 2561 .
- ^ "กุยรถตู้ซัมก้าวลงจากบทบาทเป็น ธ เผด็จการใจดี For Life | Linux Journal" www.linuxjournal.com .
- ^ "งูใหญ่เจ้านายกุยรถตู้ซัมขั้นตอนลงหลังจาก 30 ปี" เรอ
- ^ "PEP 8100" . หลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ4 พฤษภาคม 2562 .
- ^ "PEP 8100" . มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ4 พฤษภาคม 2562 .
- ^ "พวงมาลัยรับการเสนอชื่อในสภา: กุยรถตู้ซัม (2020 คำ)" การอภิปรายเกี่ยวกับ Python.org 27 พฤศจิกายน 2562.
- ^ Kuchling, น.; Zadka, Moshe (16 ตุลาคม 2543). "มีอะไรใหม่ในหลาม 2.0" มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ11 กุมภาพันธ์ 2555 .
- ^ "งูใหญ่ 3.0 ปล่อย" มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ8 กรกฎาคม 2552 .
- ^ van Rossum, Guido (5 เมษายน 2549). "PEP 3000 - งูใหญ่ 3000" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม Python Software Foundation สืบค้นจากต้นฉบับเมื่อวันที่ 3 มีนาคม 2559 . สืบค้นเมื่อ27 มิถุนายน 2552 .
- ^ "2to3 - อัตโนมัติหลามแปล 2-3 รหัส" docs.python.org สืบค้นเมื่อ2 กุมภาพันธ์ 2564 .
- ^ "PEP 373 - งูหลาม 2.7 กำหนดการปล่อย" python.org สืบค้นเมื่อ9 มกราคม 2560 .
- ^ "PEP 466 - การเพิ่มประสิทธิภาพการรักษาความปลอดภัยเครือข่ายสำหรับหลาม 2.7.x" python.org สืบค้นเมื่อ9 มกราคม 2560 .
- ^ "เลิกใช้งูหลาม 2" Python.org สืบค้นเมื่อ22 กันยายน 2562 .
- ^ "PEP 373 - งูหลาม 2.7 กำหนดการปล่อย" Python.org สืบค้นเมื่อ22 กันยายน 2562 .
- ^ "งูใหญ่นักพัฒนาคู่มือ - คู่มือหลามนักพัฒนา" devguide.python.org สืบค้นเมื่อ17 ธันวาคม 2562 .
- ^ Langa, Łukasz (19 กุมภาพันธ์ 2564). "งูใหญ่ Insider: งูหลาม 3.9.2 และ 3.8.8 ที่มีตอนนี้" ภายในหลาม สืบค้นเมื่อ26 กุมภาพันธ์ 2564 .
- ^ "หมวกสีแดงของลูกค้าพอร์ทัล - การเข้าถึง 24x7 การสนับสนุนและความรู้" access.redhat.com . สืบค้นเมื่อ26 กุมภาพันธ์ 2564 .
- ^ "CVE - CVE-2021-3177" cve.mitre.org . สืบค้นเมื่อ26 กุมภาพันธ์ 2564 .
- ^ "CVE - CVE-2021-23336" cve.mitre.org . สืบค้นเมื่อ26 กุมภาพันธ์ 2564 .
- ^ The Cain Gang Ltd. "Python Metaclasses: ใครทำไมเมื่อไหร่" (PDF) สืบค้นจากต้นฉบับ (PDF)เมื่อ 30 พฤษภาคม 2552 . สืบค้นเมื่อ27 มิถุนายน 2552 .
- ^ "3.3. ชื่อวิธีพิเศษ" . อ้างอิงภาษา Python มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ27 มิถุนายน 2552 .
- ^ "PyDBC: ปัจจัยพื้นฐานวิธี postconditions วิธีการและค่าคงที่ระดับงูใหญ่" สืบค้นเมื่อ24 กันยายน 2554 .
- ^ "สัญญาสำหรับ Python" . สืบค้นเมื่อ24 กันยายน 2554 .
- ^ "PyDatalog" . สืบค้นเมื่อ22 กรกฎาคม 2555 .
- ^ "การขยายและการฝังหลามล่าม: นับอ้างอิง" Docs.python.org สืบค้นเมื่อ5 มิถุนายน 2563 .
เนื่องจาก Python ใช้งานหนัก
malloc()
และfree()
จำเป็นต้องมีกลยุทธ์เพื่อหลีกเลี่ยงการรั่วไหลของหน่วยความจำรวมถึงการใช้หน่วยความจำที่ว่าง วิธีที่ได้รับการแต่งตั้งเป็นที่เรียกว่านับการอ้างอิง - ^ ก ข Hettinger, Raymond (30 มกราคม 2545). "PEP 289 - เครื่องปั่นไฟนิพจน์" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ19 กุมภาพันธ์ 2555 .
- ^ "6.5 itertools - ฟังก์ชั่นการสร้าง iterators สำหรับการวนลูปที่มีประสิทธิภาพ" Docs.python.org สืบค้นเมื่อ22 พฤศจิกายน 2559 .
- ^ ก ข ปีเตอร์สทิม (19 สิงหาคม 2547). "PEP 20 - เซนของงูใหญ่" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ24 พฤศจิกายน 2551 .
- ^ มาร์เตลลี, อเล็กซ์; เรเวนสครอฟต์, แอนนา; แอสเชอร์เดวิด (2548). งูหลามตำราฉบับที่ 2 O'Reilly สื่อ น. 230. ISBN 978-0-596-00797-3.
- ^ “ วัฒนธรรมงูใหญ่” . ebeab . 21 มกราคม 2014 ที่จัดเก็บจากเดิมในวันที่ 30 มกราคม 2014
- ^ "นายพลหลามคำถามที่พบบ่อย" เอกสาร v2.7.3 หลาม Docs.python.org สืบค้นเมื่อ4 มิถุนายน 2563 .
- ^ "15 วิธีหลามเป็นพลังกองทัพบนเว็บ"
- ^ "8.18 pprint. - ข้อมูลเครื่องพิมพ์สวย - งูใหญ่ 3.8.3 เอกสาร" docs.python.org
- ^ คลาร์กโรเบิร์ต (26 เมษายน 2019). "จะเป็น Pythonic ได้อย่างไรและทำไมคุณถึงต้องดูแล" . กลาง
- ^ "สไตล์รหัสที่มา - ที่โบกรถเพื่อให้งูใหญ่" docs.python-guide.org
- ^ กู๊ดเจอร์เดวิด "รหัสเหมือน pythonista: สำนวนงูใหญ่" ที่เก็บถาวรจากเดิมเมื่อวันที่ 27 พฤษภาคม 2014 สืบค้นเมื่อ24 มีนาคม 2552 .
- ^ “ วิธีคิดแบบ Pythonista” .
- ^ "Python เป็นภาษาที่ดีสำหรับโปรแกรมเมอร์ระดับเริ่มต้นหรือไม่" . ทั่วไปหลามคำถามที่พบบ่อย มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ21 มีนาคม 2550 .
- ^ "เรื่องราวเกี่ยวกับการเยื้องในงูใหญ่" Secnetix.de สืบค้นเมื่อ19 เมษายน 2554 .
- ^ "PEP ที่ 8 - คู่มือสไตล์สำหรับงูหลามรหัส" Python.org
- ^ "งูใหญ่ 2.5 ปล่อย" Python.org
- ^ "ไฮไลท์: งูใหญ่ 2.5" Python.org
- ^ van Rossum, Guido (22 เมษายน 2552). "การกำจัดหางซ้ำ" . Neopythonic.blogspot.be . สืบค้นเมื่อ3 ธันวาคม 2555 .
- ^ van Rossum, Guido (9 กุมภาพันธ์ 2549). "การออกแบบภาษาไม่ได้เป็นเพียงการแก้ปริศนา" ฟอรั่ม Artima อาร์ติมา. สืบค้นเมื่อ21 มีนาคม 2550 .
- ^ ฟานรอสซัม, กุยโด; Eby, Phillip J. (10 พฤษภาคม 2548). "PEP 342 - Coroutines ผ่านเครื่องกำเนิดไฟฟ้าที่เพิ่มขึ้น" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ19 กุมภาพันธ์ 2555 .
- ^ "กปภ 380" . Python.org สืบค้นเมื่อ3 ธันวาคม 2555 .
- ^ "กอง" . python.org
- ^ "PEP 0465 - ผู้ประกอบการมัดเฉพาะสำหรับการคูณเมทริกซ์" python.org สืบค้นเมื่อ1 มกราคม 2559 .
- ^ "งูใหญ่ 3.5.1 ที่วางจำหน่ายและการเปลี่ยนแปลง" python.org สืบค้นเมื่อ1 มกราคม 2559 .
- ^ "มีอะไรใหม่ในหลาม 3.8" สืบค้นเมื่อ14 ตุลาคม 2562 .
- ^ "บทที่ 15. นิพจน์ - 15.21.1. ตัวดำเนินการความเท่าเทียมกันเชิงตัวเลข == และ! =" . ออราเคิลคอร์ปอเรชั่น สืบค้นเมื่อ28 สิงหาคม 2559 .
- ^ "บทที่ 15. นิพจน์ - 15.21.3. Reference Equality Operators == and! =" . ออราเคิลคอร์ปอเรชั่น สืบค้นเมื่อ28 สิงหาคม 2559 .
- ^ ฟานรอสซัม, กุยโด; Hettinger, Raymond (7 กุมภาพันธ์ 2546). "PEP 308 - เงื่อนไขการแสดงออก" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ13 กรกฎาคม 2554 .
- ^ "4 ในตัวชนิด - งูหลาม 3.6.3rc1 เอกสาร" python.org สืบค้นเมื่อ1 ตุลาคม 2560 .
- ^ "5.3 Tuples และลำดับ. - งูหลาม 3.7.1rc2 เอกสาร" python.org สืบค้นเมื่อ17 ตุลาคม 2561 .
- ^ ก ข "PEP 498 - ตัวอักษร String แก้ไข" python.org สืบค้นเมื่อ8 มีนาคม 2560 .
- ^ "เหตุใดจึงต้องใช้" self "อย่างชัดเจนในคำจำกัดความและการเรียกของวิธีการ" . การออกแบบและประวัติศาสตร์คำถามที่พบบ่อย มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ19 กุมภาพันธ์ 2555 .
- ^ "ภาษา Python อ้างอิงมาตรา 3.3. ใหม่สไตล์และการเรียนคลาสสิกสำหรับการเปิดตัว 2.7.1" สืบค้นเมื่อ12 มกราคม 2554 .
- ^ "พิมพ์พูดเป็นนัยสำหรับงูใหญ่" LWN.net 24 ธันวาคม 2557 . สืบค้นเมื่อ5 พฤษภาคม 2558 .
- ^ "mypy - เลือกคงพิมพ์ดีดสำหรับงูใหญ่" สืบค้นเมื่อ28 มกราคม 2560 .
- ^ "15. Floating Point เลขคณิต: ปัญหาและข้อ จำกัด - งูใหญ่ 3.8.3 เอกสาร" docs.python.org สืบค้นเมื่อ6 มิถุนายน 2563 .
เกือบทุกเครื่องในวันนี้ (พฤศจิกายน 2000) ใช้เลขคณิตจุดลอยตัว IEEE-754 และแพลตฟอร์มเกือบทั้งหมดที่แมป Python ลอยไปที่ IEEE-754“ ความแม่นยำสองเท่า”
- ^ แซดก้า, โมเช; van Rossum, Guido (11 มีนาคม 2544). "PEP 237 - Unifying ยาวจำนวนเต็มและจำนวนเต็ม" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ24 กันยายน 2554 .
- ^ "ในตัวชนิด" สืบค้นเมื่อ3 ตุลาคม 2562 .
- ^ "PEP 465 - ผู้ประกอบการมัดเฉพาะสำหรับการคูณเมทริกซ์" python.org
- ^ ก ข แซดก้า, โมเช; van Rossum, Guido (11 มีนาคม 2544). "PEP 238 - การเปลี่ยนผู้ดำเนินการกอง" . ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ23 ตุลาคม 2556 .
- ^ "ทำไมชั้น ธ จำนวนเต็มกอง" สืบค้นเมื่อ25 สิงหาคม 2553 .
- ^ "round" , The Python standard library, release 3.2, §2: Built-in functions , สืบค้นเมื่อ14 August 2011
- ^ "round" , The Python standard library, release 2.7, §2: Built-in functions , สืบค้นเมื่อ14 August 2011
- ^ บีซลีย์เดวิดเอ็ม. (2552). ข้อมูลอ้างอิงที่จำเป็นของ Python (ฉบับที่ 4) น. 66 .
- ^ เคอนิแกนไบรอันดับเบิลยู; Ritchie, Dennis M. (1988). ภาษาการเขียนโปรแกรม C (2nd ed.) น. 206 .
- ^ บาติสตาฟาซุนโด. "PEP 0327 - สิบชนิดของข้อมูล" Python.org สืบค้นเมื่อ26 กันยายน 2558 .
- ^ "มีอะไรใหม่ในหลาม 2.6 - เอกสาร v2.6.9 งูใหญ่" docs.python.org สืบค้นเมื่อ26 กันยายน 2558 .
- ^ "10 เหตุผลที่หลาม Rocks เพื่อการวิจัย (และไม่กี่เหตุผลที่มันไม่ได้) - ฮอยต์ Koepke" www.stat.washington.edu . สืบค้นเมื่อ3 กุมภาพันธ์ 2562 .
- ^ เชลล์สก็อตต์ (17 มิถุนายน 2557). "แนะนำให้รู้จักกับงูหลามสำหรับการคำนวณทางวิทยาศาสตร์" (PDF) สืบค้นเมื่อ3 กุมภาพันธ์ 2562 .
- ^ Piotrowski, Przemyslaw (กรกฎาคม 2549) "สร้างสภาพแวดล้อมการพัฒนาอย่างรวดเร็วเว็บสำหรับ Server Pages งูหลามและ Oracle" เครือข่ายเทคโนโลยีของออราเคิล คำพยากรณ์ สืบค้นเมื่อ12 มีนาคม 2555 .
- ^ Batista, Facundo (17 ตุลาคม 2546). "PEP 327 - สิบชนิดของข้อมูล" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ24 พฤศจิกายน 2551 .
- ^ Eby, Phillip J. (7 ธันวาคม 2546). "PEP 333 - งูหลาม Web Server Gateway Interface v1.0" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ19 กุมภาพันธ์ 2555 .
- ^ เดบิล, เอริก. "เคานต์โมดูล" ModuleCounts สืบค้นเมื่อ2 กุมภาพันธ์ 2564 .
- ^ Enthought, Canopy "เรือนยอด" . www.enthought.com . สืบค้นเมื่อ20 สิงหาคม 2559 .
- ^ "บุรุษไปรษณีย์ 3 ทำไมเราจะไม่อนุญาตให้ใช้ C11 หรือไม่ - งูใหญ่ Dev - python.org" mail.python.org สืบค้นเมื่อ1 มีนาคม 2564 .
- ^ "ออก 35473: Intel คอมไพเลอร์ (ICC) ไม่สนับสนุน C11 คุณสมบัติรวมทั้งอะตอม - งูหลามติดตาม" bugs.python.org สืบค้นเมื่อ1 มีนาคม 2564 .
- ^ "4 อาคาร C และ C ++ ส่วนขยาย - งูใหญ่ 3.9.2 เอกสาร" docs.python.org สืบค้นเมื่อ1 มีนาคม 2564 .
- ^ van Rossum, Guido (5 มิถุนายน 2544). "PEP 7 - คู่มือสไตล์สำหรับ C Code" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ24 พฤศจิกายน 2551 .
- ^ "รหัสไบต์ CPython" Docs.python.org สืบค้นเมื่อ16 กุมภาพันธ์ 2559 .
- ^ "งูใหญ่ 2.5 internals" (PDF) สืบค้นเมื่อ19 เมษายน 2554 .
- ^ "การเปลี่ยนแปลง - งูใหญ่ 3.9.0 เอกสาร" docs.python.org สืบค้นเมื่อ8 กุมภาพันธ์ 2564 .
- ^ "ดาวน์โหลดงูใหญ่" Python.org สืบค้นเมื่อ13 ธันวาคม 2563 .
- ^ "ประวัติศาสตร์ [vmspython]" www.vmspython.org . สืบค้นเมื่อ4 ธันวาคม 2563 .
- ^ "สัมภาษณ์กับกุยรถตู้ซัม" Oreilly.com สืบค้นเมื่อ24 พฤศจิกายน 2551 .
- ^ "ดาวน์โหลดหลามสำหรับแพลตฟอร์มอื่น ๆ" Python.org สืบค้นเมื่อ4 ธันวาคม 2563 .
- ^ "เข้ากันได้ PyPy" Pypy.org . สืบค้นเมื่อ3 ธันวาคม 2555 .
- ^ "การเปรียบเทียบความเร็วระหว่าง CPython และ Pypy" Speed.pypy.org . สืบค้นเมื่อ3 ธันวาคม 2555 .
- ^ "งานระดับ Stackless มี - PyPy 2.0.2 เอกสาร" Doc.pypy.org สืบค้นเมื่อ17 กรกฎาคม 2556 .
- ^ "งูใหญ่สำหรับ EV3" LEGO การศึกษา สืบค้นเมื่อ17 เมษายน 2562 .
- ^ Yegulalp, Serdar (29 ตุลาคม 2020). "ผลตอบแทน Pyston จากความตายเพื่อเพิ่มความเร็วในงูใหญ่" InfoWorld สืบค้นเมื่อ26 มกราคม 2564 .
- ^ "ถ่าน: ส้อมผลการดำเนินงานที่มุ่งเน้น Instagram ของ CPython" สืบค้นเมื่อ4 พฤษภาคม 2564 .
- ^ "แผนสำหรับการเพิ่มประสิทธิภาพงูใหญ่" โครงการของ Google โฮสติ้ง 15 ธันวาคม 2552 . สืบค้นเมื่อ24 กันยายน 2554 .
- ^ "งูใหญ่บน Nokia N900" stochastic เรขาคณิต 29 เมษายน 2553.
- ^ "Nuitka Home | Nuitka Home" . nuitka.net สืบค้นเมื่อ18 สิงหาคม 2560 .
- ^ Borderies, Olivier (24 มกราคม 2019). "Pythran: Python ที่ความเร็ว C ++!" . กลาง
- ^ "Pythran - Pythran 0.9.5 เอกสาร" pythran.readthedocs.io
- ^ http://conference.scipy.org/proceedings/scipy2013/html/pdfs/guelton.pdf
- ^ "google / ไม่พอใจ" 10 เมษายน 2020 - ผ่าน GitHub
- ^ "โครงการ" . opensource.google .
- ^ Francisco, Thomas Claburn ในซาน "รหัส Grumpy ของ Google ทำให้งูหลามไป" www.theregister.com .
- ^ "IronPython.net /" ironpython.net สืบค้นเมื่อ22 เมษายน 2564 .
- ^ "Jython คำถามที่พบบ่อย" www.jython.org . สืบค้นเมื่อ22 เมษายน 2564 .
- ^ "ไบรตัน" . brython.info สืบค้นเมื่อ21 มกราคม 2564 .
- ^ "Transcrypt - งูหลามในเบราว์เซอร์" transcrypt.org สืบค้นเมื่อ22 ธันวาคม 2563 .
- ^ "Transcrypt: กายวิภาคของงูหลาม JavaScript คอมไพเลอร์" InfoQ
- ^ Murri, Riccardo (2013). ผลการดำเนินงานของงูใหญ่ runtimes ในรหัสทางวิทยาศาสตร์ที่ไม่ใช่ตัวเลข European Conference on Python in Science (EuroSciPy) arXiv : 1404.6388 รหัสไปรษณีย์ : 2014arXiv1404.6388M .
- ^ "คอมพิวเตอร์ภาษามาตรฐานเกม" สืบค้นเมื่อ30 เมษายน 2563 .
- ^ ก ข วอร์ซอแบร์รี่; ฮิลตัน, เจเรมี; กู๊ดเจอร์เดวิด (13 มิถุนายน 2543). "PEP 1 - วัตถุประสงค์และแนวทางของ PEP" . ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ19 เมษายน 2554 .
- ^ "PEP ที่ 8 - คู่มือสไตล์สำหรับงูหลามรหัส" Python.org
- ^ ปืนใหญ่เบร็ตต์ "กุยคนบางคนและรายชื่อผู้รับจดหมาย: วิธีหลามมีการพัฒนา" python.org Python Software Foundation สืบค้นจากต้นฉบับเมื่อ 1 มิถุนายน 2552 . สืบค้นเมื่อ27 มิถุนายน 2552 .
- ^ "งูใหญ่นักพัฒนาคู่มือ - คู่มือหลามนักพัฒนา" devguide.python.org
- ^ "PEP 602 - ประจำปีที่วางจำหน่ายวงจรสำหรับงูใหญ่" Python.org สืบค้นเมื่อ6 พฤศจิกายน 2562 .
- ^ "การเปลี่ยนหลามปล่อยจังหวะ [LWN.net]" lwn.net สืบค้นเมื่อ6 พฤศจิกายน 2562 .
- ^ Norwitz, Neal (8 เมษายน 2545). "ตาราง [หลาม-Dev] รีลีส (เป็นความเสถียรและการเปลี่ยนแปลง)" สืบค้นเมื่อ27 มิถุนายน 2552 .
- ^ ก ข Aahz; แบ็กซ์เตอร์, แอนโธนี (15 มีนาคม 2544). "PEP 6 - ข่าวแก้ไขข้อผิดพลาด" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ27 มิถุนายน 2552 .
- ^ "งูใหญ่ Buildbot" คู่มือหลามของนักพัฒนา มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ24 กันยายน 2554 .
- ^ "1. ขยายหลามกับ C หรือ C ++ - งูใหญ่ 3.9.1 เอกสาร" docs.python.org สืบค้นเมื่อ14 กุมภาพันธ์ 2564 .
- ^ "PEP 623 - ลบ wstr จาก Unicode" Python.org สืบค้นเมื่อ14 กุมภาพันธ์ 2564 .
- ^ "PEP 634 - โครงสร้างการจับคู่แบบ: ข้อมูลจำเพาะ" Python.org สืบค้นเมื่อ14 กุมภาพันธ์ 2564 .
- ^ "เครื่องมือจัดทำเอกสาร" . Python.org สืบค้นเมื่อ22 มีนาคม 2564 .
- ^ ก ข "ล้างความอยากอาหารของคุณ" . งูหลามกวดวิชา มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ20 กุมภาพันธ์ 2555 .
- ^ "ใน Python ฉันควรใช้ตัวอื่นหลังจากกลับมาใน if block หรือไม่" . กองมากเกิน กองแลกเปลี่ยน 17 กุมภาพันธ์ 2554 . สืบค้นเมื่อ6 พฤษภาคม 2554 .
- ^ ลัทซ์มาร์ค (2552). การเรียนรู้หลาม: ประสิทธิภาพการเขียนโปรแกรมเชิงวัตถุ O'Reilly Media, Inc. หน้า 17. ISBN 9781449379322.
- ^ Fehily, Chris (2002). หลาม พีชพิทเพรส. น. xv. ISBN 9780201748840.
- ^ "ดัชนี TIOBE" . TIOBE - บริษัท สืบค้นเมื่อ26 กุมภาพันธ์ 2564 .
- ^ เบลคผู้แต่งทรอย (18 มกราคม 2564). "ดัชนี TIOBE ประจำเดือนมกราคม 2564" . ข่าวเทคโนโลยีและสารสนเทศโดย SeniorDBA สืบค้นเมื่อ26 กุมภาพันธ์ 2564 .
- ^ TIOBE Software Index (2015). "การเขียนโปรแกรม TIOBE ชุมชนดัชนีงูใหญ่" สืบค้นเมื่อ10 กันยายน 2558 .
- ^ Prechelt, Lutz (14 มีนาคม 2543). "การเปรียบเทียบเชิงประจักษ์ของ C, C ++, Java, Perl, Python, REXX และ Tcl" (PDF) สืบค้นเมื่อ30 สิงหาคม 2556 .
- ^ "คำคมเกี่ยวกับ Python" . มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ8 มกราคม 2555 .
- ^ "องค์กรที่ใช้งูใหญ่" มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ15 มกราคม 2552 .
- ^ "งูใหญ่: Holy Grail ของการเขียนโปรแกรม" เซิร์น Bulletin CERN Publications (31/2006). 31 กรกฎาคม 2549 . สืบค้นเมื่อ11 กุมภาพันธ์ 2555 .
- ^ Shafer, Daniel G. (17 มกราคม 2546). "งูใหญ่คล่องตัวกระสวยอวกาศออกแบบภารกิจ" มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ24 พฤศจิกายน 2551 .
- ^ "ทอร์นาโด: Facebook ของ Real-Time เว็บกรอบหลาม - Facebook สำหรับนักพัฒนา" Facebook สำหรับนักพัฒนา สืบค้นเมื่อ19 มิถุนายน 2561 .
- ^ "สิ่งที่พลัง Instagram: ร้อยอินสแตนซ์นับสิบของเทคโนโลยี" วิศวกรรม Instagram สืบค้นเมื่อ27 พฤษภาคม 2562 .
- ^ "วิธีที่เราใช้งูหลามที่ Spotify" Spotify Labs 20 มีนาคม 2556 . สืบค้นเมื่อ25 กรกฎาคม 2561 .
- ^ Fortenberry, Tim (17 มกราคม 2546). "ไฟเวทมนตร์ & อุตสาหกรรมทำงานบนงูใหญ่" มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ11 กุมภาพันธ์ 2555 .
- ^ Taft, Darryl K. (5 มีนาคม 2550). "งูใหญ่ slithers เข้าสู่ระบบ" eWeek.com Ziff เดวิสโฮลดิ้ง สืบค้นเมื่อ24 กันยายน 2554 .
- ^ GitHub - reddit-archive / reddit: รหัสประวัติศาสตร์จาก reddit.com , The Reddit Archives , สืบค้นเมื่อ20 มีนาคม 2019
- ^ "สถิติการใช้งานและส่วนแบ่งตลาดของงูใหญ่สำหรับเว็บไซต์" 2555 . สืบค้นเมื่อ18 ธันวาคม 2555 .
- ^ Oliphant, Travis (2007). "งูใหญ่สำหรับการคำนวณทางวิทยาศาสตร์" การคำนวณทางวิทยาศาสตร์และวิศวกรรม 9 (3): 10–20. Bibcode : 2007CSE ..... 9c..10O . CiteSeerX 10.1.1.474.6460 ดอย : 10.1109 / MCSE.2007.58 . S2CID 206457124 .
- ^ มิลล์แมน, K. Jarrod; Aivazis, Michael (2011). "งูใหญ่สำหรับนักวิทยาศาสตร์และวิศวกร" การคำนวณทางวิทยาศาสตร์และวิศวกรรม 13 (2): 9–12. รหัสไปรษณีย์ : 2011CSE .... 13b ... 9M . ดอย : 10.1109 / MCSE.2011.36 .
- ^ Science education with SageMath , Innovative Computing in Science Education , สืบค้นเมื่อ22 April 2019
- ^ "OpenCV: OpenCV หลามสอน" docs.opencv.org สืบค้นเมื่อ14 กันยายน 2563 .
- ^ คณบดีเจฟฟ์ ; มงกา, ราช; และคณะ (9 พฤศจิกายน 2558). "TensorFlow: ขนาดใหญ่เครื่องเรียนรู้เกี่ยวกับระบบที่แตกต่าง" (PDF) TensorFlow.org การวิจัยของ Google สืบค้นเมื่อ10 พฤศจิกายน 2558 .
- ^ Piatetsky, Gregory "งูใหญ่กินไปที่ R: ซอฟแวร์ยอดนิยมสำหรับ Analytics, ข้อมูลวิทยาศาสตร์การเรียนรู้เครื่องในปี 2018: แนวโน้มและการวิเคราะห์" KD นักเก็ต KD นักเก็ต สืบค้นเมื่อ30 พฤษภาคม 2561 .
- ^ "ใครใช้ scikit เรียนรู้? - scikit เรียนรู้เอกสาร 0.20.1" scikit-learn.org .
- ^ Jouppi นอร์ม "Google supercharges งานเครื่องการเรียนรู้ด้วยชิปที่กำหนดเอง TPU" บล็อกของ Google Cloud Platform สืบค้นเมื่อ19 พฤษภาคม 2559 .
- ^ "ภาษาธรรมชาติ Toolkit - NLTK 3.5b1 เอกสาร" www.nltk.org .
- ^ "ติดตั้งสำหรับ GIMP สำหรับ Windows - คำถามที่พบบ่อย" 26 กรกฎาคม 2013 ที่จัดเก็บจากเดิมในวันที่ 17 กรกฎาคม 2013 สืบค้นเมื่อ26 กรกฎาคม 2556 .
- ^ "psp9components JASC" สืบค้นจากต้นฉบับเมื่อ 19 มีนาคม 2551.
- ^ "เกี่ยวกับการเริ่มต้นกับการเขียนสคริปต์ Geoprocessing" ArcGIS สก์ท็อปช่วยเหลือ 9.2 สถาบันวิจัยระบบสิ่งแวดล้อม. 17 พฤศจิกายน 2549 . สืบค้นเมื่อ11 กุมภาพันธ์ 2555 .
- ^ CCP porkbelly (24 สิงหาคม 2553). "Stackless Python 2.7" EVE ชุมชน Dev บล็อก เกมส์ CCP
อย่างที่คุณทราบ EVE มีภาษาการเขียนโปรแกรมที่เรียกว่า Stackless Python เป็นหลัก
- ^ Caudill, Barry (20 กันยายน 2548). "Modding Sid Meier's Civilization IV" . ซิดไมเออร์อารยธรรม IV บล็อกของนักพัฒนา เกมส์ Firaxis เก็บถาวรจากต้นฉบับเมื่อวันที่ 2 ธันวาคม 2010
เราได้สร้างเครื่องมือสามระดับ ... ระดับถัดไปมีการรองรับ Python และ XML ทำให้ผู้ดัดแปลงที่มีประสบการณ์มากขึ้นสามารถจัดการกับโลกของเกมและทุกสิ่งในนั้นได้
- ^ "งูใหญ่ภาษา Guide (v1.0)" เอกสาร Google API v1.0 ที่เก็บถาวรจากเดิมเมื่อวันที่ 15 กรกฎาคม 2010
- ^ "การติดตั้งและการใช้งูใหญ่" มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ10 มกราคม 2563 .
- ^ "ภูมิคุ้มกัน: รู้คุณการรักษาความปลอดภัย" ที่เก็บถาวรจากเดิมเมื่อวันที่ 16 กุมภาพันธ์ 2009
- ^ "ความปลอดภัยหลัก" . การรักษาความปลอดภัยหลัก
- ^ "ชูการ์เป็นอะไร" . Labs น้ำตาล สืบค้นเมื่อ11 กุมภาพันธ์ 2555 .
- ^ "คุณสมบัติ 4.0 ใหม่และการแก้ไข" LibreOffice.org มูลนิธิเอกสาร พ.ศ. 2556 . สืบค้นเมื่อ25 กุมภาพันธ์ 2556 .
- ^ "Gotchas สำหรับผู้ใช้งูใหญ่" boo.codehaus.org . มูลนิธิ Codehaus สืบค้นจากต้นฉบับเมื่อวันที่ 11 ธันวาคม 2551 . สืบค้นเมื่อ24 พฤศจิกายน 2551 .
- ^ เอสเตอร์บรูก, ชาร์ลส์ "กิตติกรรมประกาศ" . cobra-language.com . ภาษางูเห่า. สืบค้นเมื่อ7 เมษายน 2553 .
- ^ "ข้อเสนอ: iterators และเครื่องกำเนิดไฟฟ้า [ES4 วิกิพีเดีย]" wiki.ecmascript.org. สืบค้นจากต้นฉบับเมื่อ 20 ตุลาคม 2550 . สืบค้นเมื่อ24 พฤศจิกายน 2551 .
- ^ "คำถามที่พบบ่อย" . เอกสาร Godot เครื่องยนต์
- ^ Kincaid, Jason (10 พฤศจิกายน 2552). "ของ Google Go: ใหม่โปรแกรมภาษาที่ ธ Meets c ++" TechCrunch สืบค้นเมื่อ29 มกราคม 2553 .
- ^ Strachan, James (29 สิงหาคม 2546). "Groovy - การเกิดของภาษาแบบไดนามิกใหม่สำหรับแพลตฟอร์มจาวา" สืบค้นจากต้นฉบับเมื่อ 5 เมษายน 2550 . สืบค้นเมื่อ11 มิถุนายน 2550 .
- ^ Yegulalp, Serdar (16 มกราคม 2017). "ภาษานิมดึงมาจาก Python, Rust, Go และ Lisp ที่ดีที่สุด" InfoWorld
ไวยากรณ์ของ Nim นั้นชวนให้นึกถึง Python เป็นอย่างมากเนื่องจากใช้บล็อกโค้ดเยื้องและไวยากรณ์บางส่วนที่เหมือนกัน (เช่นวิธีการสร้างบล็อก if / elif / then / else)
- ^ "บทสัมภาษณ์ผู้สร้างทับทิม" . Linuxdevcenter.com สืบค้นเมื่อ3 ธันวาคม 2555 .
- ^ Lattner, Chris (3 มิถุนายน 2014). "คริสแลตต์เนอร์ของโฮมเพจ" คริสแลตต์เนอร์ สืบค้นเมื่อ3 มิถุนายน 2557 .
ฉันเริ่มทำงานกับ Swift Programming Language ในเดือนกรกฎาคม 2010 ฉันใช้โครงสร้างภาษาพื้นฐานส่วนใหญ่โดยมีเพียงไม่กี่คนที่รู้ถึงการมีอยู่ของมัน ผู้คน (ที่น่าทึ่ง) อีกสองสามคนเริ่มมีส่วนร่วมอย่างจริงจังในช่วงปลายปี 2554 และกลายเป็นจุดสนใจสำคัญสำหรับกลุ่มเครื่องมือสำหรับนักพัฒนาของ Apple ในเดือนกรกฎาคม 2013 [... ] วาดแนวคิดจาก Objective-C, Rust, Haskell, Ruby, Python, C #, CLU และอื่น ๆ มากเกินไปในรายการ
- ^ คูเปรีส, อันเดรียส; Fellows, Donal K. (14 กันยายน 2543). "เคล็ดลับ # 3: รูปแบบเคล็ดลับ" tcl.tk Tcl ผู้พัฒนา Xchange สืบค้นเมื่อ24 พฤศจิกายน 2551 .
- ^ กุสตาฟส์สัน, ต่อ; Niskanen, Raimo (29 มกราคม 2550). "EEP 1: วัตถุประสงค์และแนวทาง EEP" . erlang.org . สืบค้นเมื่อ19 เมษายน 2554 .
- ^ “ กระบวนการวิวัฒนาการอย่างรวดเร็ว” . สวิฟท์การเขียนโปรแกรมภาษาที่เก็บวิวัฒนาการบน GitHub 18 กุมภาพันธ์ 2020 สืบค้นเมื่อ27 เมษายน 2563 .
แหล่งที่มา
- "งูใหญ่ประดิษฐ์" Wiki.python.org 19 กรกฎาคม 2012 ที่จัดเก็บจากเดิมในวันที่ 1 พฤศจิกายน 2012 สืบค้นเมื่อ3 ธันวาคม 2555 .
- Paine, Jocelyn, ed. (สิงหาคม 2548). "เอไอในงูใหญ่" AI ผู้เชี่ยวชาญจดหมายข่าว แอมซี่!. ที่เก็บถาวรจากเดิมเมื่อวันที่ 26 มีนาคม 2012 สืบค้นเมื่อ11 กุมภาพันธ์ 2555 .
- "PyAIML 0.8.5: งูหลามแพ็คเกจดัชนี" Pypi.python.org . สืบค้นเมื่อ17 กรกฎาคม 2556 .
- รัสเซลสจวร์ตเจและนอร์วิกปีเตอร์ (2552) ปัญญาประดิษฐ์: แนวทางสมัยใหม่ (ฉบับที่ 3) Upper Saddle River, NJ: Prentice Hall ISBN 978-0-13-604259-4.
อ่านเพิ่มเติม
- Downey, Allen B. (พฤษภาคม 2555). Think Python: How to Think Like a Computer Scientist (Version 1.6.6 ed.) ISBN 978-0-521-72596-5.
- แฮมิลตันนาโอมิ (5 สิงหาคม 2551). "อาริโซน่าของการเขียนโปรแกรมภาษา: งูใหญ่" Computerworld . ที่เก็บถาวรจากเดิมเมื่อวันที่ 29 ธันวาคม 2008 สืบค้นเมื่อ31 มีนาคม 2553 .
- ลัทซ์มาร์ค (2013). การเรียนรู้ Python (ฉบับที่ 5) O'Reilly Media ISBN 978-0-596-15806-4.
- ผู้แสวงบุญมาร์ค (2547). ดำน้ำในหลาม Apress. ISBN 978-1-59059-356-1.
- ผู้แสวงบุญมาร์ค (2552). ดำน้ำใน Python 3 Apress. ISBN 978-1-4302-2415-0.
- ซัมเมอร์ฟิลด์มาร์ค (2552). การเขียนโปรแกรมใน Python 3 (2nd ed.) แอดดิสัน - เวสลีย์มืออาชีพ ISBN 978-0-321-68056-3.
ลิงก์ภายนอก
- เว็บไซต์อย่างเป็นทางการ