ΠŸΡƒΡΠΊΠ°Π½Π΅ Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Python 3.9

Π‘Π»Π΅Π΄ Π³ΠΎΠ΄ΠΈΠ½Π° Π½Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ прСдставСни Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Python 3.9. Python 3.9 бСшС ΠΏΡŠΡ€Π²Π°Ρ‚Π° вСрсия слСд Ρ‚ΠΎΠ²Π° ΠΏΡ€Π΅Ρ…ΠΎΠ΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° Π½ΠΎΠ² Ρ†ΠΈΠΊΡŠΠ» ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° издания. НовитС основни вСрсии Π²Π΅Ρ‡Π΅ Ρ‰Π΅ сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚ вСднъТ годишно, Π° ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Ρ‰ΠΈΡ‚Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‰Π΅ сС пускат Π½Π° всСки Π΄Π²Π° мСсСца. ВсСки Π·Π½Π°Ρ‡ΠΈΠΌ ΠΊΠ»ΠΎΠ½ Ρ‰Π΅ бъдС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½ Π·Π° Π΅Π΄Π½Π° Π³ΠΎΠ΄ΠΈΠ½Π° ΠΈ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ ΠΎΡ‰Π΅ Ρ‚Ρ€ΠΈ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΈ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°, Π·Π° Π΄Π° сС ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Ρ‚ уязвимоститС.

Π Π°Π±ΠΎΡ‚Π°Ρ‚Π° ΠΏΠΎ Π½ΠΎΠ² ΠΊΠ»ΠΎΠ½ сСга Π·Π°ΠΏΠΎΡ‡Π²Π° ΠΏΠ΅Ρ‚ мСсСца ΠΏΡ€Π΅Π΄ΠΈ пусканСто Π½Π° слСдващия ΠΊΠ»ΠΎΠ½, Ρ‚.Π΅. ΡΡŠΠ²ΠΏΠ°Π΄Π°Ρ‰ с пусканСто Π½Π° Python 3.9 Π·Π°ΠΏΠΎΡ‡Π½Π° Π°Π»Ρ„Π° тСстванС Π½Π° ΠΊΠ»ΠΎΠ½Π° Python 3.10. ΠšΠ»ΠΎΠ½ΡŠΡ‚ Π½Π° Python 3.10 Ρ‰Π΅ бъдС Π² Π°Π»Ρ„Π° вСрсия Π·Π° сСдСм мСсСца, ΠΏΡ€Π΅Π· ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π½ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π±Π΅Ρ‚Π° вСрсиитС Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ тСствани Π² ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Ρ‚Ρ€ΠΈ мСсСца, ΠΏΡ€Π΅Π· ΠΊΠΎΠΈΡ‚ΠΎ добавянСто Π½Π° Π½ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‰Π΅ бъдС Π·Π°Π±Ρ€Π°Π½Π΅Π½ΠΎ ΠΈ цялото Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‰Π΅ бъдС ΠΎΠ±ΡŠΡ€Π½Π°Ρ‚ΠΎ Π½Π° отстраняванСто Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ. ΠŸΠΎΡΠ»Π΅Π΄Π½ΠΈΡ‚Π΅ Π΄Π²Π° мСсСца ΠΏΡ€Π΅Π΄ΠΈ освобоТдаванСто ΠΊΠ»ΠΎΠ½ΡŠΡ‚ Ρ‰Π΅ бъдС Π½Π° Π΅Ρ‚Π°ΠΏ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ Π·Π° освобоТдаванС, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ бъдС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ΅Π½Π° ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»Π½Π° стабилизация.

срСд Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈ Π² Python 3.9:

  • Π’ Ρ€Π΅Ρ‡Π½ΠΈΡ†ΠΈ, Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° вградСния клас dict, сС появи ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ Π·Π° сливанС "|" ΠΈ "|=" Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π΄ΠΎΠΏΡŠΠ»Π²Π°Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ {**d1, **d2} ΠΈ dict.update, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ ΠΏΠΎ-Ρ€Π°Π½ΠΎ Π·Π° сливанС Π½Π° Ρ€Π΅Ρ‡Π½ΠΈΡ†ΠΈ.

    >>> x = {"ΠΊΠ»ΡŽΡ‡1": "стойност1 ΠΎΡ‚ x", "ΠΊΠ»ΡŽΡ‡2": "стойност2 ΠΎΡ‚ x"}
    >>> y = {"key2": "стойност2 ΠΎΡ‚ y", "key3": "стойност3 ΠΎΡ‚ y"}

    >>> x | Π³
    {'key1': 'стойност1 ΠΎΡ‚ x', 'key2': 'стойност2 ΠΎΡ‚ y', 'key3': 'стойност3 ΠΎΡ‚ y'}

    >>> y | Ρ…
    {'key2': 'стойност2 ΠΎΡ‚ x', 'key3': 'стойност3 ΠΎΡ‚ y', 'key1': 'стойност1 ΠΎΡ‚ x'}

  • Π’Π³Ρ€Π°Π΄Π΅Π½Π°Ρ‚Π° колСкция ΠΎΡ‚ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π²ΠΊΠ»ΡŽΡ‡Π²Π° списък, dict ΠΈ tuple, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΊΠ°Ρ‚ΠΎ Π±Π°Π·ΠΎΠ²ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π±Π΅Π· ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π°Π½Π΅ ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»Π° Π·Π° въвСТданС. Π’Π΅Π·ΠΈ. вмСсто typing.List, typing.Dict ΠΈ typing.Tuple Π²Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° посочитС
    просто списък, Π΄ΠΈΠΊΡ‚ΠΎΠ²ΠΊΠ° ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ:

    def greet_all(имСна: списък[str]) -> Няма:
    Π·Π° ΠΈΠΌΠ΅ Π² ΠΈΠΌΠ΅Π½Π°:
    print("Π—Π΄Ρ€Π°Π²Π΅ΠΉ", ΠΈΠΌΠ΅)

  • ΠžΡΠΈΠ³ΡƒΡ€Π΅Π½ΠΈ са гъвкави инструмСнти Π·Π° Π°Π½ΠΎΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ. Π—Π° ΠΏΡ€ΠΈΠΊΠ°Ρ‡Π²Π°Π½Π΅ Π½Π° Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ към ΠΌΠΎΠ΄ΡƒΠ»Π° Π·Π° писанС Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ Π½ΠΎΠ² Π°Π½ΠΎΡ‚ΠΈΡ€Π°Π½ Ρ‚ΠΈΠΏ, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ‚Π΅ Ρ‚ΠΈΠΏΠΎΠ²Π΅ с Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° статичСн Π°Π½Π°Π»ΠΈΠ· ΠΈΠ»ΠΈ Π·Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС. Π—Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ΡŠΡ‚ include_extras Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ към ΠΌΠ΅Ρ‚ΠΎΠ΄Π° typing.get_type_hints().

    charType = Annotated[int, ctype("char")] UnsignedShort = Annotated[int, struct2.ctype('H')]

  • Π’ΠΎΠ½ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ граматичСски изисквания към Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ - всСки ΠΈΠ·Ρ€Π°Π·, подходящ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² if ΠΈ while Π±Π»ΠΎΠΊΠΎΠ²Π΅, Π²Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°Ρ‚ΠΎ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€. ΠŸΡ€ΠΎΠΌΡΠ½Π°Ρ‚Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ чСтливостта Π½Π° ΠΊΠΎΠ΄Π° Π½Π° PyQt5 ΠΈ опрости ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠ΄ΡƒΠ»:

    Π‘Π΅ΡˆΠ΅:
    button_0 = Π±ΡƒΡ‚ΠΎΠ½ΠΈ[0] @button_0.clicked.connect

    Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅:
    @buttons[0].clicked.connect

  • Към стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΎ ΠΌΠΎΠ΄ΡƒΠ» информация Π·Π° Π·ΠΎΠ½Π°Ρ‚Π°, която Π²ΠΊΠ»ΡŽΡ‡Π²Π° информация ΠΎΡ‚ Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ Π·Π° часови Π·ΠΎΠ½ΠΈ Π½Π° IANA.

    >>> ΠΎΡ‚ zoneinfo ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π°ΠΉΡ‚Π΅ ZoneInfo
    >>> ΠΎΡ‚ datetime ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° datetime, timedelta
    >>> # Лятно Π²Ρ€Π΅ΠΌΠ΅
    >>> dt = datetime(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

  • Π”ΠΎΠ±Π°Π²Π΅Π½ ΠΌΠΎΠ΄ΡƒΠ» graphlib, Π² ΠΊΠΎΠΉΡ‚ΠΎ изпълнСни ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ‡Π½ΠΎ сортиранС Π½Π° Π³Ρ€Π°Ρ„ΠΈ.
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π½ΠΎΠ²ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ Π½Π° прСфикси ΠΈ окончания Π½Π° Ρ€Π΅Π΄ΠΎΠ²Π΅ - str.removeprefix(prefix) ΠΈ str.removesuffix(suffix). Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ към ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ str, bytes, bytearray ΠΈ collections.UserString.

    >>> s = "FooBar"
    >>> s.removeprefix("Foo")
    "Π±Π°Ρ€"

  • Участващи Π½ΠΎΠ² Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ PEG (Parsing Expression Grammar), ΠΊΠΎΠΉΡ‚ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° LL(1). Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° новия Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π°ΠΏΡ€Π°Π²ΠΈ възмоТно ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° някои ΠΎΡ‚ β€žΡ…Π°ΠΊΠΎΠ²Π΅Ρ‚Π΅β€œ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° заобикалянС Π½Π° ограничСнията Π² LL(1), ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π½Π°ΠΌΠ°Π»ΠΈ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° Ρ‚Ρ€ΡƒΠ΄ Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°. По ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° производитСлността новият парсСр Π΅ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ Π½Π° ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ, Π½ΠΎ Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΡ€Π΅Π΄ Π½Π΅Π³ΠΎ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° Π³ΡŠΠ²ΠΊΠ°Π²ΠΎΡΡ‚Ρ‚Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° сС чувстватС ΠΏΠΎ-свободни ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½ΠΎΠ²ΠΈ Π΅Π·ΠΈΠΊΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Бтарият ΠΊΠΎΠ΄ Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° сС Π·Π°ΠΏΠ°Π·Π²Π° засСга ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π²ΡŠΡ€Π½Π°Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ρ„Π»Π°Π³Π° "-X oldparser" ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° Π½Π° срСдата "PYTHONOLDPARSER=1", Π½ΠΎ Ρ‰Π΅ бъдС ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ във вСрсия 3.10.
  • ΠŸΡ€ΠΈ условиС способността Π·Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π½Π° C Π΄Π° ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΡΠ²Π°Ρ‚ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅, Π² ΠΊΠΎΠΈΡ‚ΠΎ са Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π΄Π΅Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡ€Π°Π½Π΅ Π½Π° указатСля, вмСсто Π΄Π° Ρ‚ΡŠΡ€ΡΡΡ‚ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° функцията PyState_FindModule. ΠŸΡ€ΠΎΠΌΡΠ½Π°Ρ‚Π° Π²ΠΈ позволява Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚Π΅ производитСлността Π½Π° C ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ Ρ‡Ρ€Π΅Π· намаляванС ΠΈΠ»ΠΈ пълно Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π°. Π—Π° Π΄Π° сС асоциира ΠΌΠΎΠ΄ΡƒΠ» с клас, сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π° C-функцията PyType_FromModuleAndSpec(), Π·Π° Π΄Π° сС ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŠΡ‚ ΠΈ Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅, сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ C-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ PyType_GetModule() ΠΈ PyType_GetModuleState() ΠΈ Π΄Π° сС прСдостави ΠΌΠ΅Ρ‚ΠΎΠ΄ с Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ класа Π² ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½, сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ C-функцията PyCMethod ΠΈ Ρ„Π»Π°Π³ΡŠΡ‚ METH_METHOD.
  • Π‘ΡŠΠ±ΠΈΡ€Π°Ρ‡ Π½Π° Π±ΠΎΠΊΠ»ΡƒΠΊ доставСни ΠΎΡ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‰ΠΈ ΠΊΠΎΠ»Π΅ΠΊΡ†ΠΈΠΈ, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ΠΈ Ρ€Π΅Π°Π½ΠΈΠΌΠΈΡ€Π°Π½ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ остават външно Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ слСд изпълнСниС Π½Π° Ρ„ΠΈΠ½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ os.pidfd_open, ΠΊΠΎΠ΅Ρ‚ΠΎ позволява подсистСмата Π½Π° ядрото Π½Π° Linux "pidfd" Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° справянС със ситуацията Π½Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° PID (pidfd Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ процСс ΠΈ Π½Π΅ сС промСня, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ PID ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΡΠ²ΡŠΡ€Π·Π°Π½ с Π΄Ρ€ΡƒΠ³ процСс, слСд ΠΊΠ°Ρ‚ΠΎ тСкущият процСс, ΡΠ²ΡŠΡ€Π·Π°Π½ с Ρ‚ΠΎΠ·ΠΈ PID, ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡ΠΈ ).
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° Unicode спСцификация Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΄ΠΎ вСрсия 13.0.0.
  • Π•Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π°Π½ ΠΈΠ·Ρ‚ΠΈΡ‡Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π½Π° Python Π² ΡΡŠΡ‰ΠΈΡ процСс.
  • ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈΡ‚Π΅ Ρ‚ΠΈΠΏΠΎΠ²Π΅ range, tuple, set, frozenset, list ΠΈ dict Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π°. изпълнСни Ρ‡Ρ€Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Π·Π° Π±ΡŠΡ€Π· Π΄ΠΎΡΡ‚ΡŠΠΏ Vectorcall Π·Π° ΠΏΠΎ-Π±ΡŠΡ€Π· Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, написани Π½Π° Π΅Π·ΠΈΠΊΠ° C.
  • ΠœΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ _abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time ΠΈ _weakref сС Π·Π°Ρ€Π΅ΠΆΠ΄Π°Ρ‚ ΠΎΡ‚ инициализация Π½Π° няколко Π΅Ρ‚Π°ΠΏΠ°.
  • Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΈΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios ΠΈ zlib са ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½ΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ стабилСн ABI, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ€Π΅ΡˆΠ°Π²Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с работоспособността Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π·Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии Π½Π° Python (ΠΏΡ€ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° вСрсията няма Π½ΡƒΠΆΠ΄Π° Π΄Π° сС ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ ΠΎΡ‚Π½ΠΎΠ²ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π·Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈ Π·Π° 3.9, Ρ‰Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° работят Π² ΠΊΠ»ΠΎΠ½Π° 3.10).
  • ΠœΠΎΠ΄ΡƒΠ»ΡŠΡ‚ asyncio Π΅ ΠΎΡ‚Ρ‚Π΅Π³Π»ΠΈΠ» ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π·Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° reuse_address ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ със сигурността (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° SO_REUSEADDR Π·Π° UDP Π½Π° Linux позволява Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ процСси Π΄Π° ΠΏΡ€ΠΈΠΊΠ°Ρ‡Π°Ρ‚ ΡΠ»ΡƒΡˆΠ°Ρ‰ΠΈ сокСти към UDP ΠΏΠΎΡ€Ρ‚).
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° производитСлност Π½Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ Π½Π° сигнали Π² многонишкови прилоТСния, ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π° скорост Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π° Π½Π° подпроцСса Π² срСдата Π½Π° FreeBSD ΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ присвояванС Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ (присвояванС Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π² ΠΈΠ·Ρ€Π°Π·Π° β€žΠ·Π° y Π² [expr) ]” Π²Π΅Ρ‡Π΅ Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π΅Π½, ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΈΠ·Ρ€Π°Π·ΡŠΡ‚ β€žy = expr” "). ΠšΠ°Ρ‚ΠΎ цяло ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ тСстовС ΡˆΠΎΡƒ намаляванС Π½Π° производитСлността Π² сравнСниС с ΠΊΠ»ΠΎΠ½ 3.8 (ускоряванС сС наблюдава само Π² тСстовСтС write_local ΠΈ write_deque):

    Python вСрсия 3.4 3.5 3.6 3.7 3.8 3.9
    β€”β€”β€”β€”β€” β€” β€” β€” β€” β€” β€”

    Π”ΠΎΡΡ‚ΡŠΠΏ Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ:
    read_local 7.1 7.1 5.4 5.1 3.9 4.0
    read_nonlocal 7.1 8.1 5.8 5.4 4.4 4.8
    read_global 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
    read_classvar_from_class 25.6 26.5 20.7 19.5 18.4 18.6
    read_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
    read_boundmethod 37.6 37.9 29.6 26.9 27.7 45.9

    Π”ΠΎΡΡ‚ΡŠΠΏ Π·Π° запис Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ:
    write_local 8.7 9.3 5.5 5.3 4.3 4.2
    write_nonlocal 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

    Π”ΠΎΡΡ‚ΡŠΠΏ Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅ Π½Π° структурата Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅:
    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
    read_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 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, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° бяха ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»Π΅Π½ΠΈ ΠΈ Π΄ΠΎΠ²Π΅Π΄ΠΎΡ…Π° Π΄ΠΎ DeprecationWarning Π² ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° вСрсия, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° unescape() Π² html.parser.HTMLParser,
    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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€