เป€เบ›เบตเบ”เบ•เบปเบงเบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบก Python 3.11

เบซเบผเบฑเบ‡เบˆเบฒเบเบซเบ™เบถเปˆเบ‡เบ›เบตเบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบเบฒเบ™เบ›เปˆเบญเบเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก Python 3.11 เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบžเบตเบกเบกเบฒ. เบชเบฒเบ‚เบฒเปƒเบซเบกเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบซเบ™เบถเปˆเบ‡เบ›เบตเปเบฅเบฐเป€เบ„เบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ patches เบ—เบตเปˆเบกเบตเบˆเบธเบ”เบญเปˆเบญเบ™เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบกเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบญเบตเบเบชเบฒเบกเบ›เบตเป€เบ„เบดเปˆเบ‡.

เปƒเบ™เบ‚เบฐเบ™เบฐเบ”เบฝเบงเบเบฑเบ™, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš alpha เบ‚เบญเบ‡เบชเบฒเบ‚เบฒ Python 3.12 เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ (เบ•เบฒเบกเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบซเบกเปˆ, เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบชเบฒเบ‚เบฒเปƒเบซเบกเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบซเป‰เบฒเป€เบ”เบทเบญเบ™เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบตเบ”เบ•เบปเบงเบชเบฒเบ‚เบฒเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเปเบฅเบฐเบกเบฒเบฎเบญเบ”เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš alpha เปƒเบ™เป€เบงเบฅเบฒเบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบญเบเบ•เปเปˆเป„เบ›. ). เบชเบฒเบ‚เบฒ Python 3.12 เบˆเบฐเบขเบนเปˆเปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบ alpha เป€เบ›เบฑเบ™เป€เบงเบฅเบฒเป€เบˆเบฑเบ”เป€เบ”เบทเบญเบ™, เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ™เบฑเป‰เบ™เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปƒเบซเบกเปˆเบˆเบฐเบ–เบทเบเป€เบžเบตเปˆเบกเปเบฅเบฐเปเบกเบ‡เป„เบกเป‰เบ•เปˆเบฒเบ‡เป†เบˆเบฐเบ–เบทเบเปเบเป‰เป„เบ‚. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบšเบ•เป‰เบฒเบˆเบฐเบ–เบทเบเบ”เปเบฒเป€เบ™เบตเบ™เป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบชเบฒเบกเป€เบ”เบทเบญเบ™, เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปƒเบซเบกเปˆเบˆเบฐเบ–เบทเบเบซเป‰เบฒเบกเปเบฅเบฐเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเบ–เบทเบเบˆเปˆเบฒเบเปƒเบซเป‰เบเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบ‚เปเป‰เบšเบปเบเบžเปˆเบญเบ‡. เบชเบญเบ‡เป€เบ”เบทเบญเบ™เบชเบธเบ”เบ—เป‰เบฒเบเบเปˆเบญเบ™เบเบฒเบ™เบ›เปˆเบญเบ, เบชเบฒเบ‚เบฒเบˆเบฐเบขเบนเปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡เบœเบนเป‰เบชเบฐเบซเบกเบฑเบเบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบง, เป€เบŠเบดเปˆเบ‡เบเบฒเบ™เบชเบฐเบ–เบฝเบ™เบฅเบฐเบžเบฒเบšเบชเบธเบ”เบ—เป‰เบฒเบเบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”.

เบเบฒเบ™เป€เบžเบตเปˆเบกเปƒเบซเบกเปˆเปƒเบ™ Python 3.11 เบ›เบฐเบเบญเบšเบกเบต:

  • เบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เป„เบ”เป‰เบ–เบทเบเป€เบฎเบฑเบ”เป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เบชเบฒเบ‚เบฒเปƒเบซเบกเปˆเบ›เบฐเบเบญเบšเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เป€เบฅเบฑเปˆเบ‡เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” inline เบ‚เบญเบ‡เบเบฒเบ™เป‚เบ—เบŸเบฑเบ‡เบŠเบฑเบ™, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเปเบ›เป„เบงเบ‚เบญเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ›เบปเบเบเบฐเบ•เบด (x+x, x*x, xx, a[i], a[i] = z, f( arg) C( arg), o.method(), o.attr = z, *seq), เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบเบฐเบเบฝเบกเป‚เบ”เบเป‚เบ„เบ‡เบเบฒเบ™ Cinder เปเบฅเบฐ HotPy. เบญเบตเบ‡เบ•เบฒเบกเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เป‚เบซเบผเบ”, เบกเบตเบ„เบงเบฒเบกเป„เบงเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™ 10-60%. เป‚เบ”เบเบชเบฐเป€เบฅเปˆเบ, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบœเปˆเบฒเบ™เบŠเบธเบ”เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš pyperformance เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™ 25%.

    เบเบปเบ™เป„เบเบเบฒเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ bytecode เป„เบ”เป‰เบ–เบทเบเบญเบญเบเปเบšเบšเบ„เบทเบ™เปƒเปเปˆ, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบงเบฅเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบ™เบฒเบเบžเบฒเบชเบฒเบซเบผเบธเบ”เบฅเบปเบ‡ 10-15%. เบ›เบฐเบˆเบธเบšเบฑเบ™เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบกเบตเบฅเบฐเบซเบฑเบ”เปเบฅเบฐ bytecode เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบชเบฑเบ™เบขเปˆเบฒเบ‡เบชเบฐเบ–เบดเบ”เป‚เบ”เบเบ™เบฒเบเบžเบฒเบชเบฒ, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบเปเบฒเบˆเบฑเบ”เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™ unmarshaling bytecode เบชเบฐเบเบฑเบ”เบญเบญเบเบˆเบฒเบ cache เปเบฅเบฐเปเบ›เบ‡เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบกเบตเบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบงเบฒเบ‡เปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง.

  • เป€เบกเบทเปˆเบญเบชเบฐเปเบ”เบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบเบฒเบ™เป‚เบ—เปƒเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบงเบดเบ™เบดเบ”เป„เบช, เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ” (เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, เบžเบฝเบ‡เปเบ•เปˆเป€เบ™เบฑเป‰เบ™เปƒเบชเปˆเบชเบฒเบเป‚เบ”เบเบšเปเปˆเป„เบ”เป‰เบฅเบฐเบšเบธเบงเปˆเบฒเบชเปˆเบงเบ™เปƒเบ”เบ‚เบญเบ‡เบชเบฒเบเบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”). เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเปเบšเบšเบ‚เบฐเบซเบเบฒเบเบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ”เบถเบ‡เบ‚เปเป‰เบกเบนเบ™เบœเปˆเบฒเบ™ API เปเบฅเบฐเปƒเบŠเป‰เป€เบžเบทเปˆเบญเปเบœเบ™เบ—เบตเปˆเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ‚เบญเบ‡ bytecode เปเบ•เปˆเบฅเบฐเบ„เบปเบ™เป„เบ›เบซเบฒเบ•เปเบฒเปเบซเบ™เปˆเบ‡เบชเบฐเป€เบžเบฒเบฐเปƒเบ™เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เป‚เบ”เบเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™ codeobject.co_positions() เบซเบผเบทเบŸเบฑเบ‡เบŠเบฑเบ™ PyCode_Addr2Location() C API. เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบฎเบฑเบ”เปƒเบซเป‰เบšเบฑเบ™เบซเบฒเบเบฒเบ™เปเบเป‰เบ‚เปเป‰เบšเบปเบเบžเปˆเบญเบ‡เบ‡เปˆเบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบงเบฑเบ”เบ–เบธเบงเบฑเบ”เบˆเบฐเบ™เบฒเบ™เบธเบเบปเบกเบ—เบตเปˆเบ•เบฑเป‰เบ‡เป„เบงเป‰, เบเบฒเบ™เป€เบญเบตเป‰เบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบซเบผเบฒเบเบญเบฑเบ™, เปเบฅเบฐเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ—เบฒเบ‡เป€เบฅเบเป€เบฅเบเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™. Traceback (เป‚เบ—เบซเบผเป‰เบฒเบชเบธเบ”): เป„เบŸเบฅเปŒ "calculation.py", เปเบ–เบง 54, เปƒเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš = (x / y / z) * (a / b / c) ~~~~~~^~~ ZeroDivisionError: division by zero
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบธเปˆเบกเบ‚เบญเบ‡เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™, เปƒเบซเป‰เป‚เบ„เบ‡เบเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เปเบฅเบฐเบ›เบธเบ‡เปเบ•เปˆเบ‡เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบผเบฒเบเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™. เบ›เบฐเป€เบžเบ”เปƒเบซเบกเปˆเบ‚เบญเบ‡เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™ ExceptionGroup เปเบฅเบฐ BaseExceptionGroup เบ–เบทเบเบชเบฐเป€เบซเบ™เบตเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบเบธเปˆเบกเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบซเบผเบฒเบเปเบฅเบฐเบเบฒเบ™เป€เบญเบตเป‰เบ™เบฎเปˆเบงเบกเบเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ, เปเบฅเบฐเบ„เปเบฒเบงเปˆเบฒ "เบเบปเบเป€เบงเบฑเป‰เบ™*" เบˆเบฐเบ–เบทเบเป€เบžเบตเปˆเบกเปƒเบชเปˆเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบ—เบตเปˆเปเบเบเบญเบญเบเบˆเบฒเบเบเบธเปˆเบก.
  • เบงเบดเบ—เบตเบเบฒเบ™ add_note() เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบŠเบฑเป‰เบ™ BaseException, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปเบ™เบšเบšเบฑเบ™เบ—เบถเบเบ‚เปเป‰เบ„เบงเบฒเบกเปƒเบชเปˆเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™, เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบกเบ‚เปเป‰เบกเบนเบ™เบšเปเบฅเบดเบšเบปเบ”เบ—เบตเปˆเบšเปเปˆเบกเบตเบขเบนเปˆเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบ–เบทเบเบ–เบดเป‰เบก.
  • เบ›เบฐเป€เบžเบ”เบžเบดเป€เบชเบ”เบ•เบปเบ™เป€เบญเบ‡เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบžเบทเปˆเบญเป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบซเป‰เบญเบ‡เบฎเบฝเบ™เบชเปˆเบงเบ™เบ•เบปเบงเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™. เบ•เบปเบ™เป€เบญเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบญเบฐเบ—เบดเบšเบฒเบเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบชเบปเปˆเบ‡เบ„เบทเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบŠเบฑเป‰เบ™เบฎเบฝเบ™เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบ”เป‰เบงเบเบงเบดเบ—เบตเบ—เบตเปˆเบ‡เปˆเบฒเบเบเบงเปˆเบฒเบเบฒเบ™เปƒเบŠเป‰ TypeVar. class MyLock: def __enter__(self) -> Self: self.lock() เบเบฑเบšเบ„เบทเบ™เบ•เบปเบ™เป€เบญเบ‡
  • เบ›เบฐเป€เบžเบ” LiteralString เบžเบดเป€เบชเบ”เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบฅเบงเบกเป€เบ–เบดเบ‡เบ•เบปเบงเปœเบฑเบ‡เบชเบทเบชเบฐเบ•เบฃเบดเบ‡เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบšเบ›เบฐเป€เบžเบ” LiteralString (เป€เบŠเบฑเปˆเบ™: เบชเบฐเบ•เบฃเบดเบ‡เป€เบ›เบปเปˆเบฒ เปเบฅเบฐเบชเบฒเบเบชเบฐเบ•เบฃเบดเบ‡เบ‚เบญเบ‡เบ›เบฐเป€เบžเบ” LiteralString, เปเบ•เปˆเบšเปเปˆเปเบกเปˆเบ™เบชเบฒเบเบชเบฐเบ•เบฃเบดเบ‡เบ—เบตเปˆเบกเบฑเบ เบซเบผเบทเบฅเบงเบกเบเบฑเบ™เบ‚เบญเบ‡เบ›เบฐเป€เบžเบ” str). เบ›เบฐเป€เบžเบ” LiteralString เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบˆเปเบฒเบเบฑเบ”เบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ” string argument เป„เบ›เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆ, เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เป‚เบ”เบเบ•เบปเบ™เป€เบญเบ‡เบ‚เบญเบ‡เบžเบฒเบเบชเปˆเบงเบ™เบ‚เบญเบ‡ strings เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ™เปเบฒเป„เบ›เบชเบนเปˆเบŠเปˆเบญเบ‡เป‚เบซเบงเปˆ, เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡ strings เบชเปเบฒเบฅเบฑเบš SQL queries เบซเบผเบทเบ„เปเบฒเบชเบฑเปˆเบ‡ shell. def run_query(sql: LiteralString) -> ... ... def caller(arbitrary_string: str, query_string: LiteralString, table_name: LiteralString, ) -> None: run_query("SELECT * FROM students") # ok run_query(literal_string) # ok run_query( "SELECT * FROM " + literal_string) # ok run_query(arbitrary_string) # Error run_query( # Error f"SELECT * FROM students WHERE name = {arbitrary_string}" )
  • เบ›เบฐเป€เบžเบ” TypeVarTuple เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบก, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเปเบ›เบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เบšเปเปˆเป€เบซเบกเบทเบญเบ™เบเบฑเบš TypeVar, เบเบงเบกเป€เบญเบปเบฒเบšเปเปˆเปเบกเปˆเบ™เบ›เบฐเป€เบžเบ”เบซเบ™เบถเปˆเบ‡, เปเบ•เปˆเป€เบ›เบฑเบ™เบˆเปเบฒเบ™เบงเบ™เบ›เบฐเป€เบžเบ”เบ•เปˆเบฒเบ‡เป†.
  • เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ›เบฐเบเบญเบšเบกเบตเป‚เบกเบ”เบนเบ™ tomllib เบ—เบตเปˆเบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบฎเบนเบšเปเบšเบš TOML.
  • เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เปเบฒเบเปเบ•เปˆเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบงเบฑเบ”เบˆเบฐเบ™เบฒเบ™เบธเบเบปเบกเบ›เบฐเป€เบžเบ” (TypedDict) เบ”เป‰เบงเบเป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™ เปเบฅเบฐ เบšเปเปˆเบˆเบณเป€เบ›เบฑเบ™เปเบกเปˆเบ™เบชเบฐเปœเบญเบ‡เปƒเบซเป‰เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™ เปเบฅเบฐเบ—เบฒเบ‡เป€เบฅเบทเบญเบ (เบ•เบฒเบกเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ–เบทเบเบ›เบฐเบเบฒเบ”เบ—เบฑเบ‡เปเบปเบ”เปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ เบ–เป‰เบฒเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ—เบฑเบ‡เปเบปเบ”เบšเปเปˆเบ–เบทเบเบ•เบฑเป‰เบ‡เป€เบ›เบฑเบ™เบœเบดเบ”). class Movie(TypedDict): title: str year: NotRequired[int] m1: Movie = {"title": "Black Panther", "year": 2018} # OK m2: Movie = {"title": "Star Wars" } # OK (เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ›เบตเป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ) m3: Movie = {"year": 2022} # เบœเบดเบ”เบžเบฒเบ”, เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบซเบปเบงเบ‚เปเป‰เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบšเปเปˆเป„เบ”เป‰เบ•เบทเปˆเบกเปƒเบชเปˆ)
  • เบซเป‰เบญเบ‡เบฎเบฝเบ™ TaskGroup เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เป‚เบกเบ”เบนเบ™ asyncio เบ”เป‰เบงเบเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™ asynchronous เบ—เบตเปˆเบฅเปเบ–เป‰เบฒเปƒเบซเป‰เบเบธเปˆเบกเบงเบฝเบเบชเปเบฒเป€เบฅเบฑเบ”. เบเบฒเบ™เป€เบžเบตเปˆเบกเปœเป‰เบฒเบงเบฝเบเปƒเบชเปˆเบเบธเปˆเบกเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰เบงเบดเบ—เบต create_task(). async def main(): async with asyncio.TaskGroup() as tg: task1 = tg.create_task(some_coro(โ€ฆ)) task2 = tg.create_task(another_coro(โ€ฆ)) print("เบงเบฝเบเบ—เบฑเบ‡เบชเบญเบ‡เบชเบณเป€เบฅเบฑเบ”เปเบฅเป‰เบง.")
  • Added class, method, and function decorator @dataclass_transform, เป€เบกเบทเปˆเบญเบฅเบฐเบšเบธ, เบ•เบปเบงเบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”เบชเบฐเบ–เบดเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เปเปˆเบงเบฑเบ”เบ–เบธเบ„เบทเบเบฑเบšเบงเปˆเบฒเปƒเบŠเป‰เบ•เบปเบงเบญเบญเบเปเบšเบš @dataclasses.dataclass. เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰, เบซเป‰เบญเบ‡เบฎเบฝเบ™ CustomerModel เบˆเบฐเบ–เบทเบเบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”เบ„เบทเบเบฑเบšเบซเป‰เบญเบ‡เบฎเบฝเบ™เบ—เบตเปˆเบกเบต @dataclasses.dataclass decorator, i.e. เบเป‰เบญเบ™เบงเปˆเบฒเบกเบตเบงเบดเบ—เบตเบเบฒเบ™ __init__ เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ•เบปเบงเปเบ› id เปเบฅเบฐเบŠเบทเปˆ. @dataclass_transform() class ModelBase: โ€ฆ class CustomerModel(ModelBase): id: int เบŠเบทเปˆ: str
  • เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เปƒเบŠเป‰เบเบฒเบ™เบˆเบฑเบ”เบเบธเปˆเบกเบ›เบฐเบฅเปเบฒเบกเบฐเบ™เบน ((?>โ€ฆ)) เปเบฅเบฐเบ•เบปเบงเบฅเบฐเบšเบธเบ›เบฐเบฅเบดเบกเบฒเบ™เบญเบดเบ”เบชเบฒ (*+, ++, ?+, {m, n}+) เปƒเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™เบ›เบปเบเบเบฐเบ•เบด.
  • เป€เบžเบตเปˆเบกเบ•เบปเบงเป€เบฅเบทเบญเบเปเบ–เบงเบ„เปเบฒเบชเบฑเปˆเบ‡ "-P" เปเบฅเบฐเบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก PYTHONSAFEPATH เป€เบžเบทเปˆเบญเบ›เบดเบ”เบเบฒเบ™เบ•เบดเบ”เบ„เบฑเบ”เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบญเบ‡เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบญเบฒเบ”เบšเปเปˆเบ›เบญเบ”เป„เบžเป„เบ›เบซเบฒ sys.path.
  • เบ›เบฑเบšเบ›เบธเบ‡เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ” py.exe เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเป€เบงเบ—เบต Windows, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบˆเบธเบšเบฑเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ "-V:" syntax. / " เบ™เบญเบโ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™ "- . ".
  • เบกเบฐเบซเบฒเบžเบฒเบเบซเบผเบฒเบเบญเบฑเบ™เปƒเบ™ C API เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ™เปเบ–เบงเบ›เบปเบเบเบฐเบ•เบด เบซเบผเบทเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ.
  • เป‚เบกเบ”เบนเบ™ uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev, เปเบฅเบฐ sunau modules เป„เบ”เป‰เบ–เบทเบเบเบปเบเป€เบฅเบตเบ เปเบฅเบฐเบˆเบฐเบ–เบทเบเบฅเบถเบšเบญเบญเบเปƒเบ™ Python. 3.13 เบ›เปˆเบญเบ. เบฅเบถเบšเบŸเบฑเบ‡เบŠเบฑเบ™ PyUnicode_Encode* เบญเบญเบเปเบฅเป‰เบง.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™