3.10 幎éã®éçºãçµãŠãPython XNUMX ããã°ã©ãã³ã°èšèªã®éèŠãªãªãªãŒã¹ãçºè¡šãããŸããã æ°ãããã©ã³ã㯠XNUMX 幎åãµããŒãããããã®åŸãè匱æ§ãä¿®æ£ããããã«ããã« XNUMX 幎åããããŸãã
åæã«ãPython 3.11 ãã©ã³ãã®ã¢ã«ãã¡ ãã¹ããéå§ãããŸãã (æ°ããéçºã¹ã±ãžã¥ãŒã«ã«åŸã£ãŠãæ°ãããã©ã³ãã®äœæ¥ã¯åã®ãã©ã³ãã®ãªãªãŒã¹ã® 3.11 ãæåã«éå§ããã次ã®ãªãªãŒã¹ãŸã§ã«ã¢ã«ãã¡ ãã¹ã段éã«éããŸã) ïŒã Python XNUMX ãã©ã³ã㯠XNUMX ãæéã¢ã«ãã¡çã§ãªãªãŒã¹ããããã®éã«æ°æ©èœãè¿œå ããããã°ãä¿®æ£ãããŸãã ãã®åŸãããŒã¿ç㯠XNUMX ãæéãã¹ãããããã®éã¯æ°æ©èœã®è¿œå ã¯çŠæ¢ããããã°ã®ä¿®æ£ã«å šåã泚ãããŸãã ãªãªãŒã¹åã®æåŸã® XNUMX ãæéããã©ã³ãã¯ãªãªãŒã¹åè£æ®µéã«ãããæçµçãªå®å®åãå®è¡ãããŸãã
Python 3.10 ã«æ°ãã«è¿œå ãããæ©èœã¯æ¬¡ã®ãšããã§ãã
- ãã¿ãŒã³ ãããã³ã°çšã®ãmatchãããã³ãcaseãæŒç®åãå®è£
ããŸãããããã«ãããã³ãŒãã®å¯èªæ§ãåäžããä»»æã® Python ãªããžã§ã¯ãã®ãããã³ã°ãç°¡çŽ åãããé«åºŠãªéçåãã§ãã¯ãéããŠã³ãŒãã®ä¿¡é Œæ§ãåäžããŸãã ãã®å®è£
ã¯ãScalaãRustãããã³ F# ã§æäŸããããmatchãæŒç®åã«ãã䌌ãŠãããæå®ãããåŒã®çµæãããcaseãæŒç®åã«åºã¥ããŠãããã¯ã«ãªã¹ããããŠãããã¿ãŒã³ã®ãªã¹ããšæ¯èŒããŸãã
def http_error(status): ã¹ããŒã¿ã¹ã®äžèŽ: case 400: "Bad request" ãè¿ã case 401|403|404: "Not allowed" ãè¿ã case 418: "I'm a teapot" ãè¿ã case _: "Something else" ãè¿ã
ãªããžã§ã¯ããã¿ãã«ããªã¹ããããã³ä»»æã®ã·ãŒã±ã³ã¹ã解åããŠãæ¢åã®å€ã«åºã¥ããŠå€æ°ããã€ã³ãã§ããŸãã ãã¹ãããããã³ãã¬ãŒãã®å®çŸ©ããã³ãã¬ãŒãå ã§ã®è¿œå ã®ãifãæ¡ä»¶ã®äœ¿çšããã¹ã¯ (ã[x, y, *rest]ã)ãããŒãšå€ã®ãããã³ã° (äŸ: {"bandwidth": bã"latency") ã®äœ¿çšãèš±å¯ãããŸãã â: l} èŸæžããã垯åå¹ ããšãé 延ãã®å€ãæœåºããŸãïŒããµããã³ãã¬ãŒããæœåºããŸãïŒã:= æŒç®åãïŒããã³ãã¬ãŒãã§ååä»ãå®æ°ã䜿çšããŸãã ã¯ã©ã¹ã§ã¯ãã__match__()ãã¡ãœããã䜿çšããŠãããã³ã°åäœãã«ã¹ã¿ãã€ãºã§ããŸãã
from dataclasses import dataclass @dataclass class Point: x: int y: int def whereis(point): match 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") äžèŽpoint: case Point(x, y) if x == y: print(f"Y=X at {x}") case Point(x, y): print(f"Not on the angle") REDãGREENããã«ãŒ = 0ã1ã2 äžèŽããè²: case RED: print(ãèµ€ãèŠããŸã!ã) case GREEN: print(ãèã¯ç·ã§ãã) case BLUE: print(ãç§ã¯ãã«ãŒã¹ãæããŠããŸã :(ã)
- with ã¹ããŒãã¡ã³ãã§æ¬åŒ§ã䜿çšããŠãã³ã³ããã¹ã ãããŒãžã£ãŒã®ã³ã¬ã¯ã·ã§ã³ã®å®çŸ©ãè€æ°è¡ã«åå²ã§ããããã«ãªããŸããã ã°ã«ãŒãå ã®æåŸã®ã³ã³ããã¹ã ãããŒãžã£ãŒã®åŸã«ã«ã³ããæ®ãããšãã§ããŸãã ( CtxManager1() ã example1 ãšããŠãCtxManager2() ã example2 ãšããŠãCtxManager3() ã example3 ãšããŠã): ...
- æååãªãã©ã«ã®éããããŠããªãäžæ¬åŒ§ãšåŒçšç¬Šã«é¢é£ãããšã©ãŒã®ã³ãŒãäœçœ®ã®ã¬ããŒããæ¹åãããŸããã ããšãã°ãéããããŠããªãäžæ¬åŒ§ãããå Žåã次ã®æ§é ã§æ§æãšã©ãŒãå ±åãã代ããã«ããã€ã³ã¿ã¯éãäžæ¬åŒ§ã匷調衚瀺ããéããããã¯ããªãããšã瀺ããŸãã ãã¡ã€ã«ãexample.pyããäºæãããè¡ 1 = {9:1, 18:2, 19:2, 27:3, 28:3, 29:3, 36:4, 37:4, ^SyntaxError: '{'決ããŠéãŸããªãã£ã
ç¹æ®ãªæ§æãšã©ãŒ ã¡ãã»ãŒãžãè¿œå ããŸãã: ãããã¯ã®åããã³èŸæžå ã§ã:ãèšå·ãæ¬ èœããŠãããæ¬åŒ§ã§ã¿ãã«ãåºåã£ãŠããªãããªã¹ãå ã§ã«ã³ããæ¬ èœããŠããããexcelããšãfinallyãã䜿çšããã«ãtryããããã¯ãæå®ããŠãããã=ãã䜿çšããŠããæ¯èŒã§ã¯ã= ãã®ä»£ããã«ããã䜿çšããf æåå㧠* åŒãæå®ããŸãã ããã«ãåé¡ã®ããåŒã®å é ã ãã§ãªãå šäœã匷調衚瀺ãããäžæ£ãªã€ã³ãã³ãã«é¢é£ãããšã©ãŒã®ã³ã³ããã¹ãã«é¢ããããæ確ãªæ å ±ã確å®ã«åŒ·èª¿è¡šç€ºãããŸãã >>> def foo(): ... if lel: ... x = 2 ãã¡ã€ã« " "ãè¡ 3 x = 2 ^ IndentationError: è¡ 2 ã®ãifãã¹ããŒãã¡ã³ãã®åŸã«ã€ã³ãã³ãããããããã¯ãå¿ èŠã§ã
é¢æ°å ã®å±æ§åãå€æ°åã®ã¿ã€ããã¹ã«ãããšã©ãŒã®å Žåãæ£ããååã®æšå¥šäºé ãåºåãããŸãã >>>collections.namedtoplo ãã¬ãŒã¹ãã㯠(æåŸã®åŒã³åºã): ãã¡ã€ã« « "ã1è¡ç®ã å±æ§ãšã©ãŒ: ã¢ãžã¥ãŒã« 'collections' ã«ã¯å±æ§ 'namedtoplo' ããããŸããã ã€ãŸããååä»ãã¿ãã«ã§ãã?
- ãããã° ããŒã«ãšãããã¡ã€ã©ãŒã®å Žåããã¬ãŒã¹ ã€ãã³ãã«ã¯ãå®è¡ãããã³ãŒãã®æ£ç¢ºãªè¡çªå·ãæäŸãããŸãã
- sys.flags.warn_default_encoding èšå®ãè¿œå ããŠããencoding=»utf-8â³ããªãã·ã§ã³ãæ瀺çã«æå®ããã« TextIOWrapper ããã³ open() ã§ãšã³ã³ãŒãããã UTF-8 ãšã³ã³ãŒã ãã¡ã€ã«ãåŠçããããšã«é¢é£ããæœåšçãªãšã©ãŒã«é¢ããèŠåã衚瀺ããããã«ããŸãã (ããã©ã«ãã§ã¯ ASCII ãšã³ã³ãŒãã䜿çšãããŸã)ã ã æ°ãããªãªãŒã¹ã§ã¯ããencoding="locale"ãå€ãæå®ããŠãçŸåšã®ãã±ãŒã«ã«åºã¥ããŠãšã³ã³ãŒããèšå®ããæ©èœãæäŸãããŸãã
- æ°ããæŒç®åãåä»ãã¢ãžã¥ãŒã«ã«è¿œå ãããŸãããããã¯ãå泚éãæå®ããããã®ããŒã«ãæäŸããæ§æãX | ãã䜿çšã§ããããã«ããŸãã YããæŒããŠããããã®ã¿ã€ãïŒX ã¿ã€ããŸã㯠Y ã¿ã€ãïŒãéžæããŸãã def square(æ°å€: int | float) -> int | float: æ»ãå€ ** 2 ã¯ã以åã«ãµããŒããããŠããæ§é : def square(number: Union[int, float]) -> Union[int, float]: æ»ãå€ ** 2 ãšåçã§ãã
- Concatenate æŒç®åãš ParamSpec å€æ°ãåæå®ã¢ãžã¥ãŒã«ã«è¿œå ãããŸãããããã«ãããCallable ã®äœ¿çšæã«éçåãã§ãã¯ã®ããã®è¿œå æ å ±ãæž¡ãããšãã§ããŸãã ãŸããåæå®ã¢ãžã¥ãŒã«ã¯ãåä¿è·é¢æ°ã«æ³šéãä»ããããã®ç¹å¥ãªå€ TypeGuard ãšãåã®å¥åãæ瀺çã«å®çŸ©ããããã® TypeAlias ãè¿œå ããŸãã StrCache: TypeAlias = 'Cache[str]' # åã®ãšã€ãªã¢ã¹
- zip() é¢æ°ã¯ããªãã·ã§ã³ã®ãstrictããã©ã°ãå®è£ ããŸãããã®ãã©ã°ãæå®ããããšãå埩ãããåŒæ°ãåãé·ãã§ãããã©ããããã§ãã¯ãããŸãã >>> list(zip(('a', 'b', 'c'), (1, 2, 3), strict=True)) [('a', 1), ('b', 2) , ('c', 3)] >>> list(zip(range(3), ['fee', 'fi', 'fo', 'fum'], strict=True)) ãã¬ãŒã¹ãã㯠(æåŸã®åŒã³åºã): ⊠ValueError: zip() åŒæ° 2 ãåŒæ° 1 ããé·ãã§ã
- æ°ããçµã¿èŸŒã¿é¢æ° aiter() ããã³ anext() ã¯ãé¢æ° iter() ããã³ next() ã®éåæé¡äŒŒé¢æ°ã®å®è£ ãšãšãã«ææ¡ãããŠããŸãã
- å°ããªãªããžã§ã¯ããæäœãããšãã® str()ãbytes()ãããã³ bytearray() ã³ã³ã¹ãã©ã¯ã¿ãŒã®åäœã 30 ïœ 40% é«éåãããŸããã
- runpy ã¢ãžã¥ãŒã«ã§ã®ã€ã³ããŒãæäœã®æ°ãæžããŸããã ã€ã³ããŒããããã¢ãžã¥ãŒã«ã 3 ãã 1.4 ã«æžå°ãããããã³ãã³ããpython69 -m module_nameãã¯å¹³å 51 åé«éã«å®è¡ãããããã«ãªããŸããã
- LOAD_ATTR åœä»€ã¯ãåã ã®ãªãã³ãŒãã®ãã£ãã·ã¥ ã¡ã«ããºã ã䜿çšãããããéåžžã®å±æ§ã®å Žåã¯æ倧 36%ãã¹ãããã®å Žåã¯æ倧 44% é«éåããããšãã§ããŸããã
- ã--enable-optimizationsããªãã·ã§ã³ã䜿çšã㊠Python ããã«ããããšãã-fno-semantic-interpositionãã¢ãŒããæå¹ã«ãªããã--enable-sharedããªãã·ã§ã³ã䜿çšããŠãã«ãããå Žåãšæ¯èŒããŠã€ã³ã¿ãŒããªã¿ãæ倧 30% é«éåã§ããŸãã " ãªãã·ã§ã³ã
- hashlib ã¢ãžã¥ãŒã«ãš ssl ã¢ãžã¥ãŒã«ã« OpenSSL 3.0.0 ã®ãµããŒããè¿œå ããã1.1.1 ããå€ã OpenSSL ããŒãžã§ã³ã®ãµããŒããåæ¢ãããŸããã
- å€ãããŒãµãŒã¯åé€ãããåã®ãã©ã³ãã§ã¯ PEG (解æåŒææ³) ããŒãµãŒã«çœ®ãæããããŸããã ãã©ãŒããã¿ ã¢ãžã¥ãŒã«ãåé€ãããŸããã ã«ãŒã ãã©ã¡ãŒã¿ãŒã¯ asyncio API ããåé€ããã以åã«éæšå¥šã ã£ãã¡ãœãããåé€ãããŸããã Py_UNICODE* æååãæäœãã Py_UNICODE_str* é¢æ°ã¯åé€ãããŸããã
- distutils ã¢ãžã¥ãŒã«ã¯éæšå¥šãšãªããPython 3.12 ã§åé€ãããäºå®ã§ãã distutils ã®ä»£ããã«ãsetuptoolsãpackagingãplatformãshutilãsubprocessãããã³ sysconfig ã¢ãžã¥ãŒã«ã䜿çšããããšããå§ãããŸãã PyUnicodeObject ã® wstr æ§é ã¯éæšå¥šãšãªããåé€ãããäºå®ã§ãã
åºæïŒ ãªãŒãã³ããã.ru