የ Python 3.11 ፕሮግራሚንግ ቋንቋ መለቀቅ

ከአንድ አመት እድገት በኋላ የ Python 3.11 ፕሮግራሚንግ ቋንቋ ጉልህ የሆነ ልቀት ታትሟል። አዲሱ ቅርንጫፍ ለአንድ ዓመት ተኩል የሚደገፍ ሲሆን ከዚያ በኋላ ለሦስት ዓመት ተኩል ያህል ድክመቶችን ለማስወገድ ጥገናዎች ይዘጋጃሉ.

በተመሳሳይ ጊዜ የ Python 3.12 ቅርንጫፍ የአልፋ ሙከራ ተጀመረ (በአዲሱ የእድገት መርሃ ግብር መሠረት በአዲስ ቅርንጫፍ ላይ ሥራ የሚጀምረው የቀድሞው ቅርንጫፍ ከመውጣቱ ከአምስት ወራት በፊት ነው እና በሚቀጥለው እትም ጊዜ የአልፋ ሙከራ ደረጃ ላይ ይደርሳል. ). የ Python 3.12 ቅርንጫፍ በአልፋ ውስጥ ለሰባት ወራት ይቆያል፣ በዚህ ጊዜ አዳዲስ ባህሪያት ይታከላሉ እና ስህተቶች ይስተካከላሉ። ከዚህ በኋላ የቅድመ-ይሁንታ ስሪቶች ለሶስት ወራት ይሞከራሉ, በዚህ ጊዜ አዳዲስ ባህሪያትን መጨመር የተከለከለ እና ሁሉም ትኩረት ስህተቶችን ለማስተካከል ይከፈላል. ከመለቀቁ በፊት ላለፉት ሁለት ወራት ቅርንጫፉ በተለቀቀው እጩ ደረጃ ላይ ይሆናል, በዚህ ጊዜ የመጨረሻው መረጋጋት ይከናወናል.

በ Python 3.11 ላይ አዲስ ተጨማሪዎች የሚከተሉትን ያካትታሉ:

  • አፈፃፀሙን ለማመቻቸት ትልቅ ስራ ተሰርቷል። አዲሱ ቅርንጫፍ የተግባር ጥሪዎችን በማፋጠን እና በመስመር ላይ ከማሰማራት ጋር የተዛመዱ ለውጦችን፣ የመደበኛ ኦፕሬሽኖችን ፈጣን ተርጓሚዎች (x+x፣ x*x፣ xx፣ a[i]፣ a[i] = z፣ f(arg) አጠቃቀምን ያካትታል። ሲ (አር)፣ o.ዘዴ()፣ o.attr = z፣ *seq)፣ እንዲሁም በሲንደር እና ሆትፒ ፕሮጄክቶች የተዘጋጁ ማመቻቸት። እንደ ጭነቱ አይነት ከ10-60% የሚሆነው የኮድ ማስፈጸሚያ ፍጥነት ይጨምራል። በአማካይ የፓይፐርፎርማንስ ሙከራ ስብስብ አፈጻጸም በ25 በመቶ ጨምሯል።

    የባይቴኮድ መሸጎጫ ዘዴ እንደገና ተዘጋጅቷል፣ ይህም የአስተርጓሚውን የጅምር ጊዜ ከ10-15 በመቶ ቀንሷል። ኮድ እና ባይትኮድ ያላቸው ነገሮች አሁን በስታቲስቲክስ በአስተርጓሚ የተመደቡ ሲሆን ይህም ከካሼው የወጣውን ያልማርሽ ባይት ኮድ ደረጃዎችን ለማስወገድ እና ቁሶችን በኮድ በመቀየር በተለዋዋጭ ማህደረ ትውስታ ውስጥ እንዲቀመጡ አስችሏል።

  • በምርመራ መልእክቶች ውስጥ የጥሪ ዱካዎችን ሲያሳዩ አሁን ስህተቱን ያስከተለውን አገላለጽ መረጃ ማሳየት ይቻላል (ከዚህ በፊት የትኛው የመስመሩ ክፍል ስህተቱን እንዳስከተለ ሳይገልጽ መስመሩ ብቻ ነበር)። የተራዘመ የመከታተያ መረጃ በኤፒአይ በኩል ማግኘት እና በኮድobject.co_positions() ዘዴ ወይም በC API ተግባር PyCode_Addr2Location() በመጠቀም የምንጭ ኮድ ውስጥ የተወሰነ ቦታ ላይ የግለሰብ ባይትኮድ መመሪያዎችን መጠቀም ይቻላል. ለውጡ ከጎጆ መዝገበ-ቃላት ዕቃዎች፣ በርካታ የተግባር ጥሪዎች እና ውስብስብ የሂሳብ አገላለጾች ጋር ​​ችግሮችን ለማረም በጣም ቀላል ያደርገዋል። መከታተያ (የቅርብ ጊዜ ጥሪ)፡ ፋይል "calculation.py"፣ መስመር 54፣ በውጤቱ = (x / y / z) * (a / b / c) ~~~~~~^~~ ዜሮ ዲቪዥን ስህተት፡ በዜሮ መከፋፈል
  • ለልዩ ቡድኖች ድጋፍ ታክሏል ፣ ይህም ለፕሮግራሙ ብዙ ልዩ ልዩ ሁኔታዎችን በአንድ ጊዜ የማፍለቅ እና የማስኬድ ችሎታ ይሰጣል ። ብዙ ልዩ ሁኔታዎችን ለመመደብ እና አንድ ላይ ለማሰባሰብ፣ አዲስ ልዩ ልዩ አይነቶች ExceptionGroup እና BaseExceptionGroup ቀርበዋል፣ እና ከቡድን የተለዩትን ለማጉላት “ከ* በስተቀር” የሚለው አገላለጽ ተጨምሯል።
  • የ add_note() ዘዴ ወደ BaseException ክፍል ተጨምሯል፣ ይህም ከተለየው ጋር የጽሁፍ ማስታወሻ እንዲያያይዙ ይፈቅድልዎታል፣ ለምሳሌ ልዩ ሲጣል የማይገኝ አውድ መረጃ ማከል።
  • የአሁኑን የግል ክፍል ለመወከል ልዩ የራስ አይነት ታክሏል። ታይፕቫርን ከመጠቀም ይልቅ የክፍሉን ምሳሌ በቀላል መንገድ የሚመልሱ ዘዴዎችን ለማብራራት እራስን መጠቀም ይቻላል። ክፍል MyLock: def __enter__(self) -> ራስን: ራስን.መቆለፊያ () መመለስ ራስን
  • ከLiteralString አይነት (ማለትም፣ ባሬ እና LiteralString ሕብረቁምፊዎች፣ ነገር ግን የዘፈቀደ ወይም የተጣመሩ የ str strings) ብቻ የሚያካትተው ልዩ LiteralString አይነት ታክሏል። የ LiteralString አይነት የሕብረቁምፊ ነጋሪ እሴቶችን ወደ ተግባራት ማለፍን ለመገደብ ጥቅም ላይ ሊውል ይችላል፣ የሕብረቁምፊዎችን ክፍሎች በዘፈቀደ መተካት ወደ ተጋላጭነት ሊያመራ ይችላል፣ ለምሳሌ ለSQL መጠይቆች ወይም የሼል ትዕዛዞች ሕብረቁምፊዎችን ሲያመነጩ። def run_query(sql: LiteralString) -> ... ... ደዋይ ደዋይ( የዘፈቀደ_string: str, query_string: LiteralString, table_name: LiteralString, ) -> ምንም፡ አሂድ_ጥያቄ("ከተማሪዎች * ምረጥ") # እሺ አሂድ_ጥያቄ(ቀጥታ_ሕብረቁምፊ) # እሺ አሂድ_ጥያቄ("ምረጥ * ከሮም" + literal_string) # እሺ አሂድ_ጥያቄ(የዘፈቀደ_ሕብረቁምፊ) # አሂድ_ጥያቄ ( # ስህተት f"ከተማሪዎች * ከየት ስም = {የዘፈቀደ_ሕብረቁምፊ})
  • የTyVarTuple ዓይነት ተጨምሯል ፣ ይህም ከTypeVar በተለየ ፣ አንድ ዓይነት ሳይሆን የዘፈቀደ የቁጥር ዓይነቶችን ከሚሸፍነው ተለዋዋጭ ጄኔሪኮችን ለመጠቀም ያስችላል።
  • መደበኛው ቤተ-መጽሐፍት የቶምሊብ ሞጁሉን የTOML ቅርጸትን ለመተንተን ተግባራትን ያካትታል።
  • የሚፈለጉትን እና አማራጭ መስኮችን ለመወሰን የተተየቡ መዝገበ ቃላት (TypedDict) ነጠላ ኤለመንቶችን በሚፈለጉ እና የማይፈለጉ መለያዎች ምልክት ማድረግ ይቻላል (በነባሪ፣ ሁሉም የታወጁ መስኮች ጠቅላላ ግቤት ወደ ሐሰት ካልተዋቀረ)። ክፍል ፊልም (TypedDict): ርዕስ: str year: NotRequired[int] m1: ፊልም = {"ርዕስ": "Black Panther", "ዓመት": 2018} # እሺ m2: ፊልም = {"ርዕስ": "Star Wars" } # እሺ (የዓመቱ መስክ አማራጭ ነው) m3: ፊልም = {“ዓመት”፡ 2022} # ስህተት፣ አስፈላጊው የርዕስ መስክ አልተሞላም)
  • የተግባር ግሩፕ ክፍል የተግባር ቡድን እስኪያጠናቅቅ የሚጠብቅ ያልተመሳሰል አውድ አስተዳዳሪን በመተግበር ወደ asyncio ሞጁል ታክሏል። ተግባራትን ወደ ቡድን ማከል የcreat_task() ዘዴን በመጠቀም ይከናወናል። async def ዋና(): async with asyncio.TaskGroup () እንደ tg: task1 = tg.create_task(አንዳንድ_ኮሮ(...)) task2 = tg.create_task(ሌላ_ኮሮ(...)) ማተም("ሁለቱም ተግባራት አሁን ተጠናቀዋል። ”)
  • @dataclass_transform decorator ታክሏል ለክፍሎች፣ ዘዴዎች እና ተግባራት፣ ሲገለጽ፣ የማይንቀሳቀስ አይነት የፍተሻ ስርዓት @dataclasses.dataclass decoratorን እንደሚጠቀም አድርጎ ይይዘዋል። ከታች ባለው ምሳሌ፣ የደንበኛ ሞዴል ክፍል፣ አይነቶችን ሲፈተሽ፣ በተመሳሳይ መልኩ ከ@dataclasses.dataclass ማስጌጫ ያለው ክፍል ጋር ይሰራል፣ ማለትም። መታወቂያ እና ስም ተለዋዋጮችን የሚቀበል __init__ ዘዴ እንዳለው። @dataclass_transform() ክፍል ModelBase፡ ... ክፍል ደንበኛ ሞዴል(ModelBase)፡ መታወቂያ፡ int ስም፡ str
  • በመደበኛ አገላለጾች፣ አቶሚክ ማቧደን ((?>...)) እና ባለይዞታ ኳንቲፊየሮች (*+፣ ++፣?+፣ {m፣n}+) የመጠቀም ችሎታ ተጨምሯል።
  • ደህንነቱ ያልተጠበቀ የፋይል መንገዶችን ወደ sys.path አውቶማቲክ ማያያዝን ለማሰናከል "-P" የትእዛዝ መስመር አማራጭ እና PYTHONSAFEPATH አካባቢ ተለዋዋጭ ታክሏል።
  • ለዊንዶውስ መድረክ የ py.exe መገልገያ በከፍተኛ ሁኔታ ተሻሽሏል, ለ "-V:" አገባብ ድጋፍን ይጨምራል. / " በተጨማሪ "- . "
  • በሲ ኤፒአይ ውስጥ ያሉ ብዙ ማክሮዎች ወደ መደበኛ ወይም የማይንቀሳቀስ የመስመር ውስጥ ተግባራት ይለወጣሉ።
  • የ uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, snhddr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev እና sunau ሞጁሎች ተቋርጠዋል እና በፓይዘን ውስጥ ይወገዳሉ. 3.13 መልቀቅ. የPyUnicode_Encode* ተግባራት ተወግደዋል።

ምንጭ: opennet.ru

አስተያየት ያክሉ