Python 3.9 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛рдХреЛ рд░рд┐рд▓реАрдЬ

рд╡рд┐рдХрд╛рд╕рдХреЛ рдПрдХ рд╡рд░реНрд╖ рдкрдЫрд┐ рдкреНрд░рд╕реНрддреБрдд рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛ рд░рд┐рд▓реАрдЬ рдЕрдЬрдЧрд░ 3.9ред Python 3.9 рдкрдЫрд┐ рдкрд╣рд┐рд▓реЛ рд░рд┐рд▓реАрдЬ рдерд┐рдпреЛ рд╕рдВрдХреНрд░рдордг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдорд╛ рдирдпрд╛рдБ рдЪрдХреНрд░ рддрдпрд╛рд░реА рд░ рд░рд┐рд▓реАрдЬ рдХреЛ рд╕рдорд░реНрдердиред рдирдпрд╛рдБ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬрд╣рд░реВ рдЕрдм рд╡рд░реНрд╖рдорд╛ рдПрдХ рдкрдЯрдХ рдЙрддреНрдкрдиреНрди рд╣реБрдиреЗрдЫ, рд░ рд╕реБрдзрд╛рд░рд╛рддреНрдордХ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХрд╣рд░реВ рдкреНрд░рддреНрдпреЗрдХ рджреБрдИ рдорд╣рд┐рдирд╛рдорд╛ рдЬрд╛рд░реА рдЧрд░рд┐рдиреЗрдЫред рдкреНрд░рддреНрдпреЗрдХ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд╢рд╛рдЦрд╛рд▓рд╛рдИ рдбреЗрдв рд╡рд░реНрд╖рдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╣рдпреЛрдЧ рдЧрд░рд┐рдиреЗрдЫ, рддреНрдпрд╕рдкрдЫрд┐ рдердк рд╕рд╛рдвреЗ рддреАрди рд╡рд░реНрд╖рдХреЛ рд▓рд╛рдЧрд┐ рдХрдордЬреЛрд░реАрд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рд╡рд┐рдХрд╛рд╕ рдЧрд░рд┐рдиреЗрдЫред

рдирдпрд╛рдБ рд╢рд╛рдЦрд╛рдХреЛ рдХрд╛рдо рдЕрдм рдЕрд░реНрдХреЛ рд╢рд╛рдЦрд╛ рд░рд┐рд▓рд┐рдЬ рд╣реБрдиреБрднрдиреНрджрд╛ рдкрд╛рдБрдЪ рдорд╣рд┐рдирд╛ рдЕрдШрд┐ рд╕реБрд░реБ рд╣реБрдиреНрдЫ, рдЕрд░реНрдерд╛рддреНред Python 3.9 рдХреЛ рд░рд┐рд▓реАрдЬ рд╕рдВрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫ рдерд╛рд▓реЗ рдкрд╛рдЗрдерди 3.10 рд╢рд╛рдЦрд╛ рдХреЛ рдЕрд▓реНрдлрд╛ рдкрд░реАрдХреНрд╖рдгред Python 3.10 рд╢рд╛рдЦрд╛ рд╕рд╛рдд рдорд╣рд┐рдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЕрд▓реНрдлрд╛ рд░рд┐рд▓реАрдЬрдорд╛ рд╣реБрдиреЗрдЫ, рдЬрд╕рдХреЛ рдЕрд╡рдзрд┐рдорд╛ рдирдпрд╛рдБ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдердкрд┐рдиреЗрдЫ рд░ рдмрдЧрд╣рд░реВ рдлрд┐рдХреНрд╕ рдЧрд░рд┐рдиреЗрдЫред рдпрд╕рдкрдЫрд┐, рдмрд┐рдЯрд╛ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рддреАрди рдорд╣рд┐рдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реАрдХреНрд╖рдг рдЧрд░рд┐рдиреЗрдЫ, рдЬрд╕рдорд╛ рдирдпрд╛рдБ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдердкреНрди рдирд┐рд╖реЗрдз рдЧрд░рд┐рдиреЗрдЫ рд░ рд╕рдмреИ рдзреНрдпрд╛рди рдмрдЧрд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рджрд┐рдЗрдиреЗрдЫред рд░рд┐рд▓рд┐рдЬ рд╣реБрдиреБ рдЕрдШрд┐ рдЕрдиреНрддрд┐рдо рджреБрдИ рдорд╣рд┐рдирд╛, рд╢рд╛рдЦрд╛ рд░рд┐рд▓рд┐рдЬ рдЙрдореНрдореЗрджреНрд╡рд╛рд░ рдЪрд░рдгрдорд╛ рд╣реБрдиреЗрдЫ, рдЬрд╕рдорд╛ рдЕрдиреНрддрд┐рдо рд╕реНрдерд┐рд░реАрдХрд░рдг рдкреНрд░рджрд░реНрд╢рди рдЧрд░рд┐рдиреЗрдЫред

рдпрд╕ рдмреАрдЪ рдердкрд┐рдпреЛ рдирд╡рд╛рдЪрд╛рд░рд╣рд░реВ рдкрд╛рдЗрдерди рей.реп рдорд╛:

  • рдмрд┐рд▓реНрдЯ-рдЗрди рдбрд┐рдХреНрдЯ рдХреНрд▓рд╛рд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╢рдмреНрджрдХреЛрд╢рд╣рд░реВрдорд╛, рджреЗрдЦрд╛ рдкрд░реНтАНрдпреЛ рдорд░реНрдЬ рдЕрдкрд░реЗрдЯрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди "|" рд░ "|=" рдЕрджреНрдпрд╛рд╡рдзрд┐рдХрд╣рд░реВ, рдЬрд╕рд▓реЗ рд╢рдмреНрджрдХреЛрд╖рд╣рд░реВ рдорд░реНрдЬ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдкрд╣рд┐рд▓реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд {**d1, **d2} рд░ dict.update рд╡рд┐рдзрд┐рд╣рд░реВрдХреЛ рдкреВрд░рдХ рд╣реЛред

    >>> x = {"key1": "value1 from x", "key2": "value2 from x"}
    >>> y = {"key2": "value2 from y", "key3": "value3 from y"}

    >>> x | y
    {'key1': 'value1 from x', 'key2': 'value2 from y', 'key3': 'value3 from y'}

    >>> y | x
    {'key2': 'value2 from x', 'key3': 'value3 from y', 'key1': 'value1 from x'}

  • рдмрд┐рд▓реНрдЯ-рдЗрди рдкреНрд░рдХрд╛рд░рд╣рд░реВрдХреЛ рд╕рдВрдЧреНрд░рд╣рдорд╛ рд╕реВрдЪреА, рдбрд┐рдХреНрдЯ рд░ рдЯрдкрд▓ рд╕рдорд╛рд╡реЗрд╢ рдЫ, рдЬреБрди рдЯрд╛рдЗрдкрд┐рдЩ рдореЛрдбреНрдпреБрд▓рдмрд╛рдЯ рдЖрдпрд╛рдд рдирдЧрд░реА рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рддреАред рдЯрд╛рдЗрдк рдЧрд░реНрдиреБрдХреЛ рд╕рдЯреНрдЯрд╛редрд╕реВрдЪреА, рдЯрд╛рдЗрдк рдЧрд░реНрдиреБрд╣реЛрд╕реНредрдбрд┐рдХреНрдЯ рд░ рдЯрд╛рдЗрдк рдЧрд░реНрдиреБрд╣реЛрд╕реНредрдЯрдкрд▓ рддрдкрд╛рдИрдВрд▓реЗ рдЕрдм рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ
    рдХреЗрд╡рд▓ рд╕реВрдЪреА, рдбрд┐рдХреНрдЯ рд░ рдЯрдкрд▓:

    def greet_all(рдирд╛рдорд╣рд░реВ: рд╕реВрдЪреА[str]) -> рдХреБрдиреИ рдкрдирд┐ рдЫреИрди:
    рдирд╛рдорд╣рд░реВрдорд╛ рдирд╛рдордХреЛ рд▓рд╛рдЧрд┐:
    рдкреНрд░рд┐рдиреНрдЯ ("рдирдорд╕реНрддреЗ", рдирд╛рдо)

  • рдкреНрд░рджрд╛рди рдЧрд░рд┐рдиреНрдЫ рдХрд╛рд░реНрдпрд╣рд░реВ рд░ рдЪрд░рд╣рд░реВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реНрди рд▓рдЪрд┐рд▓реЛ рдЙрдкрдХрд░рдгрд╣рд░реВред рдПрдиреЛрдЯреЗрд╕рдирд╣рд░реВ рд╕рдВрд▓рдЧреНрди рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐, рдирдпрд╛рдБ рдПрдиреЛрдЯреЗрдб рдкреНрд░рдХрд╛рд░ рдЯрд╛рдЗрдкрд┐рдЩ рдореЛрдбреНрдпреБрд▓рдорд╛ рдердкрд┐рдПрдХреЛ рдЫ, рдЕрд╡рд╕реНрдерд┐рдд рдкреНрд░рдХрд╛рд░рд╣рд░реВрд▓рд╛рдИ рдердк рдореЗрдЯрд╛рдбреЗрдЯрд╛рдХреЛ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░реНрджреИ рдЬреБрди рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╡рд╛ рд░рди-рдЯрд╛рдЗрдо рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдХреЛрдбрдмрд╛рдЯ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкрд╣реБрдБрдЪ рдЧрд░реНрди, рд╕рдорд╛рд╡реЗрд╢_extras рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ typing.get_type_hints() рд╡рд┐рдзрд┐рдорд╛ рдердкрд┐рдПрдХреЛ рдЫред

    charType = рдПрдиреЛрдЯреЗрдЯреЗрдб[int, ctype("char")] UnsignedShort = рдПрдиреЛрдЯреЗрдЯреЗрдб[int, struct2.ctype('H')]

  • рдЯреЛрдиреНрдб рдбрд╛рдЙрди рдбреЗрдХреЛрд░реЗрдЯрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╡реНрдпрд╛рдХрд░рдгреАрдп рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ - рдпрджрд┐ рд░ рдЬрдмрдХрд┐ рдмреНрд▓рдХрд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреБрдХреНрдд рдХреБрдиреИ рдкрдирд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЕрдм рдбреЗрдХреЛрд░реЗрдЯрд░рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдкрд░рд┐рд╡рд░реНрддрдирд▓реЗ PyQt5 рдХреЛрдбрдХреЛ рдкрдардиреАрдпрддрд╛рдорд╛ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╕реБрдзрд╛рд░ рд▓реНрдпрд╛рдпреЛ рд░ рдпрд╕ рдореЛрдбреНрдпреБрд▓рдХреЛ рдорд░реНрдорддрд╕рдореНрднрд╛рд░рд▓рд╛рдИ рд╕рд░рд▓ рдмрдирд╛рдпреЛ:

    рдерд┐рдпреЛ:
    button_0 = рдмрдЯрдирд╣рд░реВ[0] @button_0.clicked.connect

    рдЕрдм рддрдкрд╛рдИрдВ рд▓реЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:
    @buttons[0].clicked.connect

  • рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпрдорд╛ рдердкреЗ рдореЛрдбреНрдпреБрд▓ рдЬреЛрдирд┐рдирдлреЛ, рдЬрд╕рдорд╛ IANA рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдбрд╛рдЯрд╛рдмреЗрд╕рдмрд╛рдЯ рдЬрд╛рдирдХрд╛рд░реА рд╕рдорд╛рд╡реЗрд╢ рдЫред

    >>> zoneinfo рдмрд╛рдЯ ZoneInfo рдЖрдпрд╛рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН
    >>> рдорд┐рддрд┐ рд╕рдордп рдЖрдпрд╛рдд рдорд┐рддрд┐ рд╕рдордп, рдЯрд╛рдЗрдордбреЗрд▓реНрдЯрд╛рдмрд╛рдЯ
    >>> # рдЧрд░реНрдореА рд╕рдордп
    >>> dt = рдорд┐рддрд┐ рд╕рдордп(2020, 10, 31, 12, tzinfo=ZoneInfo("America/Los_Angeles"))
    >>> рдЫрд╛рдкреНрдиреБрд╣реЛрд╕реН (dt)
    2020-10-31 12:00:00-07:00

    >>> dt.tzname()
    'PDT'

    >>> # рдорд╛рдирдХ рд╕рдордп
    >>> dt += timedelta(рджрд┐рди=7)
    >>> рдЫрд╛рдкреНрдиреБрд╣реЛрд╕реН (dt)
    2020-11-07 12:00:00-08:00

    >>> рдЫрд╛рдкреНрдиреБрд╣реЛрд╕реН(dt.tzname())
    pst

  • рдЧреНрд░рд╛рдлрд▓рд┐рдм рдореЛрдбреНрдпреБрд▓ рдердкрд┐рдпреЛ, рдЬрд╕рдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдпреЛ рдЧреНрд░рд╛рдлрдХреЛ рдЯреЛрдкреЛрд▓реЛрдЬрд┐рдХрд▓ рдХреНрд░рдордмрджреНрдзрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдердиред
  • рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЙрдкрд╕рд░реНрдЧрд╣рд░реВ рд░ рд░реЗрдЦрд╛ рдЕрдиреНрддреНрдпрд╣рд░реВ рд╣рдЯрд╛рдЙрдирдХрд╛ рд▓рд╛рдЧрд┐ рдирдпрд╛рдБ рд╡рд┐рдзрд┐рд╣рд░реВ - str.removeprefix(prefix) рд░ str.removesuffix(рдкреНрд░рддреНрдпрдп)ред рд╡рд┐рдзрд┐рд╣рд░реВ str, bytes, bytearray рд░ collections.UserString рд╡рд╕реНрддреБрд╣рд░реВрдорд╛ рдердкрд┐рдПрдХрд╛ рдЫрдиреНред

    >>> s = "FooBar"
    >>> s.removeprefix("Foo")
    'рдмрд╛рд░'

  • рд╕рдВрд▓рдЧреНрди рдирдпрд╛рдБ рдкрд╛рд░реНрд╕рд░ PEG (Parsing рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╡реНрдпрд╛рдХрд░рдг), рдЬрд╕рд▓реЗ рдкрд╛рд░реНрд╕рд░рд▓рд╛рдИ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрдпреЛ LL(1)ред рдирдпрд╛рдБ рдкрд╛рд░реНрд╕рд░рдХреЛ рдкреНрд░рдпреЛрдЧрд▓реЗ LL(1) рдорд╛ рдкреНрд░рддрд┐рдмрдиреНрдзрд╣рд░реВ рдмрд╛рдЗрдкрд╛рд╕ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХрд╛ рдХреЗрд╣реА "рд╣реНрдпрд╛рдХрд╣рд░реВ"рдмрд╛рдЯ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдЙрди рд╕рдореНрднрд╡ рдмрдирд╛рдпреЛ, рд░ рдкрд╛рд░реНрд╕рд░рд▓рд╛рдИ рдХрд╛рдпрдо рд░рд╛рдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╢реНрд░рдо рд▓рд╛рдЧрддрд▓рд╛рдИ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдкрдорд╛ рдХрдо рдЧрд░реНтАНрдпреЛред рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрдирдХреЛ рд╕рд░реНрддрдорд╛, рдирдпрд╛рдБ рдкрд╛рд░реНрд╕рд░ рд▓рдЧрднрдЧ рдЕрдШрд┐рд▓реНрд▓реЛ рдЬрд╕реНрддреИ рд╕реНрддрд░рдорд╛ рдЫ, рддрд░ рд▓рдЪрд┐рд▓реЛрдкрдирдХреЛ рд╕рдиреНрджрд░реНрднрдорд╛ рдпреЛ рднрдиреНрджрд╛ рдзреЗрд░реИ рдЕрдЧрд╛рдбрд┐ рдЫ, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдирдпрд╛рдБ рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдбрд┐рдЬрд╛рдЗрди рдЧрд░реНрджрд╛ рдердк рд╕реНрд╡рддрдиреНрддреНрд░ рдорд╣рд╕реБрд╕ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдкреБрд░рд╛рдиреЛ рдкрд╛рд░реНрд╕рд░ рдХреЛрдб рдЕрд╣рд┐рд▓реЗрдХреЛ рд▓рд╛рдЧрд┐ рд░рд╛рдЦрд┐рдПрдХреЛ рдЫ рд░ "-X oldparser" рдлреНрд▓реНрдпрд╛рдЧ рд╡рд╛ "PYTHONOLDPARSER=1" рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдлрд┐рд░реНрддрд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рддрд░ рд░рд┐рд▓реАрдЬ 3.10 рдорд╛ рд╣рдЯрд╛рдЗрдиреЗрдЫред
  • рдкреНрд░рджрд╛рди рдЧрд░рд┐рдпреЛ PyState_FindModule рдкреНрд░рдХрд╛рд░реНрдп рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдореЛрдбреНрдпреБрд▓ рдЕрд╡рд╕реНрдерд╛ рдЦреЛрдЬреНрдиреБрдХреЛ рд╕рдЯреНрдЯрд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рд╕реВрдЪрдХ dereference рдкреНрд░рдпреЛрдЧ рдЧрд░реА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдореЛрдбреНрдпреБрд▓рд╣рд░реВрдХреЛ рдЕрд╡рд╕реНрдерд╛ рдкрд╣реБрдБрдЪ рдЧрд░реНрди C рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдХреНрд╖рдорддрд╛ред рдкрд░рд┐рд╡рд░реНрддрдирд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдореЛрдбреНрдпреБрд▓ рд╕реНрдерд┐рддрд┐ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗ рдУрднрд░рд╣реЗрдб рдШрдЯрд╛рдПрд░ рд╡рд╛ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд╣рдЯрд╛рдПрд░ C рдореЛрдбреНрдпреБрд▓рд╣рд░реВрдХреЛ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рдмрдврд╛рдЙрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдореЛрдбреНрдпреБрд▓рд▓рд╛рдИ рдХреНрд▓рд╛рд╕рд╕рдБрдЧ рд╕рдореНрдмрджреНрдз рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, C-function PyType_FromModuleAndSpec() рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдореЛрдбреНрдпреБрд▓ рд░ рдпрд╕рдХреЛ рдЕрд╡рд╕реНрдерд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди, C-functions PyType_GetModule() рд░ PyType_GetModuleState() рд▓рд╛рдИ рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░рд┐рдПрдХреЛ рдЫ, рд░ рдкрд╣реБрдБрдЪ рд╡рд┐рдзрд┐ рдкреНрд░рджрд╛рди рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ред рдЬрд╕рдорд╛ рдпреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ, C- рдкреНрд░рдХрд╛рд░реНрдп PyCMethod рд░ METH_METHOD рдЭрдгреНрдбрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЫред
  • рдлреЛрд╣реЛрд░ рд╕рдВрдХрд▓рдирдХрд░реНрддрд╛ рд╡рд┐рддрд░рдг рдЧрд░рд┐рдпреЛ рдлрд╛рдЗрдирд▓рд╛рдЗрдЬрд░ рдЪрд▓рд┐рд╕рдХреЗрдкрдЫрд┐ рдмрд╛рд╣реНрдп рд░реВрдкрдорд╛ рдкрд╣реБрдБрдЪрдпреЛрдЧреНрдп рд░рд╣рдиреЗ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рд╡рд╕реНрддреБрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреЗ рд╕рдЩреНрдХрд▓рдирд╣рд░реВ рддрд╛рд▓рд╛ рд▓рдЧрд╛рдЙрдирдмрд╛рдЯред
  • рд╡рд┐рдзрд┐ рдердкрд┐рдпреЛ os.pidfd_open, рдЬрд╕рд▓реЗ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рд╕рдмрд╕рд┐рд╕реНрдЯрдо "pidfd" рд▓рд╛рдИ PID рдкреБрди: рдкреНрд░рдпреЛрдЧ рдЕрд╡рд╕реНрдерд╛ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ (pidfd рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫ рд░ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдБрджреИрди, рдЬрдмрдХрд┐ PID рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рд╣рд╛рд▓рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рдкреНрдд рднрдПрдкрдЫрд┐ рдЕрд░реНрдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рд╣реБрди рд╕рдХреНрдЫред )ред
  • рдпреБрдирд┐рдХреЛрдб рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рд╕рдВрд╕реНрдХрд░рдг 13.0.0 рдорд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░рд┐рдПрдХреЛ рдЫред
  • рд╣рдЯрд╛рдЗрдпреЛ рдореЗрдореЛрд░реА рд▓реАрдХ рдПрдЙрдЯреИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рдкрд╛рдЗрдерди рдЕрдиреБрд╡рд╛рджрдХ рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрджрд╛ред
  • рдмрд┐рд▓реНрдЯ-рдЗрди рдкреНрд░рдХрд╛рд░ рджрд╛рдпрд░рд╛, рдЯрдкрд▓, рд╕реЗрдЯ, рдлреНрд░реЛрдЬреЗрдирд╕реЗрдЯ, рд╕реВрдЪреА рд░ рдбрд┐рдХреНрдЯрдХреЛ рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрдХреВрд▓рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдпреЛ C рднрд╛рд╖рд╛рдорд╛ рд▓реЗрдЦрд┐рдПрдХрд╛ рд╡рд╕реНрддреБрд╣рд░реВрдорд╛ рдЫрд┐рдЯреЛ рдкрд╣реБрдБрдЪрдХреЛ рд▓рд╛рдЧрд┐ Vectorcall рд╕рд░реНрдЯрдХрдЯ рдкреНрд░реЛрдЯреЛрдХрд▓рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ред
  • рдореЛрдбреНрдпреБрд▓рд╣рд░реВ _abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time рд░ _weakref рд▓реЛрдб рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреНред рдзреЗрд░реИ рдЪрд░рдгрд╣рд░реВрдорд╛ рдкреНрд░рд╛рд░рдореНрднрд┐рдХрд░рдг.
  • рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рдЕрдбрд┐рдпреЛрдк, ast, grp, _hashlib, pwd, _posixsubprocess, random, Select, struct, termios рд░ zlib рд▓рд╛рдИ рдкреНрд░рддрд┐рдмрдиреНрдзрд┐рдд рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫред рд╕реНрдерд┐рд░ ABI, рдЬрд╕рд▓реЗ рдкрд╛рдЗрдердирдХреЛ рдмрд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдПрдХреНрд╕реНрдЯреЗрдиреНрд╕рди рдореЛрдбреНрдпреБрд▓рд╣рд░реВрдХреЛ рд╕рдореНрдореЗрд▓рдирд╣рд░реВрдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджрдЫ (рд╕рдВрд╕реНрдХрд░рдг рдЕрдкрдбреЗрдЯ рдЧрд░реНрджрд╛, рд╡рд┐рд╕реНрддрд╛рд░ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рдкреБрди: рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджреИрди, рд░ 3.9 рдХреЛ рд▓рд╛рдЧрд┐ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░рд┐рдПрдХрд╛ рдореЛрдбреНрдпреБрд▓рд╣рд░реВрд▓реЗ 3.10 рд╢рд╛рдЦрд╛рдорд╛ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫрдиреН)ред
  • asyncio рдореЛрдбреНрдпреБрд▓рд▓реЗ рд╕рдореНрднрд╛рд╡рд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рдХрд╛рд░рдгрд▓реЗ reuse_address рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рд╣рдЯрд╛рдЗрдПрдХреЛ рдЫ (Linux рдорд╛ UDP рдХреЛ рд▓рд╛рдЧрд┐ SO_REUSEADDR рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрд▓рд╛рдИ UDP рдкреЛрд░реНрдЯрдорд╛ рд╕реБрдиреНрдиреЗ рд╕рдХреЗрдЯрд╣рд░реВ рд╕рдВрд▓рдЧреНрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ)ред
  • рдирдпрд╛рдБ рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рдирд╣рд░реВ рдердкрд┐рдПрдХрд╛ рдЫрдиреН, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдорд╛ рд╕рд┐рдЧреНрдирд▓ рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд╣рд░реВрдХреЛ рд╕реБрдзрд╛рд░рд┐рдПрдХреЛ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди, FreeBSD рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рд╕рдмрдкреНрд░реЛрд╕реЗрд╕ рдореЛрдбреНрдпреБрд▓рдХреЛ рдмрдвреЗрдХреЛ рдЧрддрд┐, рд░ рдЕрд╕реНрдерд╛рдпреА рдЪрд░рд╣рд░реВрдХреЛ рдЫрд┐рдЯреЛ рдЕрд╕рд╛рдЗрдирдореЗрдиреНрдЯ (рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдорд╛ рдЪрд░ рдЕрд╕рд╛рдЗрди рдЧрд░реНрдиреЗ "y for [expr in] ]" рдЕрдм рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ "y = expr" ") рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рджрд░реНрд╢рдирдХрд╛рд░реА рдЫред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдзреЗрд░реИ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рджреЗрдЦрд╛рдЙрдиреБрд╣реЛрд╕реН рд╢рд╛рдЦрд╛ 3.8 рдХреЛ рддреБрд▓рдирд╛рдорд╛ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрдирдорд╛ рдХрдореА (рд╕реНрдкреАрдбрдЕрдк рдХреЗрд╡рд▓ write_local рд░ write_deque рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрдорд╛ рджреЗрдЦрд╛рдЗрдПрдХреЛ рдЫ):

    рдкрд╛рдЗрдерди рд╕рдВрд╕реНрдХрд░рдг рей.рек рей.рел рей.рем рей.рен рей.рео рей.реп
    тАФтАФтАФтАФтАФтАФтАФтАФтАФтАФ

    рдЪрд░ рд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрдвреНрди рдкрд╣реБрдБрдЪ:
    рдкрдвреНрдиреБрд╣реЛрд╕реН_рд╕реНрдерд╛рдиреАрдп 7.1 7.1 5.4 5.1 3.9 4.0
    рдкрдвреНрдиреЗ_рдЧреИрд░ рд╕реНрдерд╛рдиреАрдп рен.рез рео.рез рел.рео рел.рек рек.рек рек.рео
    рдкрдвреНрдиреБрд╣реЛрд╕реН_рдЧреНрд▓реЛрдмрд▓ 15.5 19.0 14.3 13.6 7.6 7.7
    рдкрдвреНрдиреБрд╣реЛрд╕реН_рдирд┐рд░реНрдорд┐рдд 21.1 21.6 18.5 19.0 7.5 7.7
    рдкрдвреНрдиреБрд╣реЛрд╕реН_classvar_from_class 25.6 26.5 20.7 19.5 18.4 18.6
    рдкрдвреНрдиреБрд╣реЛрд╕реН_classvar_from_instance 22.8 23.5 18.8 17.1 16.4 20.1
    read_instancevar 32.4 33.1 28.0 26.3 25.4 27.7
    read_instancevar_slots 27.8 31.3 20.8 20.8 20.2 24.5
    read_namedtuple 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
    write_global 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
    write_instancevar 44.6 45.8 40.0 38.9 35.5 40.7
    write_instancevar_slots 35.6 36.1 27.3 26.6 25.7 27.7

    рдбрд╛рдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдкрдвреНрди рдкрд╣реБрдБрдЪ:
    рдкрдвреНрдиреЗ_рд╕реВрдЪреА 24.2 24.5 20.8 20.8 19.0 21.1
    рдкрдвреНрдиреБрд╣реЛрд╕реН_deque 24.7 25.5 20.2 20.6 19.8 21.6
    рдкрдвреНрдиреБрд╣реЛрд╕реН_рдбрд┐рдХреНрдЯ 24.3 25.7 22.3 23.0 21.0 22.5
    рдкрдвреНрдиреБрд╣реЛрд╕реН_strdict 22.6 24.3 19.5 21.2 18.9 21.6

    рдбрд╛рдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд▓реЗрдЦрди рдкрд╣реБрдБрдЪ:
    write_list 27.1 28.5 22.5 21.6 20.0 21.6
    write_deque 28.7 30.1 22.7 21.8 23.5 23.2
    write_dict 31.4 33.3 29.3 29.2 24.7 27.8
    write_strdict 28.4 29.9 27.5 25.2 23.1 29.8

    рд╕реНрдЯреНрдпрд╛рдХ (рд╡рд╛ рд▓рд╛рдо) рд╕рдЮреНрдЪрд╛рд▓рдирд╣рд░реВ:
    list_append_pop 93.4 112.7 75.4 74.2 50.8 53.9
    deque_append_pop рекрей.рел релрен.реж рекреп.рек рекреп.реи рекреи.рел рекрел.рел
    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

  • рд╣рдЯрд╛рдЗрдпреЛ html.parser.HTMLParser рдорд╛ unescape() рд╡рд┐рдзрд┐ рд╕рд╣рд┐рдд, рдзреЗрд░реИ рдкрд╛рдЗрдерди 2.7 рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рд░ рд╡рд┐рдзрд┐рд╣рд░реВ рдЬреБрди рдкрд╣рд┐рд▓реЗ рд╣рдЯрд╛рдЗрдПрдХреЛ рдерд┐рдпреЛ рд░ рдЕрдШрд┐рд▓реНрд▓реЛ рд╡рд┐рдореЛрдЪрдирдорд╛ DeprecationWarning рдХреЛ рдкрд░рд┐рдгрд╛рдо рд╕реНрд╡рд░реВрдк рдерд┐рдпреЛред
    tostring() рд░ fromstring() array.array рдорд╛, isAlive() threading рдорд╛редThread, getchildren() рд░ getiterator() ElementTree рдорд╛, sys.getcheckinterval(), sys.setcheckinterval(), asyncio.Task.current_task(), asyncio.Task.all_tasks(), base64.encodestring() рд░ base64.decodestring()ред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди