Python 3.11 มาพร้อมกับการปรับปรุงประสิทธิภาพ การออกแบบแคชใหม่ และอื่นๆ

หลาม

Python เป็นภาษาการเขียนโปรแกรมตีความระดับสูงซึ่งปรัชญาเน้นความสามารถในการอ่านโค้ดได้

หลังจากหนึ่งปีของการพัฒนา เวอร์ชันใหม่ของภาษาการเขียนโปรแกรม Python 3.11 ได้รับการเผยแพร่แล้วสาขาใหม่จะได้รับการสนับสนุนเป็นเวลาหนึ่งปีครึ่งหลังจากนั้นจะมีการสร้างแพตช์ที่มีช่องโหว่อีกสามปีครึ่ง

ในเวลาเดียวกัน การทดสอบอัลฟาของสาขา Python 3.12 เริ่มต้นขึ้น (ตามกำหนดการพัฒนาใหม่ การทำงานในสาขาใหม่จะเริ่มขึ้นห้าเดือนก่อนการเปิดตัวของสาขาก่อนหน้าและถึงการทดสอบอัลฟ่าตามเวลาของเวอร์ชันถัดไป)

สาขา Python 3.12 จะเป็นรุ่นอัลฟ่าเป็นเวลาเจ็ดเดือน ในระหว่างนั้นจะมีการเพิ่มคุณสมบัติใหม่และแก้ไขข้อบกพร่อง หลังจากนั้น การทดสอบเบต้าจะมีขึ้นเป็นเวลาสามเดือน ในระหว่างนั้นจะมีการห้ามการเพิ่มคุณสมบัติใหม่ และจะให้ความสนใจอย่างเต็มที่กับการแก้ไขข้อบกพร่อง สองเดือนที่ผ่านมาก่อนการเปิดตัว สาขาจะอยู่ในขั้นตอนตัวเลือกการเปิดตัว ซึ่งจะมีการรักษาเสถียรภาพขั้นสุดท้าย

คุณสมบัติใหม่ที่สำคัญของ Python 3.11

ในเวอร์ชันใหม่นี้ มีการทำงานที่สำคัญเพื่อเพิ่มประสิทธิภาพการทำงานเนื่องจากสาขาใหม่มีการเปลี่ยนแปลงที่เกี่ยวข้อง ด้วยการเร่งความเร็วและการเรียกใช้ฟังก์ชันแบบอินไลน์, การใช้ล่ามที่รวดเร็วของการดำเนินการทั่วไป รวมถึงการเพิ่มประสิทธิภาพที่จัดทำโดยโครงการ Cinder และ HotPy ความเร็วในการเรียกใช้โค้ดจะเพิ่มขึ้นระหว่าง 10% ถึง 60% ขึ้นอยู่กับประเภทของโหลด โดยเฉลี่ย ประสิทธิภาพเมื่อผ่านชุดทดสอบ pyperformance เพิ่มขึ้น 25%

กลไกการแคชได้รับการออกแบบใหม่ ของ bytecode ซึ่งลดเวลาเริ่มต้นล่ามลง 10-15% ออบเจ็กต์ที่มีโค้ดและไบต์โค้ดได้รับการจัดสรรแบบสแตติกโดยล่าม ซึ่งทำให้สามารถขจัดขั้นตอนในการคลี่คลาย bytecode ที่ดึงมาจากแคชและแปลงอ็อบเจ็กต์ด้วยโค้ดเพื่อวางไว้ในหน่วยความจำฮีป

เพิ่มแล้ว รองรับกลุ่มข้อยกเว้นซึ่งทำให้โปรแกรมสามารถเพิ่มและประมวลผลข้อยกเว้นต่างๆ ได้ในเวลาเดียวกัน ข้อยกเว้นประเภทใหม่ ExceptionGroup และ BaseExceptionGroup ได้รับการเสนอให้จัดกลุ่มข้อยกเว้นหลายรายการเข้าด้วยกัน และนิพจน์ "ยกเว้น*" ถูกเพิ่มลงในข้อยกเว้นที่แยกจากกลุ่ม

เพิ่ม LiteralString พิเศษประเภท อยู่ลำพัง สามารถรวมสตริงตามตัวอักษรที่เข้ากันได้กับประเภท LiteralString (นั่นคือ สตริงเปล่าและสตริงประเภท LiteralString แต่ไม่ใช่สตริงประเภท str แบบสุ่มหรือแบบผสม) สามารถใช้ประเภท LiteralString เพื่อจำกัดการส่งผ่านอาร์กิวเมนต์สตริงไปยังฟังก์ชัน การแทนที่ส่วนต่างๆ ของสตริงโดยอำเภอใจ ซึ่งอาจทำให้เกิดช่องโหว่ได้ เช่น เมื่อสร้างสตริงสำหรับคำสั่ง SQL หรือคำสั่งเชลล์

นอกจากนั้นยัง ความสามารถในการทำเครื่องหมายองค์ประกอบแต่ละส่วนของพจนานุกรมมีให้ (TypedDict) พร้อมแฟล็ก Required และ Not Required เพื่อกำหนดฟิลด์บังคับและฟิลด์ทางเลือก (โดยค่าเริ่มต้น ฟิลด์ที่ประกาศทั้งหมดจำเป็นหากไม่ได้ตั้งค่าพารามิเตอร์ทั้งหมดเป็น ปลอม).

เพิ่ม @dataclass_transform class, method และ function decoratorเมื่อระบุไว้ ตัวตรวจสอบประเภทสแตติกจะปฏิบัติต่ออ็อบเจ็กต์ราวกับว่าใช้ @dataclasses.dataclass มัณฑนากร

การเปลี่ยนแปลงอื่น ๆ ที่โดดเด่นในเวอร์ชันใหม่นี้:

  • เพิ่มความสามารถในการใช้การจัดกลุ่มอะตอม ((?>…)) และความหึงหวง (เป็นเจ้าของ) quantifiers (*+, ++, ?+, {m,n}+) ในนิพจน์ทั่วไป
  • มีการเพิ่มประเภท TypeVarTuple ซึ่งอนุญาตให้ใช้ตัวแปร generics ซึ่งแตกต่างจาก TypeVar ซึ่งไม่ครอบคลุมประเภทใดประเภทหนึ่ง แต่เป็นจำนวนประเภทตามอำเภอใจ
  • ไลบรารีมาตรฐานประกอบด้วยโมดูล tomllib พร้อมฟังก์ชันในการแยกวิเคราะห์รูปแบบ TOML
  • เพิ่มเมธอด add_note() ลงในคลาส BaseException ซึ่งช่วยให้แนบบันทึกข้อความเข้ากับข้อยกเว้นได้ เช่น เพื่อเพิ่มข้อมูลตามบริบทที่ไม่พร้อมใช้งานในขณะที่ส่งข้อยกเว้น
  • เพิ่ม Self ชนิดพิเศษเพื่อเป็นตัวแทนของคลาสส่วนตัวในปัจจุบัน Self สามารถใช้เพื่ออธิบายวิธีการที่ส่งคืนอินสแตนซ์ของคลาสของคุณในวิธีที่ง่ายกว่าการใช้ TypeVar
  • เพิ่มตัวเลือกบรรทัดคำสั่ง "-P" และตัวแปรสภาพแวดล้อม PYTHONSAFEPATH เพื่อปิดใช้งานการเชื่อมต่ออัตโนมัติของเส้นทางไฟล์ที่อาจไม่ปลอดภัยไปยัง sys.path
  • ยูทิลิตี้ py.exe สำหรับแพลตฟอร์ม Windows ได้รับการปรับปรุงอย่างมากเพื่อรองรับไวยากรณ์ "-V:" / " นอกเหนือจาก "- . ».
  • มาโคร C API จำนวนมากได้รับการแปลงเป็นฟังก์ชันอินไลน์แบบปกติหรือแบบคงที่แล้ว
  • โมดูล uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev และ sunau เลิกใช้แล้วและจะถูกลบออกจาก Python ปล่อย 3.13
  • ลบฟังก์ชัน PyUnicode_Encode*
  • คลาส TaskGroup ถูกเพิ่มลงในโมดูล asyncio ด้วยการใช้งานตัวจัดการบริบทแบบอะซิงโครนัสที่รอให้กลุ่มงานดำเนินการให้เสร็จสิ้น
  • การเพิ่มงานในกลุ่มทำได้โดยใช้เมธอด create_task()

ในที่สุด หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติมคุณสามารถตรวจสอบรายละเอียดได้ใน ลิงค์ต่อไปนี้ 


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา