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

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

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

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

  • ኮድ ተነባቢነትን የሚያሻሽሉ፣ የዘፈቀደ የፓይዘን ዕቃዎችን ማዛመድን የሚያቃልሉ እና የላቀ የስታቲክ አይነት ፍተሻን የሚጨምሩ የ"ማቻ" እና "ኬዝ" ኦፕሬተሮች ለስርዓተ ጥለት ማዛመድ። አተገባበሩ በ Scala፣ Rust እና F# ውስጥ ከተሰጠው የ"ግጥሚያ" ኦፕሬተር ጋር ይመሳሰላል፣ ይህም የአንድ የተወሰነ አገላለጽ ውጤት በ"ኬዝ" ኦፕሬተር ላይ ተመስርተው በብሎኮች ውስጥ ከተዘረዘሩት የስርዓተ-ጥለት ዝርዝር ጋር ያነፃፅራል።

    def http_error(status): ግጥሚያ ሁኔታ፡ ጉዳይ 400፡ “መጥፎ ጥያቄ” ጉዳይን ይመልሱ 401|403|404፡ “አልተፈቀደም” ጉዳይ 418፡ “እኔ የሻይ ማሰሮ ነኝ” የሚለውን ጉዳይ ይመልሱ _፡ “ሌላ ነገር” ይመለሱ።

    በነባር እሴቶች ላይ ተመስርተው ተለዋዋጮችን ለማሰር ነገሮችን፣ tuples፣ ዝርዝሮችን እና የዘፈቀደ ቅደም ተከተሎችን መንቀል ይችላሉ። የጎጆ አብነቶችን ለመግለጽ ተፈቅዶለታል፣ በአብነት ውስጥ ተጨማሪ “ከሆነ” ሁኔታዎችን መጠቀም፣ ጭንብል መጠቀም (“[x፣ y፣ * rest]”)፣ የቁልፍ/እሴት ካርታዎች (ለምሳሌ {“ባንድዊድዝ”፡ b፣ “latency ”፡ l} የ"bandwidth" እና "latency" እሴቶችን ከመዝገበ-ቃላት ለማውጣት)፣ ንዑስ አብነቶችን ለማውጣት (":="ኦፕሬተር)፣ በአብነት ውስጥ የተሰየሙ ቋሚዎችን ይጠቀሙ። በክፍሎች ውስጥ የ"__ተዛማጅ__()" ዘዴን በመጠቀም የማዛመድ ባህሪን ማበጀት ይቻላል።

    ከዳታ ክፍል አስመጪ ዳታ ክፍል @dataclass ክፍል ነጥብ፡ x፡ int y፡ int def የት ነው (ነጥብ)፡ የግጥሚያ ነጥብ፡ የጉዳይ ነጥብ (0፣ 0)፡ ማተም ("መነሻ") መያዣ ነጥብ(0፣ y)፡ ማተም (ረ) Y={y}") የጉዳይ ነጥብ(x, 0)፡ ማተም(f"X={x}") መያዣ ነጥብ()፡ ማተም("ሌላ ቦታ") ጉዳይ _፡ ማተም("ነጥብ አይደለም") ተዛማጅ ነጥብ፡ የጉዳይ ነጥብ(x፣ y) ከሆነ x == y፡ ማተም (f"Y=X በ {x}") መዝገብ ነጥብ(x፣ y)፡ ማተም (f"በሠያፍ ላይ አይደለም") ቀይ፣ አረንጓዴ፣ ሰማያዊ = 0, 1, 2 ግጥሚያ ቀለም: መያዣ ቀይ: ማተም ("ቀይ አያለሁ!") መያዣ አረንጓዴ: ማተም ("ሣር አረንጓዴ ነው") መያዣ ሰማያዊ: ማተም (" ሰማያዊ ስሜት ይሰማኛል :(")

  • የአውድ አስተዳዳሪዎች ስብስብን ትርጉም በበርካታ መስመሮች ለመከፋፈል አሁን በመግለጫው ውስጥ ቅንፎችን መጠቀም ይቻላል። እንዲሁም በቡድኑ ውስጥ ካለው የመጨረሻው አውድ አስተዳዳሪ በኋላ ነጠላ ሰረዝን መተው ተፈቅዶለታል፡ ከ (CtxManager1() ለምሳሌ1፣ CtxManager2() ለምሳሌ2፣ CtxManager3() ለምሳሌ3፣):...
  • ካልተዘጉ ቅንፎች እና የሕብረቁምፊ ቃል በቃል ጥቅሶች ጋር የተዛመዱ ስህተቶች የኮዱ አካባቢ የተሻሻለ ሪፖርት ማድረግ። ለምሳሌ, ያልተዘጋ ማሰሪያ በሚኖርበት ጊዜ, በሚከተለው ግንባታ ውስጥ የአገባብ ስህተትን ከማሳወቅ ይልቅ ጠቋሚው አሁን የመክፈቻውን ቅንፍ ያጎላል እና ምንም የመዝጊያ እገዳ እንደሌለ ያሳያል. ፋይል "example.py", መስመር 1 ይጠበቃል = {9:1, 18:2, 19:2, 27:3, 28:3, 29:3, 36:4, 37:4, ^አገባብ ስህተት: '{' መቼም አልተዘጋም።

    ተጨማሪ ልዩ የአገባብ ስህተት መልእክቶች ታክለዋል፡ ከብሎክ በፊት እና በመዝገበ-ቃላት ውስጥ የጠፋው የ":" ምልክት፣ ቱፕል ከቅንፍ ጋር አለመለያየት፣ በዝርዝሮች ውስጥ ኮማ ማጣት፣ ከ" በስተቀር" እና "በመጨረሻ" በመጠቀም "ሞክር" ብሎክን መግለጽ " ይልቅ "= =" በንጽጽር ውስጥ, * -በ f-strings ውስጥ መግለጫዎችን ይግለጹ. በተጨማሪም ፣ አጠቃላይ ችግር ያለበት አገላለጽ ጅምር ብቻ ሳይሆን ፣ ከተሳሳተ ውስጠ-ገብ ጋር የተዛመዱ ስህተቶችን አውድ የበለጠ ግልፅ መረጃ ማድረጉን ያረጋግጣል። >>> def foo(): ... ከሆነ lel: ... x = 2 ፋይል " "፣ መስመር 3 x = 2 ^ የመግባት ስህተት፡ በመስመር 2 ላይ ካለው 'if' መግለጫ በኋላ የተገባ ብሎክ ይጠበቃል።

    በአንድ ተግባር ውስጥ በባህሪያት እና በተለዋዋጭ ስሞች ውስጥ በታይፖዎች ምክንያት በተፈጠሩ ስህተቶች ውስጥ ትክክለኛ ስም ያለው ምክር ይወጣል። >>>collections.namedtoplo Traceback (የቅርብ ጊዜ ጥሪ የመጨረሻ)፡ ፋይል « "፣ መስመር 1፣ ውስጥ AttributeError፡ ሞጁል 'ስብስቦች' ምንም አይነት ባህሪ የለውም 'namedtoplo'። ስምህ ማለትዎ ነውን?

  • ለማረም መሳሪያዎች እና ፕሮፋይለሮች፣ የመከታተያ ሁነቶች የተፈጸሙት ኮድ ትክክለኛ የመስመር ቁጥሮች ቀርበዋል።
  • ከ TextIOWrapper ጋር ስለሚዛመዱ ስህተቶች ማስጠንቀቂያ ለማሳየት እና UTF-8 የተመሰጠሩ ፋይሎችን ለመክፈት የsys.flags.warn_default_encoding ቅንብር ታክሏል (ASCII ኢንኮዲንግ በነባሪነት ጥቅም ላይ ይውላል)። አዲሱ ልቀት እንዲሁ ኢንኮዲንግ = "አካባቢ" እሴትን የመግለጽ ችሎታን ይሰጣል ኢንኮዲንግ አሁን ባለው አካባቢ ላይ በመመስረት።
  • አዲስ ኦፕሬተር ወደ ትየባ ሞጁሉ ተጨምሯል፣ ይህም የዓይነት ማብራሪያዎችን ለመለየት የሚረዱ መሣሪያዎችን ያቀርባል፣ ይህም አገባብ “X | Y” ከዓይነቶቹ አንዱን ለመምረጥ (X ዓይነት ወይም Y ዓይነት)። def ካሬ (ቁጥር: int | ተንሳፋፊ) -> int | ተንሳፋፊ፡ የመመለሻ ቁጥር ** 2 ከዚህ ቀደም ከተደገፈው ግንባታ ጋር እኩል ነው፡ def square(ቁጥር፡ ዩኒየን[int፣ float]) -> ዩኒየን[int፣ ተንሳፋፊ]፡ የመመለሻ ቁጥር ** 2
  • የ Concatenate ኦፕሬተር እና የፓራምስፔክ ተለዋዋጭ ወደ ትየባ ሞጁል ተጨምረዋል፣ ይህም Callable በሚጠቀሙበት ጊዜ የማይለዋወጥ አይነት ፍተሻ ለማድረግ ተጨማሪ መረጃ እንዲያሳልፉ ያስችልዎታል። የትየባ ሞጁሉ የአይነት ጥበቃ ተግባራትን ለማብራራት እና ዓይነት ተለዋጭ ስምን በግልፅ ለመግለጽ ልዩ እሴቶችን TypeGuard ይጨምራል። StrCache፡ TypeAlias ​​= 'መሸጎጫ[str]' # ዓይነት ተለዋጭ ስም
  • የዚፕ() ተግባር የአማራጭ "ጥብቅ" ባንዲራ ይተገብራል፣ እሱም ሲገለፅ፣ እየተደጋገሙ ያሉት ነጋሪ እሴቶች ተመሳሳይ ርዝመት መሆናቸውን ያረጋግጣል። >>> ዝርዝር (ዚፕ (('a'፣ 'b'፣ 'c'))፣ (1፣ 2፣ 3) ጥብቅ=እውነት)) [('a'፣ 1)፣ ('b', 2) , ('c', 3)] >>> ዝርዝር(ዚፕ(ክልል(3))፣ ['fee'፣ 'fi'፣ 'fo'፣ 'fum']፣ strict=እውነት ): … ValueError: zip() ክርክር 2 ከክርክር 1 ይረዝማል
  • አዲስ አብሮገነብ ተግባራት aiter() እና ቀጣይ() ያልተመሳሰሉ አናሎጎችን ከተግባሮች iter() እና ቀጣይ() ጋር በመተግበር የቀረቡ ናቸው።
  • ከትናንሽ ነገሮች ጋር በሚሰሩበት ጊዜ የ str () ባይት () እና ባይትሬይ () ገንቢዎች ስራ ከ30-40% ጨምሯል።
  • በ runpy ሞጁል ውስጥ የማስመጣት ስራዎችን ቁጥር ቀንሷል። "python3 -m module_name" የሚለው ትዕዛዝ አሁን በአማካይ 1.4 ጊዜ በፍጥነት ይሰራል ምክንያቱም ከውጭ የሚመጡ ሞጁሎች ከ 69 ወደ 51 በመቀነሱ ምክንያት.
  • የLOAD_ATTR መመሪያው ለግል ኦፕኮዶች የመሸጎጫ ዘዴን ይጠቀማል፣ ይህም በመደበኛ ባህሪያት እስከ 36%፣ እና በቦታዎች እስከ 44% ድረስ ስራን ለማፋጠን አስችሎታል።
  • ፓይዘንን በ "--enable-optimizations" አማራጭ ሲገነቡ የ"-fno-semantic-interposition" ሁነታ አሁን ነቅቷል፣ ይህም አስተርጓሚውን ከ"- አንቃ-ማጋራት ጋር ሲነጻጸር እስከ 30% ለማፋጠን ያስችላል። ” አማራጭ።
  • የሃሽሊብ እና የኤስኤስኤል ሞጁሎች ለOpenSSL 3.0.0 ድጋፍ አክለዋል እና ከ1.1.1 በላይ የቆዩ የOpenSSL ስሪቶችን መደገፍ አቁመዋል።
  • የድሮው ተንታኝ ተወግዷል፣ እሱም በቀድሞው ቅርንጫፍ በPEG (የመግለጫ አገላለጽ ሰዋሰው) ተንታኝ ተተክቷል። የቅርጸት ሞጁሉ ተወግዷል። የ loop መለኪያው ከአሳይሲዮ ኤፒአይ ተወግዷል። ከዚህ ቀደም የተቋረጡ ዘዴዎች ተወግደዋል። የPy_UNICODE_str* የPy_UNICODE* ሕብረቁምፊዎችን የሚቆጣጠሩ ተግባራት ተወግደዋል።
  • የዲስቱቲል ሞጁሉ ተቋርጧል እና በ Python 3.12 ውስጥ እንዲወገድ ተይዟል። ከዲስቱልሶች ይልቅ የማዋቀሪያ መሳሪያዎችን ፣ ማሸጊያዎችን ፣ መድረክን ፣ ሹቲልን ፣ ንዑስ ፕሮሰስ እና sysconfig ሞጁሎችን እንዲጠቀሙ ይመከራል። በPyUnicodeObject ውስጥ ያለው የwstr መዋቅር ተቋርጧል እና ለማስወገድ ቀጠሮ ተይዞለታል።

ምንጭ: opennet.ru

አስተያየት ያክሉ