αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Python 3.11

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž˜αž½αž™αž†αŸ’αž“αžΆαŸ†αž“αŸƒαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžŠαŸαžŸαŸ†αžαžΆαž“αŸ‹αž“αŸƒαž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Python 3.11 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž•αŸ’αžŸαžΆαž™αŸ” αžŸαžΆαžαžΆαžαŸ’αž˜αžΈαž“αŸαŸ‡αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž™αŸˆαž–αŸαž› XNUMX αž†αŸ’αž“αžΆαŸ†αž€αž“αŸ’αž›αŸ‡ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸ„αŸ‡αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž™αŸˆαž–αŸαž› XNUMX αž†αŸ’αž“αžΆαŸ†αž€αž“αŸ’αž›αŸ‡αž‘αŸ€αž αž€αžΆαžšαž‡αž½αžŸαž‡αž»αž›αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžΆαžŠαžΎαž˜αŸ’αž”αžΈαž›αž»αž”αž”αŸ†αž”αžΆαžαŸ‹αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αŸ”

αž€αŸ’αž“αž»αž„αž–αŸαž›αž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆαž“αŸαŸ‡ αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž’αžΆαž›αŸ‹αž αŸ’αžœαžΆαž“αŸƒαžŸαžΆαžαžΆ Python 3.12 αž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ (αžŸαŸ’αžšαž”αžαžΆαž˜αž€αžΆαž›αžœαž·αž—αžΆαž‚αž“αŸƒαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαžαŸ’αž˜αžΈ αž€αžΆαžšαž„αžΆαžšαž“αŸ…αž›αžΎαžŸαžΆαžαžΆαžαŸ’αž˜αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αŸ’αžšαžΆαŸ†αžαŸ‚αž˜αž»αž“αž–αŸαž›αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžŸαžΆαžαžΆαž˜αž»αž“ αž“αž·αž„αžˆαžΆαž“αžŠαž›αŸ‹αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αžŸαžΆαž€αž›αŸ’αž”αž„αž’αžΆαž›αŸ‹αž αŸ’αžœαžΆαž“αŸ…αž–αŸαž›αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αŸ” ) សអខអ Python 3.12 αž“αžΉαž„αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž’αžΆαž›αŸ‹αž αŸ’αžœαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž™αŸˆαž–αŸαž›αž”αŸ’αžšαžΆαŸ†αž–αžΈαžšαžαŸ‚ αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž“αŸ„αŸ‡αž˜αž»αžαž„αžΆαžšαžαŸ’αž˜αžΈαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜ αž“αž·αž„αž‡αž½αžŸαž‡αž»αž›αž€αŸ†αž αž»αžŸαŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸαŸ‡ αž€αŸ†αžŽαŸ‚αž”αŸ‚αžαžΆαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžΆαž€αž›αŸ’αž”αž„αžšαž™αŸˆαž–αŸαž› XNUMX αžαŸ‚ αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž“αŸ„αŸ‡αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž˜αž»αžαž„αžΆαžšαžαŸ’αž˜αžΈαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž αžΆαž˜αžƒαžΆαžαŸ‹ αž αžΎαž™αž€αžΆαžšαž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž‡αž½αžŸαž‡αž»αž›αž€αŸ†αž αž»αžŸαŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž™αŸˆαž–αŸαž›αž–αžΈαžšαžαŸ‚αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž˜αž»αž“αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ αžŸαžΆαžαžΆαž“αžΉαž„αžŸαŸ’αžαž·αžαž“αŸ…αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž”αŸαž€αŸ’αžαž‡αž“αž…αŸαž‰αž•αŸ’αžŸαžΆαž™ αžŠαŸ‚αž›αž€αžΆαžšαžšαž€αŸ’αžŸαžΆαž›αŸ†αž“αžΉαž„αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαŸ”

αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αžαŸ’αž˜αžΈαž‘αŸ… Python 3.11 αžšαž½αž˜αž˜αžΆαž“:

  • αž€αžΆαžšαž„αžΆαžšαžŸαŸ†αžαžΆαž“αŸ‹αŸ—αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαŸ” αžŸαžΆαžαžΆαžαŸ’αž˜αžΈαžšαž½αž˜αž˜αžΆαž“αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“ αž“αž·αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž±αŸ’αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αŸ’αž“αž»αž„αž‡αž½αžšαž“αŸƒαž€αžΆαžšαž αŸ…αž˜αž»αžαž„αžΆαžš αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αŸ’αž“αž€αž”αž€αž”αŸ’αžšαŸ‚αžšαž αŸαžŸαž“αŸƒαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš (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 unmarshalling αžŠαŸ‚αž›αžŸαŸ’αžšαž„αŸ‹αž…αŸαž‰αž–αžΈαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αž“αž·αž„αž”αŸ†αž”αŸ’αž›αŸ‚αž„αžœαžαŸ’αžαž»αžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αžΌαžŠαžŠαžΎαž˜αŸ’αž”αžΈαžŠαžΆαž€αŸ‹αž€αŸ’αž“αž»αž„αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αžαžΆαž˜αžœαž“αŸ’αžαŸ”

  • αž“αŸ…αž–αŸαž›αž”αž„αŸ’αž αžΆαž‰αžŠαžΆαž“αž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαžΆαžšαžšαŸ„αž‚αžœαž·αž“αž·αž…αŸ’αž†αŸαž™ αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αžΆαž…αž”αž„αŸ’αž αžΆαž‰αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαž€αž“αŸ’αžŸαŸ„αž˜αžŠαŸ‚αž›αž”αžŽαŸ’αžαžΆαž›αž±αŸ’αž™αž˜αžΆαž“αž€αŸ†αž αž»αžŸ (αž–αžΈαž˜αž»αž“αž˜αžΆαž“αžαŸ‚αž”αž“αŸ’αž‘αžΆαžαŸ‹αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αž›αž·αž…αžŠαŸ„αž™αž˜αž·αž“αž›αž˜αŸ’αž’αž·αžαžαžΆαžαžΎαž•αŸ’αž“αŸ‚αž€αžŽαžΆαž“αŸƒαž”αž“αŸ’αž‘αžΆαžαŸ‹αžŠαŸ‚αž›αž”αžŽαŸ’αžαžΆαž›αž±αŸ’αž™αž˜αžΆαž“αž€αŸ†αž αž»αžŸ)αŸ” αž–αŸαžαŸŒαž˜αžΆαž“αžŠαžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž€αŸαž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αžαžΆαž˜αžšαž™αŸˆ API αž“αž·αž„αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž‚αžΌαžŸαž•αŸ‚αž“αž‘αžΈαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž’αŸ†αž–αžΈ bytecode αž“αžΈαž˜αž½αž™αŸ—αž‘αŸ…αž€αžΆαž“αŸ‹αž‘αžΈαžαžΆαŸ†αž„αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαž”αŸ’αžšαž—αž–αžŠαŸ„αž™αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš codeobject.co_positions() αž¬αž˜αž»αžαž„αžΆαžš C API PyCode_Addr2Location()αŸ” αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž“αŸαŸ‡αž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆαž€αžΆαž“αŸ‹αžαŸ‚αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ†αž”αžΆαžαŸ‹αž”αž‰αŸ’αž αžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αžœαžαŸ’αžαž»αžœαž…αž“αžΆαž“αž»αž€αŸ’αžšαž˜αžŠαŸ‚αž›αž”αžΆαž“αžŠαžΆαž€αŸ‹αž‚αŸ’αž“αžΆ αž€αžΆαžšαž αŸ…αž˜αž»αžαž„αžΆαžšαž…αŸ’αžšαžΎαž“ αž“αž·αž„αž€αž“αŸ’αžŸαŸ„αž˜αž“αž–αŸ’αžœαž“αŸ’αž’αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αŸ” Traceback (αž€αžΆαžšαž αŸ…αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ†αž•αž»αž): αž―αž€αžŸαžΆαžš "calculation.py", αž”αž“αŸ’αž‘αžΆαžαŸ‹ 54, in result = (x/y/z) * (a/b/c) ~~~~~~^~~ ZeroDivisionError: αž€αžΆαžšαž”αŸ‚αž„αž…αŸ‚αž€αžŠαŸ„αž™αžŸαžΌαž“αŸ’αž™
  • αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αŸ’αžšαž»αž˜αž€αžšαžŽαžΈαž›αžΎαž€αž›αŸ‚αž„ αžŠαŸ„αž™αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αžΌαžœαžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžšαžŽαžΈαž›αžΎαž€αž›αŸ‚αž„αž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαž‡αžΆαž…αŸ’αžšαžΎαž“αž€αŸ’αž“αž»αž„αž–αŸαž›αžαŸ‚αž˜αž½αž™αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαžŠαžΆαž€αŸ‹αž‡αžΆαž€αŸ’αžšαž»αž˜αž€αžšαžŽαžΈαž›αžΎαž€αž›αŸ‚αž„αž‡αžΆαž…αŸ’αžšαžΎαž“ αž“αž·αž„αž›αžΎαž€αž–αž½αž€αžœαžΆαžšαž½αž˜αž‚αŸ’αž“αžΆ αž”αŸ’αžšαž—αŸαž‘αž€αžšαžŽαžΈαž›αžΎαž€αž›αŸ‚αž„αžαŸ’αž˜αžΈ ExceptionGroup αž“αž·αž„ BaseExceptionGroup αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αž“αžΎαž‘αžΎαž„ αž αžΎαž™αž€αž“αŸ’αžŸαŸ„αž˜ "exception*" αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αžŠαžΎαž˜αŸ’αž”αžΈαžšαŸ†αž›αŸαž…αž€αžΆαžšαž›αžΎαž€αž›αŸ‚αž„αž”αž»αž‚αŸ’αž‚αž›αž–αžΈαž€αŸ’αžšαž»αž˜αž˜αž½αž™αŸ”
  • αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš add_note() αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αžαŸ’αž“αžΆαž€αŸ‹ BaseException αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž—αŸ’αž‡αžΆαž”αŸ‹αž…αŸ†αžŽαžΆαŸ†αž’αžαŸ’αžαž”αž‘αž‘αŸ…αž€αžšαžŽαžΈαž›αžΎαž€αž›αŸ‚αž„ αž§αž‘αžΆαž αžšαžŽαŸ αž”αž“αŸ’αžαŸ‚αž˜αž–αŸαžαŸŒαž˜αžΆαž“αž”αžšαž·αž”αž‘αžŠαŸ‚αž›αž˜αž·αž“αž˜αžΆαž“αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž€αžΆαžšαž›αžΎαž€αž›αŸ‚αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ„αŸ‡αž…αŸ„αž›αŸ”
  • αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž”αŸ’αžšαž—αŸαž‘αžαŸ’αž›αž½αž“αž―αž„αž–αž·αžŸαŸαžŸ αžŠαžΎαž˜αŸ’αž”αžΈαžαŸ†αžŽαžΆαž„αž±αŸ’αž™αžαŸ’αž“αžΆαž€αŸ‹αž―αž€αž‡αž“αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αŸ” αžαŸ’αž›αž½αž“β€‹αž―αž„β€‹αž’αžΆαž…β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αŸ’αžšαžΎβ€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž…αŸ†αžŽαžΆαŸ†β€‹αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšβ€‹αžŠαŸ‚αž›β€‹αžαŸ’αžšαž‘αž”αŸ‹β€‹αž§αž‘αžΆαž αžšαžŽαŸβ€‹αž“αŸƒβ€‹αžαŸ’αž“αžΆαž€αŸ‹β€‹αžšαž”αžŸαŸ‹β€‹αžœαžΆβ€‹αžαžΆαž˜β€‹αžœαž·αž’αžΈβ€‹αžŸαžΆαž˜αž‰αŸ’αž‰β€‹αž‡αžΆαž„β€‹αž€αžΆαžšβ€‹αž”αŸ’αžšαžΎ TypeVar αŸ” αžαŸ’αž“αžΆαž€αŸ‹ MyLock: def __enter__(αžαŸ’αž›αž½αž“αž―αž„) -> αžαŸ’αž›αž½αž“αž―αž„: self.lock() αžαŸ’αžšαž‘αž”αŸ‹αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αŸ”
  • αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž”αŸ’αžšαž—αŸαž‘ LiteralString αž–αž·αžŸαŸαžŸαžŠαŸ‚αž›αž’αžΆαž…αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αžαŸ‚αž’αž€αŸ’αžŸαžšαž’αž€αŸ’αžŸαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αž”αŸ’αžšαž—αŸαž‘ LiteralString (ឧ. αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžšαž‘αž‘αŸ αž“αž·αž„ LiteralString αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž·αž“αž˜αŸ‚αž“αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžšαžŠαŸ‚αž›αž”αŸ†αž–αžΆαž“ αž¬αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž‘αŸ)αŸ” αž”αŸ’αžšαž—αŸαž‘ LiteralString αž’αžΆαž…β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αŸ’αžšαžΎβ€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž€αŸ†αžŽαžαŸ‹β€‹αž€αžΆαžšβ€‹αž†αŸ’αž›αž„β€‹αž€αžΆαžαŸ‹β€‹αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹β€‹αžαŸ’αžŸαŸ‚β€‹αž‘αŸ…β€‹αž˜αž»αžαž„αžΆαžš αž€αžΆαžšβ€‹αž‡αŸ†αž“αž½αžŸβ€‹αžŠαŸ„αž™β€‹αž”αŸ†αž–αžΆαž“β€‹αž“αŸƒβ€‹αž•αŸ’αž“αŸ‚αž€β€‹αž“αŸƒβ€‹αžαŸ’αžŸαŸ‚β€‹αžŠαŸ‚αž›β€‹αž’αžΆαž…β€‹αž“αžΆαŸ†β€‹αž±αŸ’αž™β€‹αž˜αžΆαž“β€‹αž—αžΆαž–β€‹αž„αžΆαž™β€‹αžšαž„αž‚αŸ’αžšαŸ„αŸ‡ αž§αž‘αžΆαž αžšαžŽαŸ αž–αŸαž›β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αžαŸ’αžŸαŸ‚β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αžŸαŸ†αžŽαž½αžš SQL αž¬β€‹αž–αžΆαž€αŸ’αž™β€‹αž”αž‰αŸ’αž‡αžΆβ€‹αžŸαŸ‚αž›αŸ” def run_query(sql: LiteralString) -> ... ... def caller(arbitrary_string: str, query_string: LiteralString, table_name: LiteralString, ) -> αž‚αŸ’αž˜αžΆαž“: 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" } # αž™αž›αŸ‹αž–αŸ’αžšαž˜ (αžœαžΆαž›αž†αŸ’αž“αžΆαŸ†αž‚αžΊαžŸαŸ’αžšαŸαž…αž…αž·αžαŸ’αž) m3: αž—αžΆαž–αž™αž“αŸ’αž = {β€œαž†αŸ’αž“αžΆαŸ†β€: 2022} # αž€αŸ†αž αž»αžŸ αžœαžΆαž›αž…αŸ†αžŽαž„αž‡αžΎαž„αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ†αž–αŸαž‰αž‘αŸ)
  • αžαŸ’αž“αžΆαž€αŸ‹ TaskGroup αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αž˜αŸ‰αžΌαžŒαž»αž› asyncio αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž”αžšαž·αž”αž‘αž’αžŸαž˜αž€αžΆαž›αžŠαŸ‚αž›αžšαž„αŸ‹αž…αžΆαŸ†αž€αŸ’αžšαž»αž˜αž€αž·αž…αŸ’αž…αž€αžΆαžšαž˜αž½αž™αžŠαžΎαž˜αŸ’αž”αžΈαž”αž‰αŸ’αž…αž”αŸ‹αŸ” αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž€αž·αž…αŸ’αž…αž€αžΆαžšαž‘αŸ…αž€αŸ’αžšαž»αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŠαŸ„αž™αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš create_task()αŸ” async def main(): async with asyncio.TaskGroup() as tg: task1 = tg.create_task(some_coro(...)) task2 = tg.create_task(another_coro(...)) print("αž€αž·αž…αŸ’αž…αž€αžΆαžšαž‘αžΆαŸ†αž„αž–αžΈαžšαž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹αž₯αž‘αžΌαžœαž“αŸαŸ‡ ”)
  • αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜ @dataclass_transform decorator αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ’αž“αžΆαž€αŸ‹ αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αž αž“αž·αž„αž˜αž»αžαž„αžΆαžš αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹ αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž”αŸ’αžšαž—αŸαž‘αž‹αž·αžαž·αžœαž“αŸ’αž αž…αžΆαžαŸ‹αž‘αž»αž€αžœαžαŸ’αžαž»αžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžΎ @dataclasses.dataclass decoratorαŸ” αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαžαžΆαž„αž€αŸ’αžšαŸ„αž˜ αžαŸ’αž“αžΆαž€αŸ‹ CustomerModel αž“αŸ…αž–αŸαž›αž–αž·αž“αž·αžαŸ’αž™αž”αŸ’αžšαž—αŸαž‘ αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž‘αŸ…αž“αžΉαž„αžαŸ’αž“αžΆαž€αŸ‹αžŠαŸ‚αž›αž˜αžΆαž“ @dataclasses.dataclass decorator αž–αŸ„αž›αž‚αžΊαž§αŸ” αžŠαžΌαž…αž‡αžΆαž˜αžΆαž“αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αž __init__ αžŠαŸ‚αž›αž‘αž‘αž½αž›αž™αž€αž’αžαŸαžš id αž“αž·αž„αžˆαŸ’αž˜αŸ„αŸ‡αŸ” @dataclass_transform() class ModelBase: ... class CustomerModel(ModelBase): id: int name: str
  • αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž“αŸ’αžŸαŸ„αž˜αž’αž˜αŸ’αž˜αžαžΆ αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαžΎαž€αžΆαžšαž…αžΆαžαŸ‹αžαŸ’αž“αžΆαž€αŸ‹αž’αžΆαžαžΌαž˜ ((?>...)) αž“αž·αž„ quantifiers (*+, ++, ?+, {m, n}+) αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αŸ”
  • αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‡αž˜αŸ’αžšαžΎαžŸαž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ "-P" αž“αž·αž„αž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“ PYTHONSAFEPATH αžŠαžΎαž˜αŸ’αž”αžΈαž”αž·αž‘αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž“αŸƒαž•αŸ’αž›αžΌαžœαž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž’αžΆαž…αž˜αž·αž“αž˜αžΆαž“αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž‘αŸ…αž€αžΆαž“αŸ‹ sys.path αŸ”
  • αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ py.exe αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαŸαž‘αž·αž€αžΆαžœαžΈαž“αžŠαžΌαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αžŠαŸ„αž™αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžΆαž€αŸ’αž™αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ "-V:" αŸ” / "αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž›αžΎ"- . "
  • αž˜αŸ‰αžΆαž€αŸ’αžšαžΌαž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸ…αž€αŸ’αž“αž»αž„ 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

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹