Famoahana ny fiteny fandaharana Python 3.10

Taorian'ny herintaona nanaovana ny fampandrosoana dia atolotra ny famoahana manan-danja ny fiteny fandaharana Python 3.10. Ny sampana vaovao dia hotohanana mandritra ny iray taona sy tapany, ary aorian'izay mandritra ny telo taona sy tapany dia hisy fanamboarana ho azy mba hanafoanana ny vulnerability.

Nandritra izany fotoana izany, nanomboka ny fitsapana alpha ny sampana Python 3.11 (araka ny fandaharam-pampandrosoana vaovao, ny asa amin'ny sampana vaovao dia manomboka dimy volana alohan'ny famoahana ny sampana teo aloha ary tonga amin'ny dingana fitsapana alpha amin'ny fotoana famoahana manaraka. ). Ny sampana Python 3.11 dia hivoaka amin'ny alfa mandritra ny fito volana, izay hampidirana endri-javatra vaovao ary hapetraka ny bug. Aorian'izany dia hozahan-toetra mandritra ny telo volana ny dikan-teny beta, izay mandrara ny fampidirana endri-javatra vaovao ary hojerena amin'ny fanamboarana ny bug. Nandritra ny roa volana farany talohan'ny famoahana, ny sampana dia ho eo amin'ny sehatry ny kandidà famotsorana, izay hanatanterahana ny fanamafisana farany.

Ny fanampiana vaovao amin'ny Python 3.10 dia ahitana:

  • Nametraka mpandraharaha "match" sy "case" ho an'ny fampifanarahana ny lamina, izay manatsara ny famakian-teny kaody, manamora ny fampifanarahana ireo zavatra Python tsy misy dikany, ary mampitombo ny fahatokisana kaody amin'ny alàlan'ny fanamarinana karazana static. Ny fampiharana dia mitovy amin'ny mpandraharaha "match" omena ao amin'ny Scala, Rust, ary F #, izay mampitaha ny vokatry ny fanehoan-kevitra voafaritra miaraka amin'ny lisitry ny lamina voatanisa ao anaty sakana mifototra amin'ny mpandraharaha "tranga".

    def http_error(status): sata mifanandrify: tranga 400: avereno "Fangatahana ratsy" tranga 401|403|404: avereno "Tsy azo atao" tranga 418: avereno tranga "Teapot aho" _: avereno "Zavatra hafa"

    Azonao atao ny mamongotra zavatra, tuples, lisitra, ary filaharana tsy misy dikany mba hamehezana ny fari-piainana mifototra amin'ny sanda efa misy. Azo atao ny mamaritra ny maodely misy akany, mampiasa fepetra fanampiny "raha" ao amin'ny môdely, mampiasa saron-tava ("[x, y, *rest]"), fanalahidin'ny sarintany (ohatra, {"bandwidth": b, "latency ”: l} hanesorana ny soatoavina "bandwidth" sy "latency" avy amin'ny rakibolana iray), esory ny subtemplates (":=" operator), ampiasao ny anarana hoe constants amin'ny môdely. Ao an-dakilasy, azo atao ny mampifanaraka ny fitondran-tena mifanaraka amin'ny fampiasana ny fomba "__match__()".

    avy amin'ny kilasy data manafatra kilasy data @ kilasy classe Point: x: int y: int def whereis(point): point match: case Point(0, 0): print("Origin") case Point(0, y): print(f" Y={y}") tranga Point(x, 0): print(f"X={x}") case Point(): print("Any an-kafa") case _: print("Tsy teboka") mifanandrify teboka: tranga Point(x, y) raha x == y: print(f"Y=X amin'ny {x}") tranga Point(x, y): print(f"Tsy eo amin'ny diagonaly") MENA, MAITSO, BLUE = 0, 1, 2 loko mifanandrify: takela-kazo METY: printy(“Mahita mena aho!”) case MAITS: printy(“maitso ny ahitra”) case MANGA: printy(“Mahatsapa ny manga aho :(“)

  • Azo atao izao ny mampiasa fononteny ao amin'ny fanambarana miaraka mba hampisaraka ny famaritana ny fitambaran'ny mpitantana ny contexte amin'ny andalana maro. Azo atao koa ny mamela faingo aorian'ny mpitantana ny contexte farany ao amin'ny vondrona: miaraka amin'ny ( CtxManager1() ohatra1, CtxManager2() ohatra2, CtxManager3() ohatra3, ): ...
  • Nohatsaraina ny tatitra momba ny toerana misy ny kaody misy lesoka mifandraika amin'ny braces tsy mihidy sy ny teny nalaina amin'ny litera tady. Ohatra, rehefa misy brace tsy voahidy, fa tsy mitatitra ny hadisoana syntax amin'ity fananganana manaraka ity, ny fanondro dia manasongadina ny brace fanokafana ary manondro fa tsy misy fanakanana fanakatonana. File "example.py", andalana 1 antenaina = {9:1, 18:2, 19:2, 27:3, 28:3, 29:3, 36:4, 37:4, ^SyntaxError: '{' tsy nakatona mihitsy

    Nampiana hafatra diso syntax manokana fanampiny: tsy misy marika ":" alohan'ny sakana iray sy ao amin'ny rakibolana, tsy manasaraka tuple misy fononteny, tsy misy faingo amin'ny lisitra, manondro sakana "andramo" tsy misy "afa-tsy" sy "farany", mampiasa "= " fa tsy "= =" amin'ny fampitahana, manondro *-expressions amin'ny f-strings. Fanampin'izany, miantoka fa ny fanehoana olana iray manontolo dia asongadina, fa tsy ny fiandohana fotsiny, ary ny fampahalalana mazava kokoa momba ny tontolon'ny lesoka mifandray amin'ny indentation diso. >>> def foo(): ... raha lel: ... x = 2 File " ", andalana 3 x = 2 ^ IndentationError: nantenaina fa misy sakana misy tsindrona aorian'ny fanambarana 'raha' amin'ny andalana 2

    Amin'ny lesoka ateraky ny typos amin'ny anaran'ny toetra sy ny anarana miovaova amin'ny asa iray, ny tolo-kevitra misy ny anarana marina dia mivoaka. >>>collections.namedtoplo Traceback (antso farany farany): File « ", andalana 1, in AttributeError: ny module 'collections' dia tsy manana toetra 'namedtoplo'. Ny tianao tenenina hoe: nametuple?

  • Ho an'ny fitaovana debugging sy profilers, ny hetsika trace dia omena miaraka amin'ny laharan-tsipika marina amin'ny code executed.
  • Nampiana ny filaharan'ny sys.flags.warn_default_encoding mba hanehoana fampitandremana momba ny mety ho lesoka mifandraika amin'ny TextIOWrapper sy ny fanokafana ny rakitra voakodia UTF-8 misokatra () tsy misy famaritana mazava ny safidy 'encoding=»utf-8″' (fampiasa amin'ny alàlan'ny default) . Ny famoahana vaovao ihany koa dia manome fahafahana mamaritra ny sanda 'encoding="locale"' mba hametrahana ny kaody mifototra amin'ny toerana misy ankehitriny.
  • Nisy opérateur vaovao nampiana ao amin'ny maody fanoratana, izay manome fitaovana hamaritana ny karazana fanamarihana, mamela ny fampiasana ny syntax "X | Y" hisafidianana iray amin'ireo karazana (karazana X na karazana Y). def square(isa: int | float) -> int | mitsingevana: ny laharana miverina ** 2 dia mitovy amin'ny fananganana tohana teo aloha: def square(numera: Union[int, float]) -> Union[int, float]: laharana miverina ** 2
  • Ny operator Concatenate sy ny fari-piadidiana ParamSpec dia nampiana tao amin'ny maody fanoratana, izay ahafahanao mampita fampahalalana fanampiny momba ny fanamarinana karazana static rehefa mampiasa Callable. Ny maody fanoratana ihany koa dia manampy sanda manokana TypeGuard hanamarihana ny asa fiarovana karazana ary TypeAlias ​​hamaritana mazava ny karazana alias. StrCache: TypeAlias ​​= 'Cache[str]' # karazana alias
  • Ny asa zip () dia mametraka saina "henjana" azo atao, izay, rehefa voafaritra, dia manamarina raha mitovy ny halavan'ny hevitra averina. >>> 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)) Traceback (antso farany farany ): … ValueError: zip() argument 2 dia lava kokoa noho ny argument 1
  • Ny fiasa vaovao natsangana aiter() sy anext() dia atolotra miaraka amin'ny fampiharana ireo analogue asynchronous amin'ny functions iter() sy manaraka().
  • Ny asan'ny str(), bytes() ary bytearray() amin'ny fiasana amin'ny zavatra madinidinika dia manafaingana ny 30-40%.
  • Nahena ny isan'ny asa fanafarana ao amin'ny maody runpy. Ny baiko "python3 -m module_name" dia mandeha amin'ny antsalany in-1.4 haingana kokoa noho ny fampihenana ny maody nafarana avy amin'ny 69 ka hatramin'ny 51.
  • Ny torolalana LOAD_ATTR dia mampiasa mekanika caching ho an'ny opcodes tsirairay, izay nahafahana nanafaingana ny asa miaraka amin'ny toetra mahazatra hatramin'ny 36%, ary misy slot hatramin'ny 44%.
  • Rehefa manangana Python miaraka amin'ny safidy "--enable-optimizations", dia alefa izao ny maody "-fno-semantic-interposition", izay ahafahana manafaingana ny mpandika teny hatramin'ny 30% raha oharina amin'ny fananganana miaraka amin'ny "--enable-shared". ” safidy.
  • Ny maody hashlib sy ssl dia nanampy fanohanana ny OpenSSL 3.0.0 ary nijanona tsy nanohana ny dikan-teny OpenSSL efa antitra noho ny 1.1.1.
  • Nesorina ny parser taloha, izay nosoloana parser PEG (Parsing Expression Grammar) tao amin'ny sampana teo aloha. Nesorina ny maody formatter. Nesorina tao amin'ny asyncio API ny mari-pandrefesana. Nesorina ireo fomba tsy nampiasaina taloha. Ny fiasa Py_UNICODE_str* izay manodikodina ny tady Py_UNICODE* dia nesorina.
  • Ny mody distutils dia tsy ampiasaina ary voalahatra ho esorina amin'ny Python 3.12. Raha tokony ho distutils, dia asaina mampiasa ny setuptools, fonosana, sehatra, shutil, subprocess ary sysconfig modules. Ny rafitra wstr ao amin'ny PyUnicodeObject dia tsy ampiasaina ary voalahatra ho esorina.

Source: opennet.ru

Add a comment