• logo

Python (ภาษาโปรแกรม)

งูหลามเป็นตีความ ระดับสูง วัตถุประสงค์ทั่วไปการเขียนโปรแกรมภาษา ปรัชญาการออกแบบของงูใหญ่เน้นการอ่านรหัสที่มีการใช้ที่โดดเด่นของการเยื้องอย่างมีนัยสำคัญ ใช้ภาษาโครงสร้างเช่นเดียวกับobject-orientedจุดมุ่งหมายวิธีการที่จะช่วยเหลือโปรแกรมเมอร์เขียนชัดเจนรหัสตรรกะสำหรับโครงการขนาดเล็กและขนาดใหญ่ [29]

Python
โลโก้ Python และ wordmark.svg
กระบวนทัศน์หลายกระบวนทัศน์ : เชิงวัตถุ , [1] ขั้นตอน ( จำเป็น ), การทำงาน , มีโครงสร้าง , สะท้อนแสง
ออกแบบโดยกุยโดฟานรอสซัม
นักพัฒนาPython Software Foundation
ปรากฏตัวครั้งแรกกุมภาพันธ์ 2534 ; 30 ปีที่แล้ว[2] ( พ.ศ. 2534-02 )
การเปิดตัวที่เสถียร
3.9.5 [3]  แก้ไขใน Wikidata / 3 พฤษภาคม 2564 ; 19 วันที่แล้ว ( 3 พ.ค. 2564 )
ดูตัวอย่างรุ่น
3.10.0b1 [3]  แก้ไขใน Wikidata / 3 พฤษภาคม 2564 ; 19 วันที่แล้ว ( 3 พ.ค. 2564 )
วินัยในการพิมพ์เป็ด , ไดนามิก , การพิมพ์ที่แข็งแกร่ง ; [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]
  • การเขียนโปรแกรม Pythonที่ Wikibooks

งูหลามเป็นแบบไดนามิกพิมพ์และขยะที่เก็บรวบรวม มันสนับสนุนหลายกระบวนทัศน์การเขียนโปรแกรมรวมทั้งโครงสร้าง (โดยเฉพาะอย่างยิ่งในการดำเนินการ ) เชิงวัตถุและโปรแกรมการทำงาน งูใหญ่มักจะถูกอธิบายว่าเป็น "แบตเตอรี่รวมถึง" ภาษาเนื่องจากการที่ครอบคลุมมาตรฐานห้องสมุด [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]

ประวัติศาสตร์

Guido van Rossumที่ OSCON 2006

งูหลามได้รู้สึกในช่วงปลายปี 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.5 yieldยังเป็นตัวดำเนินการ รูปแบบนี้จะใช้ในการดำเนินการcoroutines
  • returnคำสั่งที่ใช้ในการส่งกลับค่าจากฟังก์ชั่น
  • importคำสั่งที่ใช้ในการโมดูลนำเข้าที่มีฟังก์ชั่นหรือตัวแปรสามารถนำมาใช้ในโครงการปัจจุบัน มีสามวิธีในการใช้import:
    1. import <module name> [as <alias>]
    2. from <module name> import *
    3. 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 yc ? 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)tt
  • 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 #
  • งูหลามมีดัชนีอาร์เรย์และหั่นอาร์เรย์แสดงออกในรายการแสดงเป็นa[key], หรือ ดัชนีเป็นศูนย์และดัชนีเชิงลบจะสัมพันธ์กับจุดสิ้นสุด Slices ใช้องค์ประกอบจากดัชนีเริ่มต้นจนถึงดัชนีหยุดแต่ไม่รวมถึงดัชนีหยุด พารามิเตอร์ slice ที่สามเรียกว่าstepหรือstrideช่วยให้สามารถข้ามและย้อนกลับองค์ประกอบได้ อาจละเว้นดัชนี Slice ตัวอย่างเช่นส่งคืนสำเนาของรายการทั้งหมด แต่ละองค์ประกอบของชิ้นเป็นสำเนาตื้นๆa[start:stop]a[start:stop:step]a[:]

ในหลามความแตกต่างระหว่างการแสดงออกและงบจะถูกบังคับใช้อย่างเหนียวแน่นในทางตรงกันข้ามกับภาษาเช่นสามัญชัด , โครงการหรือทับทิม สิ่งนี้นำไปสู่การทำซ้ำฟังก์ชันการทำงานบางอย่าง ตัวอย่างเช่น:

  • แสดงรายการความเข้าใจเทียบกับfor-loops
  • นิพจน์เงื่อนไขเทียบกับifบล็อก
  • eval()กับexec()ฟังก์ชั่น (ในหลาม 2 execคือคำสั่ง); อดีตมีไว้สำหรับการแสดงออกส่วนหลังใช้สำหรับคำแถลง

คำสั่งไม่สามารถเป็นส่วนหนึ่งของนิพจน์ดังนั้นรายการและความเข้าใจอื่น ๆ หรือนิพจน์แลมบ์ดาซึ่งเป็นนิพจน์ทั้งหมดไม่สามารถมีคำสั่งได้ กรณีเฉพาะของกรณีนี้คือคำสั่งมอบหมายเช่นไม่สามารถเป็นส่วนหนึ่งของนิพจน์เงื่อนไขของคำสั่งเงื่อนไข สิ่งนี้มีข้อดีในการหลีกเลี่ยงข้อผิดพลาด C แบบคลาสสิกจากการเข้าใจผิดตัวดำเนินการกำหนดสำหรับตัวดำเนินการความเท่าเทียมกันในเงื่อนไข: เป็นรหัส C ที่ถูกต้อง (แต่อาจไม่ได้ตั้งใจ) แต่ทำให้เกิดข้อผิดพลาดทางไวยากรณ์ใน Pythona = 1===if (c = 1) { ... }if c = 1: ...

วิธีการ

เมธอดบนวัตถุคือฟังก์ชันที่แนบมากับคลาสของอ็อบเจ็กต์ ไวยากรณ์คือสำหรับวิธีการปกติและฟังก์ชั่น, น้ำตาลประโยคสำหรับ เมธอด Python มีพารามิเตอร์ที่ชัดเจนในการเข้าถึงข้อมูลอินสแตนซ์ตรงกันข้ามกับนัย(หรือ) ในภาษาโปรแกรมเชิงวัตถุอื่น ๆ (เช่นC ++ , Java , Objective-CหรือRuby ) [97]instance.method(argument)Class.method(instance, argument)selfselfthis

กำลังพิมพ์

ลำดับชั้นประเภทมาตรฐานใน Python 3

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]

สรุปประเภทในตัวของ Python 3
ประเภท ความไม่แน่นอน คำอธิบาย ตัวอย่างไวยากรณ์
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]

1.414

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 + 1b*(a//b) + a%b == aaa%bbb

Python มีroundฟังก์ชันสำหรับปัดเศษ float เป็นจำนวนเต็มที่ใกล้ที่สุด สำหรับผูกทำลาย , Python 3 ใช้รอบที่จะได้ : round(1.5)และทั้งการผลิตround(2.5) [107]รุ่นก่อน 3 ใช้รอบห่างจากศูนย์ : เป็น, คือ [108]2round(0.5)1.0round(-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]

ดูสิ่งนี้ด้วย

  • iconพอร์ทัลการเขียนโปรแกรมคอมพิวเตอร์
  • พอร์ทัลซอฟต์แวร์ฟรีและโอเพ่นซอร์ส
  • ไวยากรณ์และความหมายของ Python
  • pip (ผู้จัดการแพ็คเกจ)
  • การเขียนโปรแกรมที่แตกต่างกัน

อ้างอิง

  1. ^ "ทั่วไปหลามคำถามที่พบบ่อย - งูใหญ่ 3.9.2 เอกสาร" docs.python.org สืบค้นเมื่อ28 มีนาคม 2564 .
  2. ^ ก ข Guttag, John V. (12 สิงหาคม 2559). รู้เบื้องต้นเกี่ยวกับการคำนวณและการเขียนโปรแกรมใช้งูหลาม: ด้วยการประยุกต์ใช้ในการทำความเข้าใจข้อมูล MIT Press. ISBN 978-0-262-52962-4.
  3. ^ ก ข "งูใหญ่ 3.8.10, 3.9.5 และ 3.10.0b1 อยู่ในขณะนี้พร้อมใช้งาน" 3 พฤษภาคม 2021 สืบค้นเมื่อ4 พฤษภาคม 2564 .
  4. ^ "ทำไมงูหลามเป็นภาษาแบบไดนามิกและยังเป็นภาษาพิมพ์มั่น - งูหลามวิกิพีเดีย" wiki.python.org สืบค้นเมื่อ27 มกราคม 2564 .
  5. ^ "PEP 483 - ทฤษฎีของประเภทคำแนะนำ" Python.org
  6. ^ นามสกุลไฟล์. pyo ถูกลบออกใน Python 3.5 ดู PEP 0488
  7. ^ Holth, Moore (30 มีนาคม 2557). "PEP 0441 - การปรับปรุงหลามไปรษณีย์ Application Support" สืบค้นเมื่อ12 พฤศจิกายน 2558 .
  8. ^ "ภาษาสตาร์ลาร์ค" . สืบค้นเมื่อ25 พฤษภาคม 2562 .
  9. ^ ก ข "เหตุใด Python จึงถูกสร้างขึ้นตั้งแต่แรก" . ทั่วไปหลามคำถามที่พบบ่อย มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ22 มีนาคม 2550 .
  10. ^ "Ada 83 Reference Manual (งบเพิ่ม)"
  11. ^ Kuchling, Andrew M. (22 ธันวาคม 2549). "บทสัมภาษณ์ Guido van Rossum (กรกฎาคม 1998)" . amk.ca สืบค้นจากต้นฉบับเมื่อ 1 พฤษภาคม 2550 . สืบค้นเมื่อ12 มีนาคม 2555 .
  12. ^ ก ข "itertools - ฟังก์ชั่นการสร้าง iterators สำหรับการวนลูปที่มีประสิทธิภาพ - งูใหญ่ 3.7.1 เอกสาร" docs.python.org
  13. ^ van Rossum, Guido (1993). "ข้อมูลเบื้องต้นเกี่ยวกับ Python สำหรับโปรแกรมเมอร์ UNIX / C" การดำเนินการของ NLUUG Najaarsconferentie (ดัตช์ UNIX กลุ่มผู้ใช้) CiteSeerX  10.1.1.38.2023 แม้ว่าการออกแบบของ C จะห่างไกลจากอุดมคติ แต่อิทธิพลที่มีต่อ Python ก็มีมาก
  14. ^ ก ข "ชั้นเรียน" . งูหลามกวดวิชา มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ20 กุมภาพันธ์ 2555 . เป็นส่วนผสมของกลไกคลาสที่พบใน C ++ และ Modula-3
  15. ^ ลุนด์เฟรดริก "โทรตามวัตถุ" . effbot.org สืบค้นเมื่อ21 พฤศจิกายน 2560 . แทนที่ "CLU" ด้วย "Python" "record" ด้วย "อินสแตนซ์" และ "ขั้นตอน" ด้วย "ฟังก์ชันหรือวิธีการ" และคุณจะได้รับคำอธิบายเกี่ยวกับโมเดลวัตถุของ Python ที่ค่อนข้างแม่นยำ
  16. ^ Simionato, มิเคเล่ "งูใหญ่ 2.3 วิธีมติสั่งซื้อ" Python Software Foundation วิธีการ C3 นั้นไม่มีส่วนเกี่ยวข้องกับ Python เนื่องจากถูกคิดค้นโดยคนที่ทำงานกับ Dylan และมีการอธิบายไว้ในกระดาษที่มีไว้สำหรับเสียงกระเพื่อม
  17. ^ Kuchling, AM "การเขียนโปรแกรม HOWTO ฟังก์ชั่น" เอกสาร v2.7.2 หลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ9 กุมภาพันธ์ 2555 .
  18. ^ เชเมเนาเออร์, นีล; ปีเตอร์สทิม; Hetland, Magnus Lie (18 พฤษภาคม 2544). "PEP 255 - ง่ายปั่นไฟ" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ9 กุมภาพันธ์ 2555 .
  19. ^ สมิ ธ เควินดี; จิวเวตต์จิมเจ.; มอนทานาโร่ข้าม; แบ็กซ์เตอร์, แอนโธนี (2 กันยายน 2547). "PEP 318 - ตกแต่งสำหรับฟังก์ชั่นและวิธีการ" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ24 กุมภาพันธ์ 2555 .
  20. ^ "เพิ่มเติมเครื่องมือในการควบคุมการไหล" งูหลาม 3 เอกสาร มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ24 กรกฎาคม 2558 .
  21. ^ "CoffeeScript" coffeescript.org .
  22. ^ "การเขียนโปรแกรมภาษา Genie สอน" สืบค้นเมื่อ28 กุมภาพันธ์ 2563 .
  23. ^ "Perl และ Python อิทธิพลใน JavaScript" www.2ality.com . 24 กุมภาพันธ์ 2556 . สืบค้นเมื่อ15 พฤษภาคม 2558 .
  24. ^ Rauschmayer, Axel "บทที่ 3: ธรรมชาติของ JavaScript; อิทธิพล" รีลลี่พูด JavaScript สืบค้นเมื่อ15 พฤษภาคม 2558 .
  25. ^ ก ข "ทำไมเราจึงสร้างจูเลีย" เว็บไซต์ของจูเลีย กุมภาพันธ์ 2555 . สืบค้นเมื่อ5 มิถุนายน 2557 . เราต้องการบางสิ่งที่สามารถใช้งานได้สำหรับการเขียนโปรแกรมทั่วไปเช่น Python [... ]
  26. ^ Ring Team (4 ธันวาคม 2560). "เสียงเรียกเข้าและภาษาอื่น ๆ " . ring-lang.net . วงแหวน -หลัง.
  27. ^ บินี, โอลา (2550). ปฏิบัติ JRuby on Rails Web 2.0 โครงการ: นำ Ruby on Rails เพื่อแพลตฟอร์ม เบิร์กลีย์: APress. น. 3 . ISBN 978-1-59059-881-8.
  28. ^ Lattner, Chris (3 มิถุนายน 2014). "คริสแลตต์เนอร์ของโฮมเพจ" คริสแลตต์เนอร์ สืบค้นเมื่อ3 มิถุนายน 2557 . ภาษา Swift เป็นผลมาจากความพยายามอย่างไม่รู้จักเหน็ดเหนื่อยจากทีมผู้เชี่ยวชาญด้านภาษาผู้เชี่ยวชาญด้านการจัดทำเอกสารนินจาการเพิ่มประสิทธิภาพคอมไพเลอร์และกลุ่มทดลองใช้ภายในที่มีความสำคัญอย่างเหลือเชื่อซึ่งให้ข้อเสนอแนะเพื่อช่วยปรับแต่งและทดสอบแนวคิดในการต่อสู้ แน่นอนว่ามันยังได้รับประโยชน์อย่างมากจากประสบการณ์ที่ได้รับชัยชนะอย่างหนักจากภาษาอื่น ๆ ในสาขาการวาดภาพแนวคิดจาก Objective-C, Rust, Haskell, Ruby, Python, C #, CLU และอื่น ๆ อีกมากมายที่จะแสดงรายการ
  29. ^ Kuhlman, Dave. "งูหลามหนังสือ: เริ่มต้นหลามงูหลามขั้นสูงและการออกกำลังกายงูใหญ่" ส่วน 1.1. สืบค้นจากต้นฉบับ (PDF)เมื่อ 23 มิถุนายน 2555.
  30. ^ "เกี่ยวกับ Python" . มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ24 เมษายน 2555 .ส่วนที่สอง "แฟน ๆ ของ Python ใช้วลี" รวมแบตเตอรี่ "เพื่ออธิบายไลบรารีมาตรฐานซึ่งครอบคลุมตั้งแต่การประมวลผลแบบอะซิงโครนัสไปจนถึงไฟล์ zip"
  31. ^ Rossum, Guido Van (20 มกราคม 2552). "ประวัติความเป็นมาของงูใหญ่: ย่อเส้นเวลาของงูใหญ่" ประวัติความเป็นมาของงูใหญ่ สืบค้นเมื่อ5 มีนาคม 2564 .
  32. ^ ปีเตอร์สัน, เบนจามิน (20 เมษายน 2020). "งูใหญ่ Insider: งูหลาม 2.7.18, รุ่นล่าสุดของงูหลาม 2" ภายในหลาม สืบค้นเมื่อ27 เมษายน 2563 .
  33. ^ ดัชนี TIOBE (ธันวาคม 2020) "ดัชนี TIOBE สำหรับธันวาคม 2020" TIOBE.com . สืบค้นเมื่อ20 ธันวาคม 2563 .
  34. ^ "ดัชนี | TIOBE - บริษัท ซอฟต์แวร์ที่มีคุณภาพ" www.tiobe.com . สืบค้นเมื่อ2 กุมภาพันธ์ 2564 . Python ได้รับรางวัลภาษาโปรแกรม TIOBE แห่งปี! นับเป็นครั้งที่ 4 ในประวัติศาสตร์ซึ่งเป็นบันทึก! ชื่อนี้มอบให้กับภาษาโปรแกรมที่ได้รับความนิยมสูงสุดในหนึ่งปี
  35. ^ "กองมากเกินนักพัฒนาสำรวจ 2020" กองมากเกิน สืบค้นเมื่อ5 มีนาคม 2564 .
  36. ^ "รัฐของผู้พัฒนาระบบนิเวศในปี 2020 Infographic" JetBrains: เครื่องมือสำหรับนักพัฒนาสำหรับมืออาชีพและทีมงาน สืบค้นเมื่อ5 มีนาคม 2564 .
  37. ^ "PYPL PopularitY of Programming Language index" . pypl.github.io สืบค้นเมื่อ26 มีนาคม 2564 .
  38. ^ ก ข Venners, Bill (13 มกราคม 2546). "การสร้างงูหลาม" . Artima นักพัฒนาซอฟต์แวร์ อาร์ติมา. สืบค้นเมื่อ22 มีนาคม 2550 .
  39. ^ van Rossum, Guido (29 สิงหาคม 2543). "SETL (คือ: อุ่นเกี่ยวกับตัวอักษรช่วง)" หลาม Dev (รายชื่อผู้รับจดหมาย) สืบค้นเมื่อ13 มีนาคม 2554 .
  40. ^ van Rossum, Guido (20 มกราคม 2552). "บทสรุปเส้นเวลาของงูใหญ่" ประวัติความเป็นมาของงูใหญ่ สืบค้นเมื่อ20 มกราคม 2552 .
  41. ^ Fairchild, Carlie (12 กรกฎาคม 2018). "กุยรถตู้ซัมก้าวลงจากบทบาทเป็น ธ เผด็จการใจดีเพื่อชีวิต" ลินุกซ์วารสาร สืบค้นเมื่อ13 กรกฎาคม 2561 .
  42. ^ "กุยรถตู้ซัมก้าวลงจากบทบาทเป็น ธ เผด็จการใจดี For Life | Linux Journal" www.linuxjournal.com .
  43. ^ "งูใหญ่เจ้านายกุยรถตู้ซัมขั้นตอนลงหลังจาก 30 ปี" เรอ
  44. ^ "PEP 8100" . หลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ4 พฤษภาคม 2562 .
  45. ^ "PEP 8100" . มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ4 พฤษภาคม 2562 .
  46. ^ "พวงมาลัยรับการเสนอชื่อในสภา: กุยรถตู้ซัม (2020 คำ)" การอภิปรายเกี่ยวกับ Python.org 27 พฤศจิกายน 2562.
  47. ^ Kuchling, น.; Zadka, Moshe (16 ตุลาคม 2543). "มีอะไรใหม่ในหลาม 2.0" มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ11 กุมภาพันธ์ 2555 .
  48. ^ "งูใหญ่ 3.0 ปล่อย" มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ8 กรกฎาคม 2552 .
  49. ^ van Rossum, Guido (5 เมษายน 2549). "PEP 3000 - งูใหญ่ 3000" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม Python Software Foundation สืบค้นจากต้นฉบับเมื่อวันที่ 3 มีนาคม 2559 . สืบค้นเมื่อ27 มิถุนายน 2552 .
  50. ^ "2to3 - อัตโนมัติหลามแปล 2-3 รหัส" docs.python.org สืบค้นเมื่อ2 กุมภาพันธ์ 2564 .
  51. ^ "PEP 373 - งูหลาม 2.7 กำหนดการปล่อย" python.org สืบค้นเมื่อ9 มกราคม 2560 .
  52. ^ "PEP 466 - การเพิ่มประสิทธิภาพการรักษาความปลอดภัยเครือข่ายสำหรับหลาม 2.7.x" python.org สืบค้นเมื่อ9 มกราคม 2560 .
  53. ^ "เลิกใช้งูหลาม 2" Python.org สืบค้นเมื่อ22 กันยายน 2562 .
  54. ^ "PEP 373 - งูหลาม 2.7 กำหนดการปล่อย" Python.org สืบค้นเมื่อ22 กันยายน 2562 .
  55. ^ "งูใหญ่นักพัฒนาคู่มือ - คู่มือหลามนักพัฒนา" devguide.python.org สืบค้นเมื่อ17 ธันวาคม 2562 .
  56. ^ Langa, Łukasz (19 กุมภาพันธ์ 2564). "งูใหญ่ Insider: งูหลาม 3.9.2 และ 3.8.8 ที่มีตอนนี้" ภายในหลาม สืบค้นเมื่อ26 กุมภาพันธ์ 2564 .
  57. ^ "หมวกสีแดงของลูกค้าพอร์ทัล - การเข้าถึง 24x7 การสนับสนุนและความรู้" access.redhat.com . สืบค้นเมื่อ26 กุมภาพันธ์ 2564 .
  58. ^ "CVE - CVE-2021-3177" cve.mitre.org . สืบค้นเมื่อ26 กุมภาพันธ์ 2564 .
  59. ^ "CVE - CVE-2021-23336" cve.mitre.org . สืบค้นเมื่อ26 กุมภาพันธ์ 2564 .
  60. ^ The Cain Gang Ltd. "Python Metaclasses: ใครทำไมเมื่อไหร่" (PDF) สืบค้นจากต้นฉบับ (PDF)เมื่อ 30 พฤษภาคม 2552 . สืบค้นเมื่อ27 มิถุนายน 2552 .
  61. ^ "3.3. ชื่อวิธีพิเศษ" . อ้างอิงภาษา Python มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ27 มิถุนายน 2552 .
  62. ^ "PyDBC: ปัจจัยพื้นฐานวิธี postconditions วิธีการและค่าคงที่ระดับงูใหญ่" สืบค้นเมื่อ24 กันยายน 2554 .
  63. ^ "สัญญาสำหรับ Python" . สืบค้นเมื่อ24 กันยายน 2554 .
  64. ^ "PyDatalog" . สืบค้นเมื่อ22 กรกฎาคม 2555 .
  65. ^ "การขยายและการฝังหลามล่าม: นับอ้างอิง" Docs.python.org สืบค้นเมื่อ5 มิถุนายน 2563 . เนื่องจาก Python ใช้งานหนักmalloc()และfree()จำเป็นต้องมีกลยุทธ์เพื่อหลีกเลี่ยงการรั่วไหลของหน่วยความจำรวมถึงการใช้หน่วยความจำที่ว่าง วิธีที่ได้รับการแต่งตั้งเป็นที่เรียกว่านับการอ้างอิง
  66. ^ ก ข Hettinger, Raymond (30 มกราคม 2545). "PEP 289 - เครื่องปั่นไฟนิพจน์" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ19 กุมภาพันธ์ 2555 .
  67. ^ "6.5 itertools - ฟังก์ชั่นการสร้าง iterators สำหรับการวนลูปที่มีประสิทธิภาพ" Docs.python.org สืบค้นเมื่อ22 พฤศจิกายน 2559 .
  68. ^ ก ข ปีเตอร์สทิม (19 สิงหาคม 2547). "PEP 20 - เซนของงูใหญ่" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ24 พฤศจิกายน 2551 .
  69. ^ มาร์เตลลี, อเล็กซ์; เรเวนสครอฟต์, แอนนา; แอสเชอร์เดวิด (2548). งูหลามตำราฉบับที่ 2 O'Reilly สื่อ น. 230. ISBN 978-0-596-00797-3.
  70. ^ “ วัฒนธรรมงูใหญ่” . ebeab . 21 มกราคม 2014 ที่จัดเก็บจากเดิมในวันที่ 30 มกราคม 2014
  71. ^ "นายพลหลามคำถามที่พบบ่อย" เอกสาร v2.7.3 หลาม Docs.python.org สืบค้นเมื่อ4 มิถุนายน 2563 .
  72. ^ "15 วิธีหลามเป็นพลังกองทัพบนเว็บ"
  73. ^ "8.18 pprint. - ข้อมูลเครื่องพิมพ์สวย - งูใหญ่ 3.8.3 เอกสาร" docs.python.org
  74. ^ คลาร์กโรเบิร์ต (26 เมษายน 2019). "จะเป็น Pythonic ได้อย่างไรและทำไมคุณถึงต้องดูแล" . กลาง
  75. ^ "สไตล์รหัสที่มา - ที่โบกรถเพื่อให้งูใหญ่" docs.python-guide.org
  76. ^ กู๊ดเจอร์เดวิด "รหัสเหมือน pythonista: สำนวนงูใหญ่" ที่เก็บถาวรจากเดิมเมื่อวันที่ 27 พฤษภาคม 2014 สืบค้นเมื่อ24 มีนาคม 2552 .
  77. ^ “ วิธีคิดแบบ Pythonista” .
  78. ^ "Python เป็นภาษาที่ดีสำหรับโปรแกรมเมอร์ระดับเริ่มต้นหรือไม่" . ทั่วไปหลามคำถามที่พบบ่อย มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ21 มีนาคม 2550 .
  79. ^ "เรื่องราวเกี่ยวกับการเยื้องในงูใหญ่" Secnetix.de สืบค้นเมื่อ19 เมษายน 2554 .
  80. ^ "PEP ที่ 8 - คู่มือสไตล์สำหรับงูหลามรหัส" Python.org
  81. ^ "งูใหญ่ 2.5 ปล่อย" Python.org
  82. ^ "ไฮไลท์: งูใหญ่ 2.5" Python.org
  83. ^ van Rossum, Guido (22 เมษายน 2552). "การกำจัดหางซ้ำ" . Neopythonic.blogspot.be . สืบค้นเมื่อ3 ธันวาคม 2555 .
  84. ^ van Rossum, Guido (9 กุมภาพันธ์ 2549). "การออกแบบภาษาไม่ได้เป็นเพียงการแก้ปริศนา" ฟอรั่ม Artima อาร์ติมา. สืบค้นเมื่อ21 มีนาคม 2550 .
  85. ^ ฟานรอสซัม, กุยโด; Eby, Phillip J. (10 พฤษภาคม 2548). "PEP 342 - Coroutines ผ่านเครื่องกำเนิดไฟฟ้าที่เพิ่มขึ้น" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ19 กุมภาพันธ์ 2555 .
  86. ^ "กปภ 380" . Python.org สืบค้นเมื่อ3 ธันวาคม 2555 .
  87. ^ "กอง" . python.org
  88. ^ "PEP 0465 - ผู้ประกอบการมัดเฉพาะสำหรับการคูณเมทริกซ์" python.org สืบค้นเมื่อ1 มกราคม 2559 .
  89. ^ "งูใหญ่ 3.5.1 ที่วางจำหน่ายและการเปลี่ยนแปลง" python.org สืบค้นเมื่อ1 มกราคม 2559 .
  90. ^ "มีอะไรใหม่ในหลาม 3.8" สืบค้นเมื่อ14 ตุลาคม 2562 .
  91. ^ "บทที่ 15. นิพจน์ - 15.21.1. ตัวดำเนินการความเท่าเทียมกันเชิงตัวเลข == และ! =" . ออราเคิลคอร์ปอเรชั่น สืบค้นเมื่อ28 สิงหาคม 2559 .
  92. ^ "บทที่ 15. นิพจน์ - 15.21.3. Reference Equality Operators == and! =" . ออราเคิลคอร์ปอเรชั่น สืบค้นเมื่อ28 สิงหาคม 2559 .
  93. ^ ฟานรอสซัม, กุยโด; Hettinger, Raymond (7 กุมภาพันธ์ 2546). "PEP 308 - เงื่อนไขการแสดงออก" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ13 กรกฎาคม 2554 .
  94. ^ "4 ในตัวชนิด - งูหลาม 3.6.3rc1 เอกสาร" python.org สืบค้นเมื่อ1 ตุลาคม 2560 .
  95. ^ "5.3 Tuples และลำดับ. - งูหลาม 3.7.1rc2 เอกสาร" python.org สืบค้นเมื่อ17 ตุลาคม 2561 .
  96. ^ ก ข "PEP 498 - ตัวอักษร String แก้ไข" python.org สืบค้นเมื่อ8 มีนาคม 2560 .
  97. ^ "เหตุใดจึงต้องใช้" self "อย่างชัดเจนในคำจำกัดความและการเรียกของวิธีการ" . การออกแบบและประวัติศาสตร์คำถามที่พบบ่อย มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ19 กุมภาพันธ์ 2555 .
  98. ^ "ภาษา Python อ้างอิงมาตรา 3.3. ใหม่สไตล์และการเรียนคลาสสิกสำหรับการเปิดตัว 2.7.1" สืบค้นเมื่อ12 มกราคม 2554 .
  99. ^ "พิมพ์พูดเป็นนัยสำหรับงูใหญ่" LWN.net 24 ธันวาคม 2557 . สืบค้นเมื่อ5 พฤษภาคม 2558 .
  100. ^ "mypy - เลือกคงพิมพ์ดีดสำหรับงูใหญ่" สืบค้นเมื่อ28 มกราคม 2560 .
  101. ^ "15. Floating Point เลขคณิต: ปัญหาและข้อ จำกัด - งูใหญ่ 3.8.3 เอกสาร" docs.python.org สืบค้นเมื่อ6 มิถุนายน 2563 . เกือบทุกเครื่องในวันนี้ (พฤศจิกายน 2000) ใช้เลขคณิตจุดลอยตัว IEEE-754 และแพลตฟอร์มเกือบทั้งหมดที่แมป Python ลอยไปที่ IEEE-754“ ความแม่นยำสองเท่า”
  102. ^ แซดก้า, โมเช; van Rossum, Guido (11 มีนาคม 2544). "PEP 237 - Unifying ยาวจำนวนเต็มและจำนวนเต็ม" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ24 กันยายน 2554 .
  103. ^ "ในตัวชนิด" สืบค้นเมื่อ3 ตุลาคม 2562 .
  104. ^ "PEP 465 - ผู้ประกอบการมัดเฉพาะสำหรับการคูณเมทริกซ์" python.org
  105. ^ ก ข แซดก้า, โมเช; van Rossum, Guido (11 มีนาคม 2544). "PEP 238 - การเปลี่ยนผู้ดำเนินการกอง" . ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ23 ตุลาคม 2556 .
  106. ^ "ทำไมชั้น ธ จำนวนเต็มกอง" สืบค้นเมื่อ25 สิงหาคม 2553 .
  107. ^ "round" , The Python standard library, release 3.2, §2: Built-in functions , สืบค้นเมื่อ14 August 2011
  108. ^ "round" , The Python standard library, release 2.7, §2: Built-in functions , สืบค้นเมื่อ14 August 2011
  109. ^ บีซลีย์เดวิดเอ็ม. (2552). ข้อมูลอ้างอิงที่จำเป็นของ Python (ฉบับที่ 4) น. 66 .
  110. ^ เคอนิแกนไบรอันดับเบิลยู; Ritchie, Dennis M. (1988). ภาษาการเขียนโปรแกรม C (2nd ed.) น. 206 .
  111. ^ บาติสตาฟาซุนโด. "PEP 0327 - สิบชนิดของข้อมูล" Python.org สืบค้นเมื่อ26 กันยายน 2558 .
  112. ^ "มีอะไรใหม่ในหลาม 2.6 - เอกสาร v2.6.9 งูใหญ่" docs.python.org สืบค้นเมื่อ26 กันยายน 2558 .
  113. ^ "10 เหตุผลที่หลาม Rocks เพื่อการวิจัย (และไม่กี่เหตุผลที่มันไม่ได้) - ฮอยต์ Koepke" www.stat.washington.edu . สืบค้นเมื่อ3 กุมภาพันธ์ 2562 .
  114. ^ เชลล์สก็อตต์ (17 มิถุนายน 2557). "แนะนำให้รู้จักกับงูหลามสำหรับการคำนวณทางวิทยาศาสตร์" (PDF) สืบค้นเมื่อ3 กุมภาพันธ์ 2562 .
  115. ^ Piotrowski, Przemyslaw (กรกฎาคม 2549) "สร้างสภาพแวดล้อมการพัฒนาอย่างรวดเร็วเว็บสำหรับ Server Pages งูหลามและ Oracle" เครือข่ายเทคโนโลยีของออราเคิล คำพยากรณ์ สืบค้นเมื่อ12 มีนาคม 2555 .
  116. ^ Batista, Facundo (17 ตุลาคม 2546). "PEP 327 - สิบชนิดของข้อมูล" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ24 พฤศจิกายน 2551 .
  117. ^ Eby, Phillip J. (7 ธันวาคม 2546). "PEP 333 - งูหลาม Web Server Gateway Interface v1.0" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ19 กุมภาพันธ์ 2555 .
  118. ^ เดบิล, เอริก. "เคานต์โมดูล" ModuleCounts สืบค้นเมื่อ2 กุมภาพันธ์ 2564 .
  119. ^ Enthought, Canopy "เรือนยอด" . www.enthought.com . สืบค้นเมื่อ20 สิงหาคม 2559 .
  120. ^ "บุรุษไปรษณีย์ 3 ทำไมเราจะไม่อนุญาตให้ใช้ C11 หรือไม่ - งูใหญ่ Dev - python.org" mail.python.org สืบค้นเมื่อ1 มีนาคม 2564 .
  121. ^ "ออก 35473: Intel คอมไพเลอร์ (ICC) ไม่สนับสนุน C11 คุณสมบัติรวมทั้งอะตอม - งูหลามติดตาม" bugs.python.org สืบค้นเมื่อ1 มีนาคม 2564 .
  122. ^ "4 อาคาร C และ C ++ ส่วนขยาย - งูใหญ่ 3.9.2 เอกสาร" docs.python.org สืบค้นเมื่อ1 มีนาคม 2564 .
  123. ^ van Rossum, Guido (5 มิถุนายน 2544). "PEP 7 - คู่มือสไตล์สำหรับ C Code" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ24 พฤศจิกายน 2551 .
  124. ^ "รหัสไบต์ CPython" Docs.python.org สืบค้นเมื่อ16 กุมภาพันธ์ 2559 .
  125. ^ "งูใหญ่ 2.5 internals" (PDF) สืบค้นเมื่อ19 เมษายน 2554 .
  126. ^ "การเปลี่ยนแปลง - งูใหญ่ 3.9.0 เอกสาร" docs.python.org สืบค้นเมื่อ8 กุมภาพันธ์ 2564 .
  127. ^ "ดาวน์โหลดงูใหญ่" Python.org สืบค้นเมื่อ13 ธันวาคม 2563 .
  128. ^ "ประวัติศาสตร์ [vmspython]" www.vmspython.org . สืบค้นเมื่อ4 ธันวาคม 2563 .
  129. ^ "สัมภาษณ์กับกุยรถตู้ซัม" Oreilly.com สืบค้นเมื่อ24 พฤศจิกายน 2551 .
  130. ^ "ดาวน์โหลดหลามสำหรับแพลตฟอร์มอื่น ๆ" Python.org สืบค้นเมื่อ4 ธันวาคม 2563 .
  131. ^ "เข้ากันได้ PyPy" Pypy.org . สืบค้นเมื่อ3 ธันวาคม 2555 .
  132. ^ "การเปรียบเทียบความเร็วระหว่าง CPython และ Pypy" Speed.pypy.org . สืบค้นเมื่อ3 ธันวาคม 2555 .
  133. ^ "งานระดับ Stackless มี - PyPy 2.0.2 เอกสาร" Doc.pypy.org สืบค้นเมื่อ17 กรกฎาคม 2556 .
  134. ^ "งูใหญ่สำหรับ EV3" LEGO การศึกษา สืบค้นเมื่อ17 เมษายน 2562 .
  135. ^ Yegulalp, Serdar (29 ตุลาคม 2020). "ผลตอบแทน Pyston จากความตายเพื่อเพิ่มความเร็วในงูใหญ่" InfoWorld สืบค้นเมื่อ26 มกราคม 2564 .
  136. ^ "ถ่าน: ส้อมผลการดำเนินงานที่มุ่งเน้น Instagram ของ CPython" สืบค้นเมื่อ4 พฤษภาคม 2564 .
  137. ^ "แผนสำหรับการเพิ่มประสิทธิภาพงูใหญ่" โครงการของ Google โฮสติ้ง 15 ธันวาคม 2552 . สืบค้นเมื่อ24 กันยายน 2554 .
  138. ^ "งูใหญ่บน Nokia N900" stochastic เรขาคณิต 29 เมษายน 2553.
  139. ^ "Nuitka Home | Nuitka Home" . nuitka.net สืบค้นเมื่อ18 สิงหาคม 2560 .
  140. ^ Borderies, Olivier (24 มกราคม 2019). "Pythran: Python ที่ความเร็ว C ++!" . กลาง
  141. ^ "Pythran - Pythran 0.9.5 เอกสาร" pythran.readthedocs.io
  142. ^ http://conference.scipy.org/proceedings/scipy2013/html/pdfs/guelton.pdf
  143. ^ "google / ไม่พอใจ" 10 เมษายน 2020 - ผ่าน GitHub
  144. ^ "โครงการ" . opensource.google .
  145. ^ Francisco, Thomas Claburn ในซาน "รหัส Grumpy ของ Google ทำให้งูหลามไป" www.theregister.com .
  146. ^ "IronPython.net /" ironpython.net สืบค้นเมื่อ22 เมษายน 2564 .
  147. ^ "Jython คำถามที่พบบ่อย" www.jython.org . สืบค้นเมื่อ22 เมษายน 2564 .
  148. ^ "ไบรตัน" . brython.info สืบค้นเมื่อ21 มกราคม 2564 .
  149. ^ "Transcrypt - งูหลามในเบราว์เซอร์" transcrypt.org สืบค้นเมื่อ22 ธันวาคม 2563 .
  150. ^ "Transcrypt: กายวิภาคของงูหลาม JavaScript คอมไพเลอร์" InfoQ
  151. ^ Murri, Riccardo (2013). ผลการดำเนินงานของงูใหญ่ runtimes ในรหัสทางวิทยาศาสตร์ที่ไม่ใช่ตัวเลข European Conference on Python in Science (EuroSciPy) arXiv : 1404.6388 รหัสไปรษณีย์ : 2014arXiv1404.6388M .
  152. ^ "คอมพิวเตอร์ภาษามาตรฐานเกม" สืบค้นเมื่อ30 เมษายน 2563 .
  153. ^ ก ข วอร์ซอแบร์รี่; ฮิลตัน, เจเรมี; กู๊ดเจอร์เดวิด (13 มิถุนายน 2543). "PEP 1 - วัตถุประสงค์และแนวทางของ PEP" . ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ19 เมษายน 2554 .
  154. ^ "PEP ที่ 8 - คู่มือสไตล์สำหรับงูหลามรหัส" Python.org
  155. ^ ปืนใหญ่เบร็ตต์ "กุยคนบางคนและรายชื่อผู้รับจดหมาย: วิธีหลามมีการพัฒนา" python.org Python Software Foundation สืบค้นจากต้นฉบับเมื่อ 1 มิถุนายน 2552 . สืบค้นเมื่อ27 มิถุนายน 2552 .
  156. ^ "งูใหญ่นักพัฒนาคู่มือ - คู่มือหลามนักพัฒนา" devguide.python.org
  157. ^ "PEP 602 - ประจำปีที่วางจำหน่ายวงจรสำหรับงูใหญ่" Python.org สืบค้นเมื่อ6 พฤศจิกายน 2562 .
  158. ^ "การเปลี่ยนหลามปล่อยจังหวะ [LWN.net]" lwn.net สืบค้นเมื่อ6 พฤศจิกายน 2562 .
  159. ^ Norwitz, Neal (8 เมษายน 2545). "ตาราง [หลาม-Dev] รีลีส (เป็นความเสถียรและการเปลี่ยนแปลง)" สืบค้นเมื่อ27 มิถุนายน 2552 .
  160. ^ ก ข Aahz; แบ็กซ์เตอร์, แอนโธนี (15 มีนาคม 2544). "PEP 6 - ข่าวแก้ไขข้อผิดพลาด" ข้อเสนอการเพิ่มประสิทธิภาพของงูหลาม มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ27 มิถุนายน 2552 .
  161. ^ "งูใหญ่ Buildbot" คู่มือหลามของนักพัฒนา มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ24 กันยายน 2554 .
  162. ^ "1. ขยายหลามกับ C หรือ C ++ - งูใหญ่ 3.9.1 เอกสาร" docs.python.org สืบค้นเมื่อ14 กุมภาพันธ์ 2564 .
  163. ^ "PEP 623 - ลบ wstr จาก Unicode" Python.org สืบค้นเมื่อ14 กุมภาพันธ์ 2564 .
  164. ^ "PEP 634 - โครงสร้างการจับคู่แบบ: ข้อมูลจำเพาะ" Python.org สืบค้นเมื่อ14 กุมภาพันธ์ 2564 .
  165. ^ "เครื่องมือจัดทำเอกสาร" . Python.org สืบค้นเมื่อ22 มีนาคม 2564 .
  166. ^ ก ข "ล้างความอยากอาหารของคุณ" . งูหลามกวดวิชา มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ20 กุมภาพันธ์ 2555 .
  167. ^ "ใน Python ฉันควรใช้ตัวอื่นหลังจากกลับมาใน if block หรือไม่" . กองมากเกิน กองแลกเปลี่ยน 17 กุมภาพันธ์ 2554 . สืบค้นเมื่อ6 พฤษภาคม 2554 .
  168. ^ ลัทซ์มาร์ค (2552). การเรียนรู้หลาม: ประสิทธิภาพการเขียนโปรแกรมเชิงวัตถุ O'Reilly Media, Inc. หน้า 17. ISBN 9781449379322.
  169. ^ Fehily, Chris (2002). หลาม พีชพิทเพรส. น. xv. ISBN 9780201748840.
  170. ^ "ดัชนี TIOBE" . TIOBE - บริษัท สืบค้นเมื่อ26 กุมภาพันธ์ 2564 .
  171. ^ เบลคผู้แต่งทรอย (18 มกราคม 2564). "ดัชนี TIOBE ประจำเดือนมกราคม 2564" . ข่าวเทคโนโลยีและสารสนเทศโดย SeniorDBA สืบค้นเมื่อ26 กุมภาพันธ์ 2564 .
  172. ^ TIOBE Software Index (2015). "การเขียนโปรแกรม TIOBE ชุมชนดัชนีงูใหญ่" สืบค้นเมื่อ10 กันยายน 2558 .
  173. ^ Prechelt, Lutz (14 มีนาคม 2543). "การเปรียบเทียบเชิงประจักษ์ของ C, C ++, Java, Perl, Python, REXX และ Tcl" (PDF) สืบค้นเมื่อ30 สิงหาคม 2556 .
  174. ^ "คำคมเกี่ยวกับ Python" . มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ8 มกราคม 2555 .
  175. ^ "องค์กรที่ใช้งูใหญ่" มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ15 มกราคม 2552 .
  176. ^ "งูใหญ่: Holy Grail ของการเขียนโปรแกรม" เซิร์น Bulletin CERN Publications (31/2006). 31 กรกฎาคม 2549 . สืบค้นเมื่อ11 กุมภาพันธ์ 2555 .
  177. ^ Shafer, Daniel G. (17 มกราคม 2546). "งูใหญ่คล่องตัวกระสวยอวกาศออกแบบภารกิจ" มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ24 พฤศจิกายน 2551 .
  178. ^ "ทอร์นาโด: Facebook ของ Real-Time เว็บกรอบหลาม - Facebook สำหรับนักพัฒนา" Facebook สำหรับนักพัฒนา สืบค้นเมื่อ19 มิถุนายน 2561 .
  179. ^ "สิ่งที่พลัง Instagram: ร้อยอินสแตนซ์นับสิบของเทคโนโลยี" วิศวกรรม Instagram สืบค้นเมื่อ27 พฤษภาคม 2562 .
  180. ^ "วิธีที่เราใช้งูหลามที่ Spotify" Spotify Labs 20 มีนาคม 2556 . สืบค้นเมื่อ25 กรกฎาคม 2561 .
  181. ^ Fortenberry, Tim (17 มกราคม 2546). "ไฟเวทมนตร์ & อุตสาหกรรมทำงานบนงูใหญ่" มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ11 กุมภาพันธ์ 2555 .
  182. ^ Taft, Darryl K. (5 มีนาคม 2550). "งูใหญ่ slithers เข้าสู่ระบบ" eWeek.com Ziff เดวิสโฮลดิ้ง สืบค้นเมื่อ24 กันยายน 2554 .
  183. ^ GitHub - reddit-archive / reddit: รหัสประวัติศาสตร์จาก reddit.com , The Reddit Archives , สืบค้นเมื่อ20 มีนาคม 2019
  184. ^ "สถิติการใช้งานและส่วนแบ่งตลาดของงูใหญ่สำหรับเว็บไซต์" 2555 . สืบค้นเมื่อ18 ธันวาคม 2555 .
  185. ^ Oliphant, Travis (2007). "งูใหญ่สำหรับการคำนวณทางวิทยาศาสตร์" การคำนวณทางวิทยาศาสตร์และวิศวกรรม 9 (3): 10–20. Bibcode : 2007CSE ..... 9c..10O . CiteSeerX  10.1.1.474.6460 ดอย : 10.1109 / MCSE.2007.58 . S2CID  206457124 .
  186. ^ มิลล์แมน, K. Jarrod; Aivazis, Michael (2011). "งูใหญ่สำหรับนักวิทยาศาสตร์และวิศวกร" การคำนวณทางวิทยาศาสตร์และวิศวกรรม 13 (2): 9–12. รหัสไปรษณีย์ : 2011CSE .... 13b ... 9M . ดอย : 10.1109 / MCSE.2011.36 .
  187. ^ Science education with SageMath , Innovative Computing in Science Education , สืบค้นเมื่อ22 April 2019
  188. ^ "OpenCV: OpenCV หลามสอน" docs.opencv.org สืบค้นเมื่อ14 กันยายน 2563 .
  189. ^ คณบดีเจฟฟ์ ; มงกา, ราช; และคณะ (9 พฤศจิกายน 2558). "TensorFlow: ขนาดใหญ่เครื่องเรียนรู้เกี่ยวกับระบบที่แตกต่าง" (PDF) TensorFlow.org การวิจัยของ Google สืบค้นเมื่อ10 พฤศจิกายน 2558 .
  190. ^ Piatetsky, Gregory "งูใหญ่กินไปที่ R: ซอฟแวร์ยอดนิยมสำหรับ Analytics, ข้อมูลวิทยาศาสตร์การเรียนรู้เครื่องในปี 2018: แนวโน้มและการวิเคราะห์" KD นักเก็ต KD นักเก็ต สืบค้นเมื่อ30 พฤษภาคม 2561 .
  191. ^ "ใครใช้ scikit เรียนรู้? - scikit เรียนรู้เอกสาร 0.20.1" scikit-learn.org .
  192. ^ Jouppi นอร์ม "Google supercharges งานเครื่องการเรียนรู้ด้วยชิปที่กำหนดเอง TPU" บล็อกของ Google Cloud Platform สืบค้นเมื่อ19 พฤษภาคม 2559 .
  193. ^ "ภาษาธรรมชาติ Toolkit - NLTK 3.5b1 เอกสาร" www.nltk.org .
  194. ^ "ติดตั้งสำหรับ GIMP สำหรับ Windows - คำถามที่พบบ่อย" 26 กรกฎาคม 2013 ที่จัดเก็บจากเดิมในวันที่ 17 กรกฎาคม 2013 สืบค้นเมื่อ26 กรกฎาคม 2556 .
  195. ^ "psp9components JASC" สืบค้นจากต้นฉบับเมื่อ 19 มีนาคม 2551.
  196. ^ "เกี่ยวกับการเริ่มต้นกับการเขียนสคริปต์ Geoprocessing" ArcGIS สก์ท็อปช่วยเหลือ 9.2 สถาบันวิจัยระบบสิ่งแวดล้อม. 17 พฤศจิกายน 2549 . สืบค้นเมื่อ11 กุมภาพันธ์ 2555 .
  197. ^ CCP porkbelly (24 สิงหาคม 2553). "Stackless Python 2.7" EVE ชุมชน Dev บล็อก เกมส์ CCP อย่างที่คุณทราบ EVE มีภาษาการเขียนโปรแกรมที่เรียกว่า Stackless Python เป็นหลัก
  198. ^ Caudill, Barry (20 กันยายน 2548). "Modding Sid Meier's Civilization IV" . ซิดไมเออร์อารยธรรม IV บล็อกของนักพัฒนา เกมส์ Firaxis เก็บถาวรจากต้นฉบับเมื่อวันที่ 2 ธันวาคม 2010 เราได้สร้างเครื่องมือสามระดับ ... ระดับถัดไปมีการรองรับ Python และ XML ทำให้ผู้ดัดแปลงที่มีประสบการณ์มากขึ้นสามารถจัดการกับโลกของเกมและทุกสิ่งในนั้นได้
  199. ^ "งูใหญ่ภาษา Guide (v1.0)" เอกสาร Google API v1.0 ที่เก็บถาวรจากเดิมเมื่อวันที่ 15 กรกฎาคม 2010
  200. ^ "การติดตั้งและการใช้งูใหญ่" มูลนิธิซอฟต์แวร์หลาม สืบค้นเมื่อ10 มกราคม 2563 .
  201. ^ "ภูมิคุ้มกัน: รู้คุณการรักษาความปลอดภัย" ที่เก็บถาวรจากเดิมเมื่อวันที่ 16 กุมภาพันธ์ 2009
  202. ^ "ความปลอดภัยหลัก" . การรักษาความปลอดภัยหลัก
  203. ^ "ชูการ์เป็นอะไร" . Labs น้ำตาล สืบค้นเมื่อ11 กุมภาพันธ์ 2555 .
  204. ^ "คุณสมบัติ 4.0 ใหม่และการแก้ไข" LibreOffice.org มูลนิธิเอกสาร พ.ศ. 2556 . สืบค้นเมื่อ25 กุมภาพันธ์ 2556 .
  205. ^ "Gotchas สำหรับผู้ใช้งูใหญ่" boo.codehaus.org . มูลนิธิ Codehaus สืบค้นจากต้นฉบับเมื่อวันที่ 11 ธันวาคม 2551 . สืบค้นเมื่อ24 พฤศจิกายน 2551 .
  206. ^ เอสเตอร์บรูก, ชาร์ลส์ "กิตติกรรมประกาศ" . cobra-language.com . ภาษางูเห่า. สืบค้นเมื่อ7 เมษายน 2553 .
  207. ^ "ข้อเสนอ: iterators และเครื่องกำเนิดไฟฟ้า [ES4 วิกิพีเดีย]" wiki.ecmascript.org. สืบค้นจากต้นฉบับเมื่อ 20 ตุลาคม 2550 . สืบค้นเมื่อ24 พฤศจิกายน 2551 .
  208. ^ "คำถามที่พบบ่อย" . เอกสาร Godot เครื่องยนต์
  209. ^ Kincaid, Jason (10 พฤศจิกายน 2552). "ของ Google Go: ใหม่โปรแกรมภาษาที่ ธ Meets c ++" TechCrunch สืบค้นเมื่อ29 มกราคม 2553 .
  210. ^ Strachan, James (29 สิงหาคม 2546). "Groovy - การเกิดของภาษาแบบไดนามิกใหม่สำหรับแพลตฟอร์มจาวา" สืบค้นจากต้นฉบับเมื่อ 5 เมษายน 2550 . สืบค้นเมื่อ11 มิถุนายน 2550 .
  211. ^ Yegulalp, Serdar (16 มกราคม 2017). "ภาษานิมดึงมาจาก Python, Rust, Go และ Lisp ที่ดีที่สุด" InfoWorld ไวยากรณ์ของ Nim นั้นชวนให้นึกถึง Python เป็นอย่างมากเนื่องจากใช้บล็อกโค้ดเยื้องและไวยากรณ์บางส่วนที่เหมือนกัน (เช่นวิธีการสร้างบล็อก if / elif / then / else)
  212. ^ "บทสัมภาษณ์ผู้สร้างทับทิม" . Linuxdevcenter.com สืบค้นเมื่อ3 ธันวาคม 2555 .
  213. ^ Lattner, Chris (3 มิถุนายน 2014). "คริสแลตต์เนอร์ของโฮมเพจ" คริสแลตต์เนอร์ สืบค้นเมื่อ3 มิถุนายน 2557 . ฉันเริ่มทำงานกับ Swift Programming Language ในเดือนกรกฎาคม 2010 ฉันใช้โครงสร้างภาษาพื้นฐานส่วนใหญ่โดยมีเพียงไม่กี่คนที่รู้ถึงการมีอยู่ของมัน ผู้คน (ที่น่าทึ่ง) อีกสองสามคนเริ่มมีส่วนร่วมอย่างจริงจังในช่วงปลายปี 2554 และกลายเป็นจุดสนใจสำคัญสำหรับกลุ่มเครื่องมือสำหรับนักพัฒนาของ Apple ในเดือนกรกฎาคม 2013 [... ] วาดแนวคิดจาก Objective-C, Rust, Haskell, Ruby, Python, C #, CLU และอื่น ๆ มากเกินไปในรายการ
  214. ^ คูเปรีส, อันเดรียส; Fellows, Donal K. (14 กันยายน 2543). "เคล็ดลับ # 3: รูปแบบเคล็ดลับ" tcl.tk Tcl ผู้พัฒนา Xchange สืบค้นเมื่อ24 พฤศจิกายน 2551 .
  215. ^ กุสตาฟส์สัน, ต่อ; Niskanen, Raimo (29 มกราคม 2550). "EEP 1: วัตถุประสงค์และแนวทาง EEP" . erlang.org . สืบค้นเมื่อ19 เมษายน 2554 .
  216. ^ “ กระบวนการวิวัฒนาการอย่างรวดเร็ว” . สวิฟท์การเขียนโปรแกรมภาษาที่เก็บวิวัฒนาการบน 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.

ลิงก์ภายนอก

Pythonที่โครงการน้องสาวของวิกิพีเดีย
  • สื่อจาก Wikimedia Commons
  • ใบเสนอราคาจาก Wikiquote
  • ตำราจาก Wikibooks
  • แหล่งข้อมูลจาก Wikiversity
  • ข้อมูลจาก Wikidata
  • เว็บไซต์อย่างเป็นทางการ Edit this at Wikidata
Language
  • Thai
  • Français
  • Deutsch
  • Arab
  • Português
  • Nederlands
  • Türkçe
  • Tiếng Việt
  • भारत
  • 日本語
  • 한국어
  • Hmoob
  • ខ្មែរ
  • Africa
  • Русский

©Copyright This page is based on the copyrighted Wikipedia article "/wiki/Python_(programming_language)" (Authors); it is used under the Creative Commons Attribution-ShareAlike 3.0 Unported License. You may redistribute it, verbatim or modified, providing that you comply with the terms of the CC-BY-SA. Cookie-policy To contact us: mail to admin@tvd.wiki

TOP