Π‘Π»Π΅Π΄ Π³ΠΎΠ΄ΠΈΠ½Π° Π½Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅
Π Π°Π±ΠΎΡΠ°ΡΠ° ΠΏΠΎ Π½ΠΎΠ² ΠΊΠ»ΠΎΠ½ ΡΠ΅Π³Π° Π·Π°ΠΏΠΎΡΠ²Π° ΠΏΠ΅Ρ ΠΌΠ΅ΡΠ΅ΡΠ° ΠΏΡΠ΅Π΄ΠΈ ΠΏΡΡΠΊΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ ΠΊΠ»ΠΎΠ½, Ρ.Π΅. ΡΡΠ²ΠΏΠ°Π΄Π°Ρ Ρ ΠΏΡΡΠΊΠ°Π½Π΅ΡΠΎ Π½Π° 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