ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ áá áºááŸá áºá¡ááŒá¬ááœááºá Python 3.10 áááá¯ááááºážáááºážáá¬áá¬á áá¬ážá áááá¬áááºááŸá¬ážáá±á¬ ááŒáá·áºáá»áááŸá¯ááᯠááŒááá²á·áááºá áá¬áááœá²á¡áá áºááᯠáá áºááŸá áºááœá²ááŒá¬ áá¶á·ááá¯ážáá±ážáááºááŒá áºááŒá®ážá ááá¯á·áá±á¬ááºááœáẠá¡á¬ážáááºážáá»ááºáá»á¬ážááᯠáááºááŸá¬ážáááºá¡ááœáẠáá±á¬ááºááẠáá¯á¶ážááŸá áºááœá²ááŒá¬ ááŒá¯ááŒááºááŸá¯áá»á¬áž ááŒá¯áá¯ááºáááºááŒá áºáááºá
áá áºáá»áááºáááºážááŸá¬áááºá Python 3.11 áá¬áááœá²á á¡ááºáá¬á ááºážáááºááŸá¯ááᯠá áááºáá²á·ááẠ(ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á¡áá»áááºááá¬ážá¡áá áºá¡áá ááááºáá¬áááœá²ááá¯ááºááŒááºáá® áá«ážáá¡ááá¯ááœáẠáá¬áááœá²á¡áá áºáá áºáá¯ááœáẠá¡áá¯ááºá áááºááŒá®áž áá±á¬ááºááœááºááŸááá»áááºá á¡ááºááºáá¬á ááºážáááºááŸá¯á¡ááá·áºááá¯á· áá±á¬ááºááŸááááºá ) Python 3.11 áá¬áááœá²ááẠáá¯áá áºáááŒá¬ á¡ááºááºáá¬áá¯ááºáá±ááŸá¯áá»á¬ážááœáẠáá«áááºáááºááŒá áºááŒá®ážá áááºážáá¬áá¡ááœááºáž á¡ááºá¹áá«áááºá¡áá áºáá»á¬ážááᯠáá±á«ááºážááá·áºáááºááŒá áºááŒá®áž áá»áá¯á·ááœááºážáá»ááºáá»á¬ážááᯠááŒá¯ááŒááºáá±ážáááºááŒá áºáááºá áááºážáá±á¬ááºá beta áá¬ážááŸááºážáá»á¬ážááᯠáá¯á¶ážáááŒá¬ á ááºážáááºáááºááŒá áºááŒá®ážá áááºážáá¬áá¡ááœááºáž á¡ááºá¹áá«áááºá¡áá áºáá»á¬áž áááºááá¯ážááŒááºážááᯠáá¬ážááŒá áºáááºááŒá áºááŒá®áž bug áá»á¬ážááᯠááŒá¯ááŒááºáááºá¡ááœáẠá¡á¬ážáá¯á¶ážá¡á¬áá¯á¶á áá¯ááºáááºááŒá áºáááºá ááá¯ááºáá±áá® áá±á¬ááºáá¯á¶ážááŸá áºáááœáẠáá¬áááœá²ááẠáá±á¬ááºáá¯á¶ážáááºááŒáááºááŸá¯ááᯠáá¯ááºáá±á¬ááºááá·áº ááœáŸáẠáá±á¬áºááá¯ááºá á¬ážááŸááºá¡ááá·áºááœáẠááŸááá±áááºááŒá áºáááºá
Python 3.10 ááœáẠáááºááá¯ážá¡áá áºáá»á¬áž áá«áááºáááºá
- áá¯ááºáááºááá¯ááºááŸá¯ááᯠááá¯ááá¯áá±á¬ááºážááœááºá
á±áᬠááááºáááᯠPython á¡áá¬ááá¹áá¯áá»á¬ážááᯠááá¯ážááŸááºážááœááºáá°á
áœá¬ ááŸááºááœá²ááá¯ááºá
á±áááºááŸáá·áº á¡ááá·áºááŒáá·áº static á¡áá»áá¯ážá¡á
á¬ážá
á
áºáá±ážááŒááºážááŸáá
áºááá·áº áá¯ááºáá¯á¶ááŒááºá
áááºáá»áááŸá¯ááᯠááá¯ážááŒáŸáá·áºáá±ážááá·áº áá¯á¶á
á¶áá°áá®ááŸá¯á¡ááœáẠ"match" ááŸáá·áº "case" á¡á±á¬áºááá±áá¬áá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá¬ážáááºá á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááẠScalaá Rust ááŸáá·áº F# ááœáẠáá±ážáá¬ážááá·áº "match" á¡á±á¬áºááá±áá¬ááŸáá·áº áá°áááºá áááºážááẠáááºááŸááºáá¬ážáá±á¬ á
áá¬ážáááºáá
áºáá¯á ááááºááᯠ"case" á¡á±á¬áºááá±áá¬áá±á«áºááœáẠá¡ááŒá±áá¶áá¬ážáá±á¬ áá¯ááºááœááºáá»á¬ážááœáẠáá±á¬áºááŒáá¬ážáá±á¬ áá¯á¶á
á¶áá»á¬ážá
á¬áááºážááŸáá·áº ááŸáá¯ááºážááŸááºáá«áááºá
def http_error(á¡ááŒá±á¡áá±): ááá¯ááºáá®ááŸá¯á¡ááŒá±á¡áá±- case 400- "ááá±á¬ááºážáá²á·áá±á¬ááºážááá¯áá»ááº" ááŒá áºááẠ401|403|404- ááŒááºáá±áž "ááœáá·áºáááŒá¯áá«" case 418: ááŒááºáá±áž "áá»áœááºáá±á¬áºá áááºáááºáááºááŒááºážáá«" ááá á¹á _: ááŒááºáá±áž "á¡ááŒá¬ážá¡áá¬"
ááŸáááŒá®ážáá¬ážáááºááá¯ážáá»á¬ážá¡áá±á«áº á¡ááŒá±áá¶á ááááºážááŸááºáá»á¬ážááᯠáá»áááºááœá²ááẠá¡áá¬ááá¹áá¯áá»á¬ážá tuplesá á á¬áááºážáá»á¬ážááŸáá·áº ááááºáááᯠá¡á á®á¡áá®áá»á¬ážááᯠáá¯ááºááá¯ážááá¯ááºáá«áááºá áááºážá¡á¬áž áá±á«ááºážá ááºáá¬ážáá±á¬ ááá°áá¬áá¯á¶á á¶áá»á¬ážááᯠáááºááŸááºáááºá ááá°áá¬ááœáẠáá±á¬ááºááẠâifâ á¡ááŒá±á¡áá±áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áááºá áá»ááºááŸá¬áá¯á¶ážáá»á¬áž (â[x, y, *rest]â), áá±á¬á·/áááºááá¯ážáá»á¬ážááᯠáá¯á¶áá±á¬áºááŒááºáž (á¥ááá¬á {âbandwidthâ: b, âlatency â:l} á¡áááá¬ááºá០"bandwidth" ááŸáá·áº "latency" áááºááá¯ážáá»á¬ážááᯠáá¯ááºáá°áááºá áá¯ááºáá°ááá·áº áá¯á¶á á¶ááœá²áá»á¬áž (":=" operator)á template áá áºáá¯ááœáẠá¡áááºááŸááá±á¬ ááááºážáá±áá»á¬ážááᯠáá¯á¶ážáá«á á¡áááºážáá»á¬ážááœááºá "__match__()" áááºážáááºážááᯠá¡áá¯á¶ážááŒá¯á ááá¯ááºáá®áá±á¬á¡ááŒá¯á¡áá°ááᯠá áááºááŒáá¯ááºááŒááºáááºááá¯ááºáááºá
dataclasses á០dataclass @dataclass ááá¯áááºááœááºážáá« Point: x: int y: int def whereis(point): áá°áá®áá±á¬á¡ááŸááº: case Point(0, 0): print("Origin") case Point(0, y): print(f" Y={y}") case Point(x, 0): print(f"X={x}") case Point(): print("Somewhere else") case _: print("Not a point") ááá¯ááºáá®ááẠá¡ááŸááº- case Point(x, y) if x == y: print(f"Y=X at {x}") case Point(x, y): print(f"áá±á¬áá·áºááŒááºáá±á«áºááœááºááá¯ááºáá«") REDáGREENá á¡ááŒá¬ = 0á 1á 2 ááá¯ááºáá®áá±á¬á¡áá±á¬ááº- áá°ážá¡áá®- áá¯á¶ááŸáááº(âá¡áá®áá±á¬ááºááŒááºááááº!â) áá°ážááœá¶ á¡á áááºážáá±á¬ááº- áááá·áº(âááŒááºá áááºážâ) áá°ážááœá¶ á¡ááŒá¬áá±á¬ááº- áááá·áº(âááá°ážá áºááᯠáá¶á á¬ážáááẠ:(â)
- ááá¯á¡áá«ááœáẠáá»á¥áºážá¡áá»á¬ážá¡ááŒá¬ážááœáẠáááºá ááºáááºáá±áá»á¬áá»á¬ážá á¡á á¯á¡áá±ážá á¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºááᯠááœá²ááŒááºážááẠááœááºážá á¥áºáá»á¬ážáá«ááŸááá±á¬ á áá¬ážááá¯ááºážááœáẠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá áááºážááᯠá¡á¯ááºá á¯ááŸá áá±á¬ááºáá¯á¶ážá¡ááŒá±á¬ááºážá¡áá¬áááºáá±áá»á¬ááŒá®ážáá±á¬áẠáá±á¬áºáá¬áá áºáá¯áá»ááºáá¬ážááẠááœáá·áºááŒá¯áá¬ážáááº- ( CtxManager1() á¡ááŒá Ạexample1á CtxManager2() as example2á CtxManager3() as example3, ): ...
- á
á¬áááºážá
á¬áá¯á¶ážáá»á¬ážááœáẠááá¯á¶áááŒá¯á¶áá¬ážáá±á¬ ááœááºážáááºáá»á¬ážááŸáá·áº ááá¯ážáá¬ážáá»ááºáá»á¬ážááá¯ááºáᬠá¡ááŸá¬ážáá»á¬ážá áá¯ááºáááºáá±áá¬ááᯠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬áẠá¡á
á®áááºáá¶ááŒááºážá á¥ááá¬á¡á¬ážááŒáá·áºá á¡á±á¬ááºáá±á¬áºááŒáá«áááºáá±á¬ááºááŸá¯ááœáẠá¡áá¬ážá¡ááá¯á¡ááŸá¬ážá¡ááœááºážáá
áºáá¯ááᯠá¡á
á®áááºáá¶ááá·áºá¡á
á¬áž á¡ááœáá·áºá¡ááááºáá±á¬ááºá
ááºážáá
áºáá¯ááŸááá±á¬á¡áá« ááœáŸááºááŒáá»ááºááẠááá¯á¡áá« á¡ááœáá·áºáá±á¬ááºááᯠáá®ážáá±á¬ááºážááá¯ážááŒááŒá®áž á¡ááááºá¡ááááºáááŸááᯠááœáŸááºááŒáááºá ááá¯áẠ"example.py"á á
á¬ááŒá±á¬ááºáž 1 áá»áŸá±á¬áºááŸááºážááẠ= {9:1á 18:2á 19:2á 27:3á 28:3á 29:3á 36:4á 37:4á ^SyntaxError- '{' áááºáá¯ááºážáá០áááááºáá²á·áá°ážá
áááºáá±á¬ááºáž á¡áá°ážááŒá¯áá¬ážáá±á¬ á¡áá¬ážá¡ááá¯á¡ááŸá¬áž áááºáá±á·áá»áºáá»á¬ážááᯠáááºáá±á¬ááºážááá·áºáá¬ážáááº- ááááºááá¯á·ááŒááºážáá áºáá¯ááŸá±á·ááœáẠáá»á±á¬ááºáá±áá±á¬ " :" áááºá¹áá±áááŸáá·áº ááœááºážá ááœááºáá»á¬ážááᯠááœá²ááŒááºážáááŒá¯áá² á¡áááá¬ááºáá»á¬ážááœáẠáááºá¹áá±ááá áºáá¯á á á¬áááºážáá»á¬ážááœáẠáá±á¬áºáá¬áá»á±á¬ááºáá±ááŒááºážá "áááœá²ááá¯á·" ááŸáá·áº "áá±á¬ááºáá¯á¶áž" ááá¯á¶ážáá² "ááŒáá¯ážá á¬áž" ááááºááá¯á·ááŒááºážááᯠáááºááŸááºááŒááºáž "=" " = " á¡á á¬áž " f-strings ááœáẠ*-á¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááᯠáááºááŸááºááŒááºážá ááá¯á·á¡ááŒááºá áááºážááẠááŒá¿áá¬ááŸááá±á¬ á áá¬ážáááºáá áºáá¯áá¯á¶ážááᯠá¡á ááŒá¯áá¯á¶áá¬áááá² ááŸááºáááºáá±á¬ á¡ááºáááºážáááºááŒááºážááŸáá·áº áááºá ááºáá±áá±á¬ á¡ááŸá¬ážáá»á¬ážá áááºá ááºá¡áá»ááºá¡áááºáá»á¬ážá¡ááŒá±á¬ááºáž ááá¯ááá¯ááŸááºážáááºážááŒááºáá¬ážáá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááᯠáá±á«áºááœááºá á±ááŒá±á¬ááºáž áááºážá áá±áá»á¬á á±áááºá >>> def foo(): ... if lel: ... x = 2 File" "á á á¬ááŒá±á¬ááºáž 3 x = 2 ^ IndentationError- á á¬ááŒá±á¬ááºáž 2 ááœáẠ'if' ááŒá±ááŒá¬áá»ááºááŒá®ážáá±á¬áẠ'if' ááŒá±ááŒá¬áá»ááºáá±á¬ááºááœáẠá¡ááºáááºážáá¯ááºááœááºáá áºáᯠáá»áŸá±á¬áºááá·áºáá¬ážáááº
áá¯ááºáá±á¬ááºáá»ááºáá áºáá¯ááŸá attribute áá»á¬ážáá¡áááºáá»á¬ážááŸáá·áº variable names áá»á¬ážááœáẠtypos ááŒá±á¬áá·áºááŒá áºáááá·áº á¡ááŸá¬ážáá»á¬ážááœááºá ááŸááºáááºáá±á¬á¡áááºááŒáá·áº á¡ááŒá¶ááŒá¯áá»ááºááẠoutput ááŒá áºáááºá >>>collections.namedtoplo Traceback (áá±á¬ááºáá¯á¶ážáá±á«áºááá¯ááŸá¯ áá±á¬ááºáá¯á¶ážá¡ááŒáááº) : ááá¯áẠ« "á á á¬ááŒá±á¬ááºáž áá áááºááœáŸááºážáá»ááºá¡ááŸá¬áž- module 'á á¯áá±á¬ááºážááŸá¯áá»á¬áž' ááœáẠ'namedtoplo' áááºááœáŸááºážáá»ááºáááŸááá«á ááá¯ááá¯áá¬á áá»á°ááá® ááá¯á· ááá¯ááá¯áá¬áá¬ážá
- á¡ááŸá¬ážááŸá¬ááŒááºááá·áºáááááá¬áá»á¬ážááŸáá·áº áááá¯ááá¯ááºážááá¬ážáá»á¬ážá¡ááœááºá áá¯ááºáá±á¬ááºáá¬ážáá±á¬áá¯ááºá áááá»áá±á¬ááá¯ááºážáá¶áá«ááºáá»á¬ážááŒáá·áº ááŒá±áá¬áá¶ááŒá áºáááºáá»á¬ážááᯠáá±ážáá¬ážáááºá
- TextIOWrapper ááŸáá·áº áááºá ááºáá±á¬ ááŒá áºááá¯ááºáá»á±ááŸááá±á¬ á¡ááŸá¬ážá¡ááœááºážáá»á¬ážá¡ááŒá±á¬ááºáž ááááá±ážáá»ááºááŒáááẠsys.flags.warn_default_encoding áááºáááºááᯠááá·áºááœááºážááŒá®áž 'áá¯ááºáá¶áá«ááº=»utf-8â³' ááœá±ážáá»ááºááŸá¯ááᯠá¡ááá¡áá»ááááºááŸááºáá² (ASCII áá¯ááºáá¶áá«ááºááᯠáá°áááºážá¡ááá¯ááºáž á¡áá¯á¶ážááŒá¯áááº)á á¡áá áºááœááºááŸáááŸá¯ááœáẠáááºááŸááá±áá¬áá±áá¡áá±á«áº á¡ááŒá±áá¶á áá¯ááºáá¶áá«ááºááᯠáááºááŸááºááẠ'áá¯ááºáá¶áá«áẠ= "locale" áááºááá¯ážááᯠáááºááŸááºáá±ážááá¯ááºáááºá
- á¡áá»áá¯ážá¡á á¬ážááŸááºá á¬áá»á¬áž áááºááŸááºááŒááºážá¡ááœáẠáááááá¬áá»á¬ážááᯠáá¶á·ááá¯ážáá±ážááá·áº á á¬ááá¯ááºááŒááºáž áá±á¬áºáá»á°ážááœáẠá¡á±á¬áºááá±áá¬á¡áá áºáá áºáá¯ááᯠááá·áºááœááºážáá¬ážááŒá®áž á¡áá¬ážá¡ááᯠâX | á¡áá»áá¯ážá¡á á¬ážáá»á¬ážáá²á០áá áºáá¯ááᯠááœá±ážááẠY" (X á¡áá»áá¯ážá¡á á¬áž ááá¯á·ááá¯áẠY á¡áá»áá¯ážá¡á á¬áž)á def square(áá¶áá«ááº- int | float) --> int | float- ááŒááºááá¯á·áá¶áá«áẠ** 2 ááẠááááºá áá¶á·ááá¯ážáá¬ážáá±á¬ áááºáá±á¬ááºááŸá¯ááŸáá·áº áá®áá»áŸáááº- def square(áá¶áá«ááº- Union[int, float]) -> Union[int, float]: ááŒááºáá±ážááá·áº áá¶áá«áẠ** 2
- Concatenate á¡á±á¬áºááá±áá¬ááŸáá·áº ParamSpec variable ááᯠCallable ááá¯á¡áá¯á¶ážááŒá¯ááá·áºá¡áá« static type checking á¡ááœáẠáááºáá±á¬ááºážá¡áá»ááºá¡áááºáá»á¬ážááᯠáááºááŒááºáááºážááœáá·áºááŒá¯ááá·áº á á¬ááá¯ááºáá±á¬áºáá»á°ážááá¯á· áá±á«ááºážááá·áºáá¬ážáááºá á á¬ááá¯ááºááá·áº áá±á¬áºáá»á°ážááẠá¡áá»áá¯ážá¡á á¬áž á¡áá¬á¡ááœáẠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠááŸááºáá»ááºáá»ááẠá¡áá°ážáááºááá¯ážáá»á¬ážááᯠTypeGuard ááŸáá·áº TypeAlias ââââá¡áá»áá¯ážá¡á á¬áž alias ááá¯á·ááᯠááŒááºáá¬ážá áœá¬ áááºááŸááºáááºá StrCache: TypeAlias ââ= 'Cache[str]' # a alias á¡áá»áá¯ážá¡á á¬áž
- áá áº() áá¯ááºáá±á¬ááºáá»ááºááẠááœá±ážáá»ááºááá¯ááºáá±á¬ "áááºážáá»ááºáá±á¬" á¡áá¶ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá±ážáááºá áááºážááẠáááºááŸááºáá±á¬á¡áá«ááœáẠáááºááá²áá²ááŒá¯áá¯ááºáá±ááá·áº á¡ááŒá±á¬ááºážááŒáá»ááºáá»á¬ážááẠá¡ááŸááºáá°áá®ááŒááºážááŸááááŸá á á áºáá±ážáá±ážáááºá >>> list(zip(('a', 'b', 'c'), (1, 2, 3), strict=True)) [('a', 1), ('b', 2) . ): ⊠ValueError: zip() argument 3 ááẠargument 3 ááẠááá¯ááŸááºáááºá
- á¡áá áºáá±á¬ built-in áá¯ááºáá±á¬ááºáá»ááºáá»á¬áž aiter() ááŸáá·áº anext() ááᯠfunctions iter() ááŸáá·áº next() á¡ááœáẠasynchronous analogues áá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážááŒáá·áº á¡ááá¯ááŒá¯áá¬ážáá«áááºá
- áá±ážáááºáá±á¬á¡áá¬ááá¹áá¯áá»á¬ážááŸáá·áºá¡áá¯ááºáá¯ááºáá±á¬á¡áá« str(), bytes() ááŸáá·áº bytearray() constructors áá»á¬ážáá¡áá¯ááºááẠ30-40% á¡ááŸáááºááŒáŸáá·áºáá¬ážáááºá
- runpy module ááœáẠáááºááœááºážááá·áº áá¯ááºáá±á¬ááºáá»áẠá¡áá±á¡ááœááºááᯠáá»áŸá±á¬á·áá»áá¬ážáááºá "python3 -m module_name" ááẠáááºááœááºážáá¬áá±á¬ module áá»á¬ážááᯠ1.4 á០69 á¡áá áá»áŸá±á¬á·áá»ááŒááºážááŒá±á¬áá·áº ááá¯á¡áá« áá»ááºážáá»áŸ 51 á ááá¯ááá¯ááŒááºáááºá áœá¬ áá¯ááºáá±á¬ááºáá«áááºá
- LOAD_ATTR ááœáŸááºááŒá¬ážáá»ááºááẠáá áºáŠážáá»ááºáž opcodes áá»á¬ážá¡ááœáẠáááºááŸáºááá¹ááá¬ážááᯠá¡áá¯á¶ážááŒá¯áá¬ážááŒá®áž áá¯á¶ááŸáẠattribute áá»á¬áž 36% á¡áá ááŸáá·áº slots áá»á¬áž 44% á¡áá ááŒááºáááºá á±ááẠáá¯ááºáá±á¬ááºáá±ážáá«áááºá
- "--enable-optimizations" option ááŒáá·áº Python ááá¯áááºáá±á¬ááºáá±á¬á¡áá«á "-fno-semantic-interposition" áá¯ááºááá¯ááá¯ááœáá·áºáá¬ážáá«áááºá áááºážááẠ"--enable-shared" ááŒáá·áºáááºáá±á¬ááºááŒááºážááŸáá·áºááŸáá¯ááºážááŸááºáá«áá áá¬ážááŒááºááᯠ30% á¡ááá¡ááŸáááºááŒáŸáá·áºááœáá·áºááŒá¯áááºá "ááœá±ážáá»ááºááŸá¯á
- hashlib ááŸáá·áº ssl áá±á¬áºáá»á°ážáá»á¬ážááẠOpenSSL 3.0.0 á¡ááœáẠáá¶á·ááá¯ážááŸá¯ááᯠáá±á«ááºážááá·áºáá¬ážááŒá®áž 1.1.1 áááºáá±á¬ááºážáá±á¬ OpenSSL áá¬ážááŸááºážáá»á¬ážááᯠáá¶á·ááá¯ážááŸá¯ áááºááœá¬ážáá«áááºá
- PEG (parsing Expression Grammar) ááœá²ááŒááºážá áááºááŒá¬ááŸá¯ááŒáá·áº ááááºáá¬áááœá²ááœáẠá¡á á¬ážááá¯ážáá¬ážááá·áº áá«áá¬á¡áá±á¬ááºážááᯠáááºááŸá¬ážááá¯ááºáá«ááŒá®á áá±á¬áºáááºáᬠáá±á¬áºáá»á°ážááᯠáááºááŸá¬ážááá¯ááºáá«ááŒá®á ááœááºážáááºááá·áºáááºáá»ááºá¡á¬áž asyncio API á០áááºááŸá¬ážááá¯ááºáá«ááŒá®á ááááºá ááá·áºááœááºáá¬ážáá±á¬ áááºážáááºážáá»á¬ážááᯠáááºááŸá¬ážááá¯ááºáá«ááŒá®á Py_UNICODE* á á¬ááŒá±á¬ááºážáá»á¬ážááᯠá á®áá¶ááá·áºááœá²ááá·áº Py_UNICODE_str* áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáááºááŸá¬ážááá¯ááºáá«ááŒá®á
- distutils module ááᯠáááºááá¯ááºážáá¬ážááŒá®áž Python 3.12 ááœáẠáááºááŸá¬ážááẠá á®á ááºáá¬ážáááºá distutils á¡á á¬áž setuptoolsá packagingá platformá shutilá subprocess ááŸáá·áº sysconfig modules áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááẠá¡ááŒá¶ááŒá¯á¡ááºáá«áááºá PyUnicodeObject ááŸá wstr ááœá²á·á ááºážáá¯á¶ááᯠáááºááá¯ááºážáá¬ážááŒá®áž áááºááŸá¬ážááẠá á®á ááºáá¬ážáááºá
source: opennet.ru