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

ከአንድ አመት እድገት በኋላ ቀርቧል ጉልህ የፕሮግራም ቋንቋ መለቀቅ ዘንዶ 3.9. Python 3.9 በኋላ የተለቀቀው የመጀመሪያው ነው። ሽግግር ፕሮጀክት በርቷል አዲስ ዑደት የመልቀቂያዎች ዝግጅት እና ድጋፍ. አዲስ ዋና ልቀቶች አሁን በዓመት አንድ ጊዜ ይፈጠራሉ፣ እና የማስተካከያ ዝመናዎች በየሁለት ወሩ ይለቀቃሉ። እያንዳንዱ ጉልህ ቅርንጫፍ ለአንድ ዓመት ተኩል ይደገፋል, ከዚያ በኋላ ተጨማሪ ሶስት ዓመት ተኩል ድክመቶችን ለማስተካከል ይዘጋጃል.

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

ታክሏል ፈጠራዎች በ Python 3.9:

  • አብሮ የተሰራውን የዲክት ክፍልን በመጠቀም በተገለጹ መዝገበ ቃላት ውስጥ፣ ታየ ለመዋሃድ ኦፕሬተሮች ድጋፍ "|" እና "|" ማሻሻያዎች፣ ከዚህ ቀደም መዝገበ ቃላትን ለማዋሃድ የታቀዱትን {**d1፣ **d2} እና dict.update ዘዴዎችን የሚያሟሉ ናቸው።

    >>> x = {"ቁልፍ1"፡ "እሴት1 ከ x", "ቁልፍ2": "እሴት2 ከ x"}
    >>> y = {"ቁልፍ2"፡ "እሴት2 ከ y"፣ "ቁልፍ3"፡ "እሴት 3 ከ y"}

    >>> x | y
    {'ቁልፍ1'፡ 'እሴት1 ከ x'፣ 'ቁልፍ2'፡ 'እሴት2 ከ y'፣ 'ቁልፍ3'፡ 'እሴት3 ከ y'}

    >>> y | x
    {'ቁልፍ2'፡ 'እሴት2 ከ x'፣ 'key3': 'value3 from y'፣ 'key1': ' value1 from x'}

  • አብሮገነብ የአይነቶች ስብስብ ዝርዝር፣ ዲክት እና ቱፕል ያካትታል፣ እነዚህም ከትየባ ሞጁል ሳይገቡ እንደ መሰረታዊ አይነቶች ሊያገለግሉ ይችላሉ። እነዚያ። ከመተየብ ይልቅ.ዝርዝር፣መተየብ.ዲክት እና መተየብ።Tuple አሁን መግለጽ ይችላሉ።
    ብቻ ይዘርዝሩ፣ ደብተር እና tuple:

    def greet_all(ስሞች፡ ዝርዝር[str]) -> የለም፡
    ለስም በስም:
    ማተም ("ሄሎ" ስም)

  • ቀርቧል ተግባራትን እና ተለዋዋጮችን ለማብራራት ተለዋዋጭ መሳሪያዎች. ማብራሪያዎችን ለማያያዝ፣ አዲስ የተብራራ አይነት ወደ ትየባ ሞጁሉ ተጨምሯል፣ ይህም ነባር አይነቶችን ከተጨማሪ ሜታዳታ ጋር በማስፋፋት ለስታቲክ ትንተና ወይም ለሩጫ ጊዜ ማሻሻያዎች ጥቅም ላይ ሊውል ይችላል። ከኮድ ሜታዳታ ለመድረስ የማካተት_ተጨማሪ ግቤት ወደ ትየባ.get_type_hints() ዘዴ ታክሏል።

    charType = የተብራራ[int, ctype("char")] UnsignedShort = የተጻፈ[int, struct2.ctype('H')]]

  • ቃና ወረደ ሰዋሰዋዊ መስፈርቶች ለጌጣጌጥ - ብሎኮች አሁን እንደ ማስጌጥ ጥቅም ላይ ሊውሉ በሚችሉበት ጊዜ እና በ ውስጥ ለመጠቀም ተስማሚ የሆነ ማንኛውም አገላለጽ። ለውጡ የPyQt5 ኮድ ተነባቢነትን በእጅጉ አሻሽሏል እና የዚህን ሞጁል ጥገና ቀላል አድርጓል።

    ነበር፡
    button_0 = አዝራሮች[0] @button_0.clicked.connect

    አሁን የሚከተሉትን መጻፍ ይችላሉ:
    @አዝራሮች[0] .ተገናኙ

  • ወደ መደበኛ ቤተ-መጽሐፍት ታክሏል ሞዱል ዞንinfoከ IANA የሰዓት ሰቅ ዳታቤዝ መረጃን ያካተተ።

    >>> ከዞን መረጃ የማስመጣት ዞን መረጃ
    >>> ከቀን ጊዜ ማስመጣት የቀን ሰዓት ፣ የሰዓት ዴልታ
    >>> # የበጋ ጊዜ
    >>> ዲቲ = የቀን ሰዓት (2020, 10, 31, 12, tzinfo=ZoneInfo("አሜሪካ/ሎስ_አንጀለስ"))
    >>> ማተም (ዲቲ)
    2020-10-31 12:00:00-07:00

    >>> dt.tzname()
    'PDT'

    >>> # መደበኛ ሰዓት
    >>> dt += የጊዜ ዴልታ(ቀናት=7)
    >>> ማተም (ዲቲ)
    2020-11-07 12:00:00-08:00

    >>> ማተም (dt.tzname())
    PST

  • ታክሏል graphlib ሞዱል, በውስጡ ተተግብሯል ለሥነ-ምድራዊ አቀማመጥ ግራፎች ድጋፍ.
  • የቀረበ ቅድመ ቅጥያዎችን እና የመስመር መጨረሻዎችን ለማስወገድ አዳዲስ ዘዴዎች - str.removeprefix (ቅድመ ቅጥያ) እና str.removesuffix (ቅጥያ)። ዘዴዎች ወደ str፣ ባይት፣ ባይትሬይ እና ስብስቦች ተጨምረዋል።የተጠቃሚ ሴንትሪንግ ዕቃዎች።

    >>> s = "FooBar"
    >>> s.removeprefix("ፉ")
    'ባር'

  • ተሳትፏል አዲስ ተንታኝ PEG ተንታኙን የተካው (የመግለጫ አገላለጽ ሰዋሰው) ኤልኤል(1). የአዲሱ ተንታኝ አጠቃቀም በኤልኤልኤል(1) ውስጥ ያሉትን ገደቦች ለማለፍ የሚያገለግሉትን አንዳንድ “ጠለፋዎች” ለማስወገድ አስችሏል፣ እና ተንታኙን ለመጠበቅ የሰው ኃይል ወጪን በእጅጉ ቀንሷል። በአፈጻጸም ረገድ፣ አዲሱ ተንታኝ በግምት ከቀዳሚው ጋር ተመሳሳይ ነው፣ ነገር ግን በተለዋዋጭነት በከፍተኛ ሁኔታ ቀደሞ ነው፣ ይህም አዲስ የቋንቋ ባህሪያትን ሲነድፍ የበለጠ ነፃነት እንዲሰማዎት ያስችልዎታል። የድሮው ተንታኝ ኮድ ለአሁን ተጠብቆ ይቆያል እና የ"-X oldparser" ባንዲራ ወይም የ"PYTHONOLDARSER=1" አካባቢ ተለዋዋጭን በመጠቀም መመለስ ይቻላል፣ነገር ግን በተለቀቀው 3.10 ይወገዳል።
  • የቀረበ የ C ማራዘሚያ ዘዴዎች የ PyState_FindModule ተግባርን በመጠቀም የሞጁሉን ሁኔታ ከመፈለግ ይልቅ በቀጥታ የጠቋሚ ማጣቀሻ በመጠቀም የተገለጹበትን የሞጁሎች ሁኔታ የመድረስ ችሎታ። ለውጡ የሞጁሉን ሁኔታ የመፈተሽ ከፍተኛ ወጪን በመቀነስ ወይም ሙሉ በሙሉ በማስወገድ የ C ሞጁሎችን አፈፃፀም እንዲጨምሩ ያስችልዎታል። አንድን ሞጁል ከክፍል ጋር ለማያያዝ የC-function PyType_FromModuleAndSpec() ሞጁሉን እና ሁኔታውን ለማግኘት የC-functions PyType_GetModule () እና PyType_GetModuleState () እና የክፍል መዳረሻ ዘዴን ለማቅረብ ሀሳብ ቀርቧል። በውስጡም የተገለጸበት፣ የC-function PyCMethhod እና METH_METHOD ባንዲራ ቀርቧል።
  • ቆሻሻ ሰብሳቢ ተቆጥበዋል የማጠናቀቂያው ሂደት ካለቀ በኋላ በውጫዊ ተደራሽነት የሚቆዩ እንደገና የታነሙ ነገሮችን ከያዙ ክምችቶች መቆለፍ።
  • የተጨመረ ዘዴ os.pidfd_ክፍትየሊኑክስ ከርነል ንኡስ ስርዓት "pidfd" የ PID መልሶ አጠቃቀም ሁኔታን ለመቆጣጠር እንዲጠቀም ያስችለዋል (ፒዲኤፍዲ ከተወሰነ ሂደት ጋር የተቆራኘ እና አይለወጥም, ነገር ግን PID አሁን ያለው ሂደት ከ PID ጋር ከተገናኘ በኋላ ከሌላ ሂደት ጋር ሊገናኝ ይችላል. ).
  • የዩኒኮድ ዝርዝር ድጋፍ ወደ ስሪት 13.0.0 ተዘምኗል።
  • ተወግዷል የማስታወስ መፍሰስ በተመሳሳይ ሂደት ውስጥ የ Python አስተርጓሚውን እንደገና ሲያስጀምሩ።
  • አብሮገነብ ዓይነቶች ክልል፣ ቱፕል፣ ስብስብ፣ የቀዘቀዘ ስብስብ፣ ዝርዝር እና ዲክታ አፈጻጸም ተመቻችቷል። ተተግብሯል በC ቋንቋ የተፃፉ ነገሮችን በፍጥነት ለመድረስ በቬክተርካል አቋራጭ ፕሮቶኮል በመጠቀም።
  • ሞጁሎች _abc፣ audioop፣ _bz2፣ _codecs፣ _contextvars፣ _crypt, _functools, _json, _locale, operator, resource, time and _weakref የተጫኑት ከ በበርካታ ደረጃዎች መጀመር.
  • መደበኛው የላይብረሪ ሞጁሎች ኦዲዮፕ፣ አስት፣ grp፣ _hashlib፣ pwd፣ _posixsubprocess፣ random፣ select፣ struct፣ termios እና zlib ወደ የተከለከለ አገልግሎት ተለውጠዋል የተረጋጋ ABIለተለያዩ የፓይዘን ስሪቶች የኤክስቴንሽን ሞጁሎች ስብሰባዎች የመሥራት ችግርን የሚፈታ (ስሪቱን በሚያዘምኑበት ጊዜ የኤክስቴንሽን ሞጁሎችን እንደገና መገንባት አያስፈልግም እና ለ 3.9 የተቀናጁ ሞጁሎች በ 3.10 ቅርንጫፍ ውስጥ ሊሠሩ ይችላሉ) ።
  • የአሲኒዮ ሞጁሉ ለዳግም ጥቅም ላይ የሚውል_አድራሻ ልኬት ሊደግፈው በሚችለው የደህንነት ጉዳዮች (SO_REUSEADDRን ለ UDP በ Linux ላይ የተለያዩ ሂደቶችን ከ UDP ወደብ ጋር ለማያያዝ ያስችላል) ድጋፍ አቋርጧል።
  • አዳዲስ ማሻሻያዎች ተጨምረዋል፡ ለምሳሌ፡ በባለብዙ ክሮች አፕሊኬሽኖች ውስጥ የምልክት ተቆጣጣሪዎች አፈጻጸም መሻሻል፣ በፍሪቢኤስዲ አካባቢ ውስጥ ያለው የንዑስ ሂደት ሞጁል ፍጥነት መጨመር እና ጊዜያዊ ተለዋዋጮችን በፍጥነት መመደብ (ተለዋዋጭን በ "ለ y in [expr) አገላለጽ መመደብ ]" አሁን እንደ "y = expr" ") አገላለጽ ውጤታማ ነው. በአጠቃላይ, አብዛኛዎቹ ሙከራዎች አሳይ የአፈጻጸም ቅነሳ ከቅርንጫፍ 3.8 ጋር ሲነጻጸር (ፍጥነት በጽሁፍ_አካባቢያዊ እና መጻፊያ ፈተናዎች ውስጥ ብቻ ይታያል)

    የፓይዘን ስሪት 3.4 3.5 3.6 3.7 3.8 3.9
    ——————————

    ተለዋዋጭ እና የባህሪ ንባብ መዳረሻ፡
    አንባቢ_አካባቢያዊ 7.1 7.1 5.4 5.1 3.9 4.0
    ያልተነበበ 7.1 8.1 5.8 5.4 4.4 4.8
    አንብብ_ግሎባል 15.5 19.0 14.3 13.6 7.6 7.7
    read_builtin 21.1 21.6 18.5 19.0 7.5 7.7
    አንብብ_ክፍልቫር_ከክፍል 25.6 26.5 20.7 19.5 18.4 18.6
    read_classvar_ከአብነት 22.8 23.5 18.8 17.1 16.4 20.1
    read_intancevar 32.4 33.1 28.0 26.3 25.4 27.7
    read_intancevar_slots 27.8 31.3 20.8 20.8 20.2 24.5
    አንብብ_ስም 73.8 57.5 45.0 46.8 18.4 23.2
    የማንበብ ዘዴ 37.6 37.9 29.6 26.9 27.7 45.9

    ተለዋዋጭ እና የመጻፍ መዳረሻ
    ጻፍ_አካባቢያዊ 8.7 9.3 5.5 5.3 4.3 4.2
    መፃፍ_ያልሆነ 10.5 11.1 5.6 5.5 4.7 4.9
    ጻፍ_ግሎባል 19.7 21.2 18.0 18.0 15.8 17.2
    write_classvar 92.9 96.0 104.6 102.1 39.2 43.2
    መጻፍ_intancevar 44.6 45.8 40.0 38.9 35.5 40.7
    መጻፍ_intancevar_slots 35.6 36.1 27.3 26.6 25.7 27.7

    የውሂብ መዋቅር የንባብ መዳረሻ፡-
    read_list 24.2 24.5 20.8 20.8 19.0 21.1
    read_deque 24.7 25.5 20.2 20.6 19.8 21.6
    Read_dict 24.3 25.7 22.3 23.0 21.0 22.5
    አንብብ 22.6 24.3 19.5 21.2 18.9 21.6

    የውሂብ መዋቅር ጻፍ መዳረሻ:
    የመጻፍ_ዝርዝር 27.1 28.5 22.5 21.6 20.0 21.6
    መጻፍ_deque 28.7 30.1 22.7 21.8 23.5 23.2
    ጻፍ_ዲክት 31.4 33.3 29.3 29.2 24.7 27.8
    መፃፍ 28.4 29.9 27.5 25.2 23.1 29.8

    ቁልል (ወይም ወረፋ) ስራዎች፡-
    ዝርዝር_አባሪ_ፖፕ 93.4 112.7 75.4 74.2 50.8 53.9
    deque_append_pop 43.5 57.0 49.4 49.2 42.5 45.5
    deque_append_popleft 43.7 57.3 49.7 49.7 42.8 45.5

    የጊዜ ዑደት፡
    loop_overhead 0.5 0.6 0.4 0.3 0.3 0.3

  • ተወግዷል ብዙ የ Python 2.7 ተግባራት እና ዘዴዎች ከዚህ ቀደም ተቋርጠው የነበረ እና በቀደመው እትም ላይ የመቀነስ ማስጠንቀቂያ ያስገኙ፣ በhtml.parser.HTMLParser ውስጥ ያለውን የማያስኬድ() ዘዴን ጨምሮ፣
    tostring () እና ከstring () በ array.array፣ isAlive() በክር።ክር፣ getchildren () እና getiterator () በElementTree፣ sys.getcheckinterval()፣ sys.setcheckinterval()፣ asyncio.Task.current_task() asyncio.Task.all_tasks (), base64.encodestring () እና base64.decodestring ()

ምንጭ: opennet.ru

አስተያየት ያክሉ