αααααΆααααΈαα½αααααΆαααααΆαα’αα·αααααα ααΆαα ααααααΆαααααααΆααααααΆααΆααααααααααα·ααΈ 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