ืฉื—ืจื•ืจ ืฉืคืช ื”ืชื›ื ื•ืช Python 3.8

ืœืื—ืจ ืฉื ื” ื•ื—ืฆื™ ืฉืœ ืคื™ืชื•ื— ื”ืฆื™ื’ ืฉื—ืจื•ืจ ืฉืคืช ืชื›ื ื•ืช ืžืจื›ื–ื™ ืคื™ื™ืชื•ืŸ 3.8. ืขื“ื›ื•ื ื™ื ืžืชืงื™ื ื™ื ืขื‘ื•ืจ ืกื ื™ืฃ Python 3.8 ืžืชื•ื›ื ืŸ ืฉื—ืจื•ืจ ืชื•ืš 18 ื—ื•ื“ืฉื™ื. ืคื’ื™ืขื•ื™ื•ืช ืงืจื™ื˜ื™ื•ืช ื™ืชื•ืงื ื• ืœืžืฉืš 5 ืฉื ื™ื ืขื“ ืื•ืงื˜ื•ื‘ืจ 2024. ืขื“ื›ื•ื ื™ื ืžืชืงื ื™ื ืœืกื ื™ืฃ 3.8 ื™ืฉื•ื—ืจืจื• ืžื“ื™ ื—ื•ื“ืฉื™ื™ื, ื›ืืฉืจ ื”ืžื”ื“ื•ืจื” ื”ืžืชืงื ืช ื”ืจืืฉื•ื ื” ืฉืœ Python 3.8.1 ืžืชื•ื›ื ื ืช ืœื“ืฆืžื‘ืจ.

ื‘ื™ืŸ ื”ืžืชื•ื•ืกืคื™ื ื—ื™ื“ื•ืฉื™ื:

  • ืชืžื™ื›ื” ืคืขื•ืœื•ืช ื”ืงืฆืื” ื‘ืชื•ืš ื‘ื™ื˜ื•ื™ื™ื ืžื•ืจื›ื‘ื™ื. ืขื ื”ืื•ืคืจื˜ื•ืจ ื”ื—ื“ืฉ ":=", ื ื™ืชืŸ ืœื‘ืฆืข ืคืขื•ืœื•ืช ื”ืงืฆืืช ืขืจืš ื‘ืชื•ืš ื‘ื™ื˜ื•ื™ื™ื ืื—ืจื™ื, ืœืžืฉืœ, ื›ื“ื™ ืœืžื ื•ืข ืงืจื™ืื•ืช ื›ืคื•ืœื•ืช ืœืคื•ื ืงืฆื™ื•ืช ื‘ื”ืฆื”ืจื•ืช ืžื•ืชื ื•ืช ื•ื‘ืขืช ื”ื’ื“ืจืช ืœื•ืœืื•ืช:

    if (n := len(a)) > 10:
    ...

    while (ื‘ืœื•ืง := f.read(256)) != ":
    ...

  • ืชืžื™ื›ื” ืชื—ื‘ื™ืจ ื—ื“ืฉ ืœืฆื™ื•ืŸ ืืจื’ื•ืžื ื˜ื™ื ืฉืœ ืคื•ื ืงืฆื™ื”. ื‘ืขืช ืกืคื™ืจืช ืืจื’ื•ืžื ื˜ื™ื ื‘ืžื”ืœืš ื”ื’ื“ืจืช ืคื•ื ืงืฆื™ื”, ืืชื” ื™ื›ื•ืœ ื›ืขืช ืœืฆื™ื™ืŸ "/" ื›ื“ื™ ืœื”ืคืจื™ื“ ื‘ื™ืŸ ืืจื’ื•ืžื ื˜ื™ื ืฉื ื™ืชืŸ ืœื”ืงืฆื•ืช ืœื”ื ืจืง ืขืจื›ื™ื ืขืœ ืกืžืš ืกื“ืจ ืกืคื™ืจืช ื”ืขืจื›ื™ื ื‘ืžื”ืœืš ืงืจื™ืืช ื”ืคื•ื ืงืฆื™ื”, ืœื‘ื™ืŸ ืืจื’ื•ืžื ื˜ื™ื ืฉื ื™ืชืŸ ืœื”ืงืฆื•ืช ื‘ื›ืœ ืกื“ืจ (ืชื—ื‘ื™ืจ ืžืฉืชื ื”=ืขืจืš) ). ื‘ืคืŸ ื”ืคืจืงื˜ื™, ื”ืคื™ืฆ'ืจ ื”ื—ื“ืฉ ืžืืคืฉืจ ืœืคื•ื ืงืฆื™ื•ืช ื‘-Python ืœื—ืงื•ืช ืœื—ืœื•ื˜ื™ืŸ ืืช ื”ื”ืชื ื”ื’ื•ืช ืฉืœ ืคื•ื ืงืฆื™ื•ืช ืงื™ื™ืžื•ืช ื‘-C, ื•ื’ื ืœื”ื™ืžื ืข ืžืงืฉื™ืจื” ืœืฉืžื•ืช ืกืคืฆื™ืคื™ื™ื, ืœืžืฉืœ, ืื ืฉื ื”ืคืจืžื˜ืจ ืžืชื•ื›ื ืŸ ืœื”ืฉืชื ื•ืช ื‘ืขืชื™ื“.

    ื”ื“ื’ืœ "/" ืžืฉืœื™ื ืืช ื”ื“ื’ืœ "*" ืฉื ื•ืกืฃ ื‘ืขื‘ืจ, ื•ืžืคืจื™ื“ ื‘ื™ืŸ ืžืฉืชื ื™ื ืฉืจืง ื”ืงืฆืื” ื‘ืฆื•ืจืช "ืžืฉืชื ื”=ืขืจืš" ื—ืœื” ืขืœื™ื”ื. ืœื“ื•ื’ืžื”, ื‘ืคื•ื ืงืฆื™ื” "def f(a, b, /, c, d, *, e, f):" ื ื™ืชืŸ ืœื”ืงืฆื•ืช ืืช ื”ืžืฉืชื ื™ื "a" ื•-"b" ืจืง ืœืคื™ ืกื“ืจ ื”ืขืจื›ื™ื. ,
    ื”ืžืฉืชื ื™ื "e" ื•-"f", ืจืง ื‘ืืžืฆืขื•ืช ื”ื”ืงืฆืื” "variable=value", ื•ืžืฉืชื ื™ื "c" ื•- "d" ื‘ื›ืœ ืื—ืช ืžื”ื“ืจื›ื™ื ื”ื‘ืื•ืช:

    f(10, 20, 30, 40, e=50, f=60)
    f(10, 20, s=30, d=40, e=50, f=60)

  • ื ื•ืกืฃ C API ื—ื“ืฉ
    ื›ื“ื™ ืœื”ื’ื“ื™ืจ ืืช ืคืจืžื˜ืจื™ ื”ืืชื—ื•ืœ ืฉืœ Python, ื”ืžืืคืฉืจื™ื ืฉืœื™ื˜ื” ืžืœืื” ืขืœ ื›ื•ืœื ืชึฐืฆื•ึผืจึธื” ื•ืžืชืงื ื™ื ืžืชืงื“ืžื™ื ืœื˜ื™ืคื•ืœ ื‘ืฉื’ื™ืื•ืช. ื”-API ื”ืžื•ืฆืข ืžืงืœ ืขืœ ื”ื˜ืžืขืช ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื”ืžืชื•ืจื’ืžืŸ ืฉืœ Python ื‘ื™ื™ืฉื•ืžื™ C ืื—ืจื™ื;

  • ืžื•ื˜ืžืข ืคืจื•ื˜ื•ืงื•ืœ Vectorcall ื—ื“ืฉ ืœื’ื™ืฉื” ืžื”ื™ืจื” ื™ื•ืชืจ ืœืื•ื‘ื™ื™ืงื˜ื™ื ื”ื›ืชื•ื‘ื™ื ื‘ืฉืคืช C. ื‘-CPython 3.8, ื”ื’ื™ืฉื” ืœ-Vectorcall ืขื“ื™ื™ืŸ ืžื•ื’ื‘ืœืช ืœืฉื™ืžื•ืฉ ืคื ื™ืžื™; ื”ืขื‘ืจื” ืœืงื˜ื’ื•ืจื™ื” ืฉืœ ืžืžืฉืงื™ API ื ื’ื™ืฉื™ื ืœืฆื™ื‘ื•ืจ ืžืชื•ื›ื ื ืช ื‘-CPython 3.9;
  • ื ื•ืกืฃ ืงืจื™ืื•ืช ืœ-Runtime Audit Hooks, ื”ืžืกืคืงื•ืช ืœื™ื™ืฉื•ืžื™ื ื•ืœืžืกื’ืจื•ืช ื‘-Python ื’ื™ืฉื” ืœืžื™ื“ืข ื‘ืจืžื” ื ืžื•ื›ื” ืขืœ ื”ืชืงื“ืžื•ืช ื”ืกืงืจื™ืคื˜ ืœื‘ื™ืงื•ืจืช ื”ืคืขื•ืœื•ืช ืฉื‘ื•ืฆืขื• (ืœื“ื•ื’ืžื”, ื ื™ืชืŸ ืœืขืงื•ื‘ ืื—ืจ ื™ื™ื‘ื•ื โ€‹โ€‹ืžื•ื“ื•ืœื™ื, ืคืชื™ื—ืช ืงื‘ืฆื™ื, ื‘ืืžืฆืขื•ืช trace, ื’ื™ืฉื” ืœืฉืงืขื™ ืจืฉืช, ื”ืคืขืœืช ืงื•ื“ ื“ืจืš exec, eval ื•-run_mod);
  • ื‘ืžื•ื“ื•ืœ ืžืœืคืคื•ื ื™ื ื—ืžื•ืฆื™ื ืžึฐืื•ึผื‘ื˜ึธื— ืชืžื™ื›ื” ื‘ืคืจื•ื˜ื•ืงื•ืœ Pickle 5, ื”ืžืฉืžืฉ ืœื™ืฆื™ืจืช ืื•ื‘ื™ื™ืงื˜ื™ื ื‘ืกื™ื“ืจื” ื•ื‘ืกื™ื“ืจื™ืืœื™ื–ืฆื™ื”. Pickle ืžืืคืฉืจ ืœืš ืœื™ื™ืขืœ ืืช ื”ืขื‘ืจืช ื›ืžื•ื™ื•ืช ื’ื“ื•ืœื•ืช ืฉืœ ื ืชื•ื ื™ื ื‘ื™ืŸ ืชื”ืœื™ื›ื™ Python ื‘ืชืฆื•ืจื•ืช ืžืจื•ื‘ื•ืช ืœื™ื‘ื•ืช ื•ืจื‘-ืฆืžืชื™ื ืขืœ ื™ื“ื™ ื”ืคื—ืชืช ืžืกืคืจ ืคืขื•ืœื•ืช ื”ืขืชืงืช ื”ื–ื™ื›ืจื•ืŸ ื•ื™ื™ืฉื•ื ื˜ื›ื ื™ืงื•ืช ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ื ื•ืกืคื•ืช ื›ื’ื•ืŸ ืฉื™ืžื•ืฉ ื‘ืืœื’ื•ืจื™ืชืžื™ ื“ื—ื™ืกื” ืกืคืฆื™ืคื™ื™ื ืœื ืชื•ื ื™ื. ื”ื’ืจืกื” ื”ื—ืžื™ืฉื™ืช ืฉืœ ื”ืคืจื•ื˜ื•ืงื•ืœ ื‘ื•ืœื˜ืช ื‘ืชื•ืกืคืช ืฉืœ ืžืฆื‘ ืฉื™ื“ื•ืจ ืžื—ื•ืฅ ืœืคืก, ืฉื‘ื• ื ื™ืชืŸ ืœื”ืขื‘ื™ืจ ื ืชื•ื ื™ื ื‘ื ืคืจื“ ืžื–ืจื ื”ื—ืžื•ืฆื™ื ื”ืจืืฉื™.
  • ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ืžื•ืคืขืœืช ื”ื’ืจืกื” ื”ืจื‘ื™ืขื™ืช ืฉืœ ืคืจื•ื˜ื•ืงื•ืœ Pickle, ืฉื‘ื”ืฉื•ื•ืื” ืœื’ืจืกื” ื”ืฉืœื™ืฉื™ืช ืฉื”ื•ืฆืขื” ื‘ืขื‘ืจ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ืžืืคืฉืจืช ื‘ื™ืฆื•ืขื™ื ื’ื‘ื•ื”ื™ื ื™ื•ืชืจ ื•ื”ืงื˜ื ืช ื’ื•ื“ืœ ื”ื ืชื•ื ื™ื ื”ืžื•ืขื‘ืจื™ื;
  • ื‘ืžื•ื“ื•ืœ ื”ืงืœื“ื” ืžื•ืฆื’ื•ืช ืžืกืคืจ ืชื›ื•ื ื•ืช ื—ื“ืฉื•ืช:
    • ื‘ื›ื™ืชื” TypedDict ืขื‘ื•ืจ ืžืขืจื›ื™ื ืืกื•ืฆื™ืื˜ื™ื‘ื™ื™ื ืฉื‘ื”ื ืคืจื˜ื™ ื”ืกื•ื’ ืžืฆื•ื™ืŸ ื‘ืžืคื•ืจืฉ ืขื‘ื•ืจ ื”ื ืชื•ื ื™ื ื”ืžืฉื•ื™ื›ื™ื ืœืžืคืชื—ื•ืช ("TypedDict('Point2D', x=int, y=int, label=str)").
    • ืกื•ื’ ืžื™ืœื•ืœื™ืช, ื”ืžืืคืฉืจ ืœืš ืœื”ื’ื‘ื™ืœ ืคืจืžื˜ืจ ืื• ืœื”ื—ื–ื™ืจ ืขืจืš ืœืžืกืคืจ ืขืจื›ื™ื ืžื•ื’ื“ืจื™ื ืžืจืืฉ ("ืœื™ื˜ืจืœ['ืžื—ื•ื‘ืจ', 'ืžื ื•ืชืง']").
    • ื‘ื ื™ื™ื”"ืกื•ืฃ", ื”ืžืืคืฉืจ ืœื”ื’ื“ื™ืจ ืืช ื”ืขืจื›ื™ื ืฉืœ ืžืฉืชื ื™ื, ืคื•ื ืงืฆื™ื•ืช, ืฉื™ื˜ื•ืช ื•ืžื—ืœืงื•ืช ืฉืœื ื ื™ืชืŸ ืœืฉื ื•ืช ืื• ืœื”ืงืฆื•ืช ืžื—ื“ืฉ ("pi: Final[float] = 3.1415926536").
  • ื ื•ืกืคื” ืืช ื”ื™ื›ื•ืœืช ืœื”ืงืฆื•ืช ืžื˜ืžื•ืŸ ืœืงื‘ืฆื™ ืงื•ืžืคื™ืœืฆื™ื” ืขื bytecode, ื ืฉืžืจ ื‘ืขืฅ FS ื ืคืจื“ ื•ืžื•ืคืจื“ ืžื”ืกืคืจื™ื•ืช ืขื ื”ืงื•ื“. ื”ื ืชื™ื‘ ืœืฉืžื™ืจืช ืงื‘ืฆื™ื ืขื bytecode ื ืงื‘ืข ื‘ืืžืฆืขื•ืช ืžืฉืชื ื” PYTHONPYCACHEPREFIX ืื• ื”ืืคืฉืจื•ืช "-X pycache_prefix";
  • ืžื•ื˜ืžืข ื”ื™ื›ื•ืœืช ืœื™ืฆื•ืจ ื‘ื ื™ื™ืช ื‘ืื’ื™ื ืฉืœ Python ื”ืžืฉืชืžืฉื•ืช ื‘-ABI ื–ื”ื” ืœืžื”ื“ื•ืจื”, ื”ืžืืคืฉืจืช ืœื˜ืขื•ืŸ ื”ืจื—ื‘ื•ืช ื”ื›ืชื•ื‘ื•ืช ื‘ืฉืคืช SI, ื”ื™ื“ื•ืจ ืขื‘ื•ืจ ืžื”ื“ื•ืจื•ืช ื™ืฆื™ื‘ื•ืช, ื‘-bug builds;
  • f-strings (ืœื™ื˜ืจืœื™ื ืžืขื•ืฆื‘ื™ื ืขื ืงื™ื“ื•ืžืช 'f') ืžืกืคืงื•ืช ืชืžื™ื›ื” ื‘ืื•ืคืจื˜ื•ืจ = (ืœื“ื•ื’ืžื”, "f'{expr=}'"), ื”ืžืืคืฉืจ ืœืš ืœื”ืžื™ืจ ื‘ื™ื˜ื•ื™ ืœื˜ืงืกื˜ ืœืฆื•ืจืš ื ื™ืคื•ื™ ื‘ืื’ื™ื ืงืœ ื™ื•ืชืจ. ืœื“ื•ื’ืžื”:

    โ€บโ€บโ€บ user = 'eric_idle'
    โ€บโ€บโ€บ member_since = date(1975, 7, 31)
    โ€บโ€บโ€บ f'{user=} {member_since=}'
    "user='eric_idle' member_since=datetime.date(1975, 7, 31)"

  • ื‘ื™ื˜ื•ื™ "ืœื”ืžืฉื™ืšยป ืžื•ืชืจ ืœืฉื™ืžื•ืฉ ื‘ืชื•ืš ื‘ืœื•ืง ืœื‘ืกื•ืฃ;
  • ื ื•ืกืฃ ืžื•ื“ื•ืœ ื—ื“ืฉ multiprocessing.shared_memory, ื”ืžืืคืฉืจ ืฉื™ืžื•ืฉ ื‘ืžืงื˜ืขื™ ื–ื™ื›ืจื•ืŸ ืžืฉื•ืชืคื™ื ื‘ืชืฆื•ืจื•ืช ืจื™ื‘ื•ื™ ืชื”ืœื™ื›ื™ื;
  • ื‘ืคืœื˜ืคื•ืจืžืช Windows, ื™ื™ืฉื•ื asyncio ื”ื•ืขื‘ืจ ืœืฉื™ืžื•ืฉ ื‘ืžื—ืœืงื” ProactorEventLoop;
  • ื”ื‘ื™ืฆื•ืขื™ื ืฉืœ ื”ื•ืจืืช LOAD_GLOBAL ื”ื•ื’ื“ืœื• ื‘ื›-40% ืขืงื‘ ืฉื™ืžื•ืฉ ื‘ืžื ื’ื ื•ืŸ ื—ื“ืฉ ืœืื—ืกื•ืŸ ืงื•ื“ ืื•ื‘ื™ื™ืงื˜.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”