ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ áá áºááŸá áºá¡ááŒá¬ááœáẠPython 3.11 áááá¯ááááºážáááºážáá¬áá¬á áá¬ážá áááá¬áááºááŸá¬ážáá±á¬ ááŒáá·áºáá»áááŸá¯ááᯠáá¯ááºáá±áá²á·áááºá áá¬áááœá²á¡áá áºááᯠáá áºááŸá áºááœá²ááŒá¬ áá¶á·ááá¯ážáá±ážáááºááŒá áºááŒá®ážá ááá¯á·áá±á¬ááºááœáẠá¡á¬ážáááºážáá»ááºááŸááá±á¬ áá¬áá±ážááŸá¯áá»á¬ážááᯠáá±á¬ááºáááºáá¯á¶ážááŸá áºááœá²ááŒá¬ ááŒá¯áá¯ááºáááºááŒá áºáááºá
áá áºáá»áááºáááºážááŸá¬áááºá Python 3.12 áá¬áááœá²á á¡ááºáá¬á ááºážáááºááŸá¯ááᯠá áááºáá²á·ááẠ(ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á¡áá»áááºááá¬ážá¡áá áºá¡áá ááááºáá¬áááœá²ááá¯ááºááŒááºáá® áá«ážáá¡ááá¯ááœáẠáá¬áááœá²á¡áá áºáá áºáá¯ááœáẠá¡áá¯ááºá áááºááŒá®áž áá±á¬ááºááœááºááŸááá»áááºá á¡ááºááºáá¬á ááºážáááºááŸá¯á¡ááá·áºááá¯á· áá±á¬ááºááŸááááºá ) Python 3.12 áá¬áááœá²ááẠáá¯áá áºáááŒá¬ á¡ááºááºáá¬áá¯ááºáá±ááŸá¯áá»á¬ážááœáẠáá«áááºáááºááŒá áºááŒá®ážá áááºážáá¬áá¡ááœááºáž á¡ááºá¹áá«áááºá¡áá áºáá»á¬ážááᯠáá±á«ááºážááá·áºáááºááŒá áºááŒá®áž áá»áá¯á·ááœááºážáá»ááºáá»á¬ážááᯠááŒá¯ááŒááºáá±ážáááºááŒá áºáááºá áááºážáá±á¬ááºá beta áá¬ážááŸááºážáá»á¬ážááᯠáá¯á¶ážáááŒá¬ á ááºážáááºáááºááŒá áºááŒá®ážá áááºážáá¬áá¡ááœááºáž á¡ááºá¹áá«áááºá¡áá áºáá»á¬áž áááºááá¯ážááŒááºážááᯠáá¬ážááŒá áºáááºááŒá áºááŒá®áž bug áá»á¬ážááᯠááŒá¯ááŒááºáááºá¡ááœáẠá¡á¬ážáá¯á¶ážá¡á¬áá¯á¶á áá¯ááºáááºááŒá áºáááºá ááá¯ááºáá±áá® áá±á¬ááºáá¯á¶ážááŸá áºáááœáẠáá¬áááœá²ááẠáá±á¬ááºáá¯á¶ážáááºááŒáááºááŸá¯ááᯠáá¯ááºáá±á¬ááºááá·áº ááœáŸáẠáá±á¬áºááá¯ááºá á¬ážááŸááºá¡ááá·áºááœáẠááŸááá±áááºááŒá áºáááºá
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 ááá±á¬áá»ááºáá»á¬ážá០ááŒááºáááºááŸá¯áá»á¬ážá load á¡áá»áá¯ážá¡á
á¬ážáá±á«áº áá°áááºá code execution á á¡ááŒááºááŸá¯ááºáž 10-60% ááá¯ážáá¬áá«áááºá áá»ááºážáá»áŸá¡á¬ážááŒáá·áºá pyperformance test suite ááá¯ááŒááºáááºážáá±á¬á¡áá« á
áœááºážáá±á¬ááºáááºááẠ25% ááá¯ážáá¬áááºá
bytecode caching ááá¹ááá¬ážá¡á¬áž ááŒááºáááºáá®ááá¯ááºážáá±ážááœá²áá²á·ááŒá®ážá á áá¬ážááŒááºá áááºáá»áááºááᯠ10-15% áá»áŸá±á¬á·áá»áá²á·áááºá áá¯ááºááŸáá·áº ááá¯ááºáá¯ááºáá«ááá·áº á¡áá¬ááá¹áá¯áá»á¬ážááᯠááá¯á¡áá« á áá¬ážááŒááºá០áááºááŒáááºá áœá¬ ááœá²áá±áá±ážáá¬ážááŒá®ážá áááºážááẠáááºááŸáºá០áá¯ááºáá¯ááºáá¬ážáá±á¬ ááá¯ááºáá¯ááºááᯠáááºááŸá¬ážáááºááŸáá·áº dynamic memory ááœáẠáá±áá¬áá»áááºá¡ááœáẠáá¯ááºááŒáá·áº á¡áá¬ááá¹áá¯áá»á¬ážááᯠááŒá±á¬ááºážáá²ááŒááºážááá¯á·ááᯠááŒá¯áá¯ááºááá¯ááºá á±áá²á·áááºá
- áá±á«áºááá¯ááŸá¯ááŒá±áá¬áá¶áá»á¬ážááᯠá¡ááŒá±ááŸá¬ááá·áº áááºáá±á·áá»áºáá»á¬ážááœáẠááŒáááá·áºá¡áá« á¡ááŸá¬ážá¡ááœááºážááŒá áºá á±áá±á¬ á áá¬ážáááºááŸáá·áºáááºáááºáá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááᯠáá±ážáá±á¬ááºááẠ(ááááºáá áááºááá·áºááá¯ááºážáá¡á áááºá¡ááá¯ááºážááᯠá¡áá±ážá áááºááá±á¬áºááŒáá² ááá¯ááºážááᯠáá®ážáá±á¬ááºážááá¯ážááŒáá¬ážáááº)á ááá¯ážáá»á²á·ááŒá±áá¬áá¶á¡áá»ááºá¡áááºáá»á¬ážááá¯áááºáž API ááŸáá áºááá·áº ááŒááºáááºááá°ááá¯ááºááŒá®áž codeobject.co_positions() áááºážáááºáž ááá¯á·ááá¯áẠPyCode_Addr2Location() C API áá¯ááºáá±á¬ááºáá»ááºááᯠá¡áá¯á¶ážááŒá¯á á¡áááºážá¡ááŒá áºáá¯ááºááŸá áá®ážááŒá¬ážáá±áá¬áá áºáá¯ááá¯á· ááá¯ááºáá¯ááºááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠááŒá±áá¯á¶áá áºáá¯á á®ááœáẠá¡áá¯á¶ážááŒá¯ááẠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá ááŒá±á¬ááºážáá²ááŸá¯ááẠnested á¡áááá¬ááºá¡áá¬ááá¹áá¯áá»á¬ážááŸáá·áº áááºá ááºáá±áá±á¬ á¡ááŸá¬ážááŸá¬ááŒááºááŒááºážááŒá¿áá¬áá»á¬ážá áá¯ááºáá±á¬ááºáá»ááºá¡áá»á¬ážá¡ááŒá¬ážáá±á«áºááá¯ááŸá¯áá»á¬ážááŸáá·áº ááŸá¯ááºááœá±ážáá±á¬ááááºážáááºá¹áá»á¬á¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááŸáá·áº áááºá ááºáá±áá«áááºá Traceback (áá±á¬ááºáá¯á¶ážáá±á«áºááá¯ááŸá¯ áá±á¬ááºáá¯á¶ážá¡ááŒáááº): ááá¯áẠ"calculation.py" á á¬ááŒá±á¬ááºáž 54á áááẠ= (x/y/z) * (a/b/c) ~~~~~~^~~ ZeroDivisionError: áá¯áááŒáá·áº ááá¯ááºážááŒá¬ážááŒááºáž
- áááá¯ááááºá¡á¬áž ááŒáœááºážáá»ááºáá»á¬ážá áœá¬ááᯠáá áºáá»áááºáááºážááœáẠáá¯ááºáá¯ááºááŒá®áž áá¯ááºáá±á¬ááºááá¯ááºá á±ááá·áº ááŒáœááºážáá»ááºá¡á¯ááºá á¯áá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ áá±ážáá¬ážáááºá ááŒáœááºážáá»ááºá¡áá»áá¯ážá¡á á¬ážá¡áá áºáá»á¬áž ExceptionGroup ááŸáá·áº BaseExceptionGroup ááá¯á·ááẠááŒáœááºážáá»ááºáá»á¬ážá áœá¬ááŸáá·áº áááºážááá¯á·ááá°ážááœá²áá±á¬ááºážááá¯ááŸá¯ááᯠá¡á¯ááºá á¯ááœá²á·áááºá¡ááœáẠá¡ááá¯ááŒá¯áá¬ážááŒá®ážá "exception*" ááá¯ááá·áºá¡áá¯á¶ážá¡ááŸá¯ááºážááᯠá¡á¯ááºá á¯áá áºáá¯á០áá®ážááŒá¬ážááŒáœááºážáá»ááºáá»á¬ážááœáẠááá·áºááœááºážáá¬ážáááºá
- add_note() áááºážáááºážááᯠBaseException á¡áááºážááœáẠááá·áºááœááºážáá¬ážááŒá®ážá á¥ááá¬á ááŒáœááºážáá»ááºá¡á¬áž áá»áœááºážáá»ááºáá»áá»áááºááœáẠááááŸáááá¯ááºáá±á¬ áááºá ááºá¡áá»ááºá¡áááºáá»á¬ážááᯠááá·áºááœááºážáááºá¡ááœáẠááŒáœááºážáá»ááºááœáẠá á¬áá¬ážááŸááºá á¯ááᯠáá°ážááœá²ááá·áºááœááºážááœáá·áºááŒá¯áááºá
- áááºááŸá áá¯áá¹áááá á¡áááºážá¡á á¬ážááᯠááá¯ááºá á¬ážááŒá¯áááºá¡ááœáẠá¡áá°ážá¡áá»áá¯ážá¡á á¬áž Self ááᯠááá·áºááœááºážáá¬ážáááºá TypeVar ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááẠáááºážááá¯á·áá¡áááºážáá¥ááá¬áá áºáá¯ááᯠááŒááºáá±ážááá·áºáááºážáááºážáá»á¬ážááᯠááŸááºáá¬ážáááºá¡ááœáẠSelf ááá¯á¡áá¯á¶ážááŒá¯ááá¯ááºáááºá á¡áááºáž MyLock: def __enter__(self) -> Self: self.lock() ááááááá¯ááºááᯠááŒááºááá¯á·áá«á
- LiteralString á¡áá»áá¯ážá¡á á¬ážááŸáá·áº áááá¬áááŒá áºáá±á¬ string literals áá»á¬ážáá¬áá«áááºááá¯ááºááá·áº á¡áá°áž LiteralString á¡áá»áá¯ážá¡á á¬ážááᯠáá±á«ááºážááá·áºááá¯ááºááẠ(ááá¯ááá¯áááºááŸá¬ LiteralString á¡áá»áá¯ážá¡á á¬ážá ááŒáá¯ážááá¬ááŸáá·áº á á¬ááŒá±á¬ááºážáá»á¬ážá ááá¯á·áá±á¬áº str á¡áá»áá¯ážá¡á á¬ážá áááá¬ážáá±á¬ ááá¯á·ááá¯áẠáá±á«ááºážá ááºáá¬ážáá±á¬ ááŒáá¯ážáá»á¬ážááá¯ááº)á LiteralString á¡áá»áá¯ážá¡á á¬ážááᯠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážáá®ááá¯á· string arguments áá»á¬ážááŒááºáááºážááŒááºážááᯠááá·áºáááºáááºá á¡á¬ážáááºážáá»ááºáá»á¬ážáá®ááá¯á· áŠážáááºááœá¬ážá á±ááá¯ááºááá·áº strings áá»á¬ážá á¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠáááá¬ážá¡á á¬ážááá¯ážááŒááºáž á¥ááá¬á SQL queries ááá¯á·ááá¯áẠshell commands áá»á¬ážá¡ááœáẠstrings áá»á¬ážááᯠáááºáá®ážááá·áºá¡áá«ááœáẠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá 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 ááŸáá·áºááá°áá² ááŒá±á¬ááºážáá²ááá¯ááºáá±á¬ generics áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºááŒá®áž á¡áá»áá¯ážá¡á á¬ážáá áºáá¯áááºážááá¯ááºáá² á¡áá»áá¯ážá¡á á¬ážáá»á¬ážá áœá¬ááᯠáá¬áááá«áááºá
- á á¶ááŒá á¬ááŒáá·áºááá¯ááºááœáẠTOML áá±á¬áºáááºááᯠááœá²ááŒááºážá áááºááŒá¬ááẠáá¯ááºáá±á¬ááºáá»ááºáá»á¬áž áá«ááŸáááá·áº tomllib module áá«áááºáááºá
- ááá¯á¡ááºáá±á¬ ááŸáá·áº NotRequired á¡ááŸááºá¡áá¬ážáá»á¬ážááŒáá·áº ááá¯ááºááŸáááºáá¬ážáá±á¬ á¡áááá¬ááºáá»á¬áž (TypedDict) á á¡á áááºá¡ááá¯ááºážáá áºáá¯áá»ááºážá á®ááᯠá¡ááŸááºá¡áá¬ážááŒá¯ááá¯ááºá áœááºážááᯠááá¯á¡ááºááŒá®áž ááœá±ážáá»ááºááá¯ááºáá±á¬ á¡ááœááºáá»á¬ážááᯠáá¯á¶ážááŒááºááẠáá¶á·ááá¯ážáá±ážááẠ(áá¯á¶ááŸááºá¡á¬ážááŒáá·áºá á á¯á á¯áá±á«ááºáž ááá·áºáááºáá±á¬ááºááᯠááŸá¬ážáááºáᯠááááºááŸááºáá¬ážáá«á ááŒá±áá¬áá¬ážááá·áº á¡ááœááºáá»á¬ážá¡á¬ážáá¯á¶áž ááá¯á¡ááºáááº)á á¡áááºážá¡á á¬ážáá¯ááºááŸááº(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 module ááá¯á· áá±á«ááºážááá·áºáá¬ážáá«áááºá á¡ááœá²á·áá áºáá¯ááá¯á· á¡áá¯ááºáá»á¬ážááá·áºááŒááºážááẠ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á áááºááŸááºááá·áºá¡áá«á static type checker ááẠ@dataclasses.dataclass á¡ááŸáááºáááááá¬ááᯠá¡áá¯á¶ážááŒá¯ááá²á·ááá¯á· á¡áá¬ááá¹áá¯á¡á¬áž áááºáá¶áááºá á¡á±á¬ááºáá±á¬áºááŒáá« á¥ááá¬ááœááºá CustomerModel á¡áááºážááẠ@dataclasses.dataclass á¡ááŸáááºáá° ááŸáá·áº á¡áááºážáá²á·ááá¯á· á¡áá»áá¯ážá¡á á¬áž-á á áºáá«áááºá id ááŸáá·áº name variable áá»á¬ážááá¯ááœáá·áºááŒá¯ááá·áº __init__ áááºážáááºážáá áºáá¯ááŸáááŒááºážá @dataclass_transform() á¡áááºáž ModelBase: ⊠á¡áááºáž CustomerModel(ModelBase): id: int name: str
- áá¯á¶ááŸááºá¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááœáẠatomic grouping ((?>âŠ)) ááŸáá·áº ááá¬ááá¯á ááẠ(possessive) quantifiers (*+, ++, ?+, {m,n}+) ááᯠáá±á«ááºážááá·áºááá¯ááºáááºá
- sys.path ááá¯á· á¡áá¹ááá¬ááºááááºážááá¯ááºáá±á¬ ááá¯ááºáááºážááŒá±á¬ááºážáá»á¬áž á¡ááá¯á¡áá»á±á¬áẠáá°ážááœá²áá«ááŸáááá·áº ááœááºáá¬ááŸá¯ááᯠááááºááẠ"-P" á¡áááá·áºáá±ážá á¬ááŒá±á¬ááºáž ááœá±ážáá»ááºááŸá¯ááŸáá·áº PYTHONSAFEPATH áááºáááºážáá»áẠááŒá±á¬ááºážáá²ááá¯ááºáá±á¬ ááŒá±á¬ááºážáá²ááŸá¯á
- ááᯠ"-V:" syntax ááᯠáá¶á·ááá¯ážáá±ážááá·áº Windows ááááºáá±á¬ááºážá¡ááœáẠpy.exe utility ááᯠáááá¬á áœá¬ ááŒáŸáá·áºáááºáá²á·áááºá / " ááŒááºá·á áœááºáᬠ"- . â .
- C API ááŸá áááºáááá¯á¡áá»á¬ážá¡ááŒá¬ážááᯠáá¯á¶ááŸáẠááá¯á·ááá¯áẠá¡ááŒáááºá¡ááºááá¯ááºážáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá¡ááŒá ẠááŒá±á¬ááºážáá²áá¬ážáááºá
- uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev, ááŸáá·áº sunau module áá»á¬ážááᯠáááºááá¯ááºážáá¬ážááŒá®áž Python ááœáẠáááºááŸá¬ážááá¯ááºáá«áááºá 3.13 áá¯ááºááŒááºááŒááºážá PyUnicode_Encode* áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáááºááŸá¬ážáá²á·áááºá
source: opennet.ru