Tso tawm Python 3.9 programming lus

Tom qab ib xyoos ntawm kev loj hlob hais tawm tseem ceeb programming lus tso tawm Nab hab sej 3.9. Python 3.9 yog thawj zaug tso tom qab kev hloov project rau lub voj voog tshiab kev npaj thiab kev txhawb nqa ntawm kev tshaj tawm. Cov kev tshaj tawm loj tshiab tam sim no yuav raug tsim tawm ib xyoos ib zaug, thiab cov kev kho tshiab yuav raug tso tawm txhua ob lub hlis. Txhua ceg tseem ceeb yuav tau txais kev txhawb nqa rau ib xyoos thiab ib nrab xyoo, tom qab ntawd ntxiv peb thiab ib nrab xyoo yuav raug tsim kho rau nws los kho qhov tsis zoo.

Ua hauj lwm ntawm ib ceg tshiab tam sim no pib tsib lub hlis ua ntej tso tawm ntawm ceg tom ntej, i.e. coinciding nrog kev tso tawm Python 3.9 pib alpha xeem ntawm Python 3.10 ceg. Python 3.10 ceg yuav nyob rau hauv alpha tso tawm rau xya lub hlis, thaum lub sij hawm uas cov yam ntxwv tshiab yuav raug ntxiv thiab kab laum. Tom qab no, beta versions yuav raug sim rau peb lub hlis, thaum lub sijhawm ntxiv cov yam ntxwv tshiab yuav raug txwv thiab txhua yam yuav raug them rau kev kho cov kab. Ob lub hlis dhau los ua ntej qhov kev tso tawm, ceg yuav nyob rau theem ntawm kev tso tawm tus neeg sib tw, thaum kawg yuav ua kom ruaj khov.

Ntawm cov ntxiv kev tsim kho tshiab Hauv Python 3.9:

  • Nyob rau hauv phau ntawv txhais lus txhais tau siv cov chav kawm dict built-in, tshwm sim kev txhawb nqa rau kev sib koom ua haujlwm "|" thiab "|=" hloov tshiab, uas ntxiv rau {**d1, **d2} thiab dict.update txoj kev yav dhau los tau npaj rau kev sib koom ua ke phau ntawv txhais lus.

    >>> x = {"key1": "value1 from x", "key2": "value2 from x"}
    >>> y = {"key2": "value2 from y", "key3": "value3 from y"}

    > > > x | y
    {'key1': 'value1 from x', 'key2': 'value2 from y', 'key3': 'value3 from y'}

    >>> y | x
    {'key2': 'value2 ntawm x', 'key3': 'value3 ntawm y', 'key1': 'value1 ntawm x'}

  • Cov ntawv sau ua ke ntawm hom muaj xws li cov npe, cov lus hais, thiab tuple, uas tuaj yeem siv los ua hom hauv paus yam tsis muaj kev xa tawm los ntawm kev ntaus ntawv. Cov. es tsis txhob typing.List, typing.Dict thiab typing.Tuple tam sim no koj tuaj yeem qhia meej
    tsuas yog sau, dict thiab tuple:

    def greet_all(names: list[str]) -> Tsis muaj:
    rau npe hauv cov npe:
    print("Nyob zoo", npe)

  • Yog muab cov cuab yeej hloov tau yooj yim rau kev piav qhia cov haujlwm thiab cov hloov pauv. Txhawm rau txuas cov lus piav qhia, ib hom Annotated tshiab tau ntxiv rau hauv kev ntaus ntawv, txuas ntxiv cov hom uas twb muaj lawm nrog cov metadata ntxiv uas tuaj yeem siv rau kev txheeb xyuas zoo li qub lossis rau kev ua kom zoo dua lub sijhawm. Txhawm rau nkag mus rau cov ntaub ntawv metadata los ntawm cov lej, suav nrog_extras parameter tau ntxiv rau typing.get_type_hints() txoj kev.

    charType = Annotated[int, ctype("char")] UnsignedShort = Annotated[int, struct2.ctype('H')]

  • Toned nqis grammatical yuav tsum tau rau decorators - ib qho kev qhia haum rau siv nyob rau hauv yog hais tias thiab thaum lub sij hawm blocks tam sim no siv tau raws li ib tug decorator. Qhov kev hloov pauv tau txhim kho qhov kev nyeem tau ntawm PyQt5 code thiab ua kom yooj yim rau kev saib xyuas ntawm cov qauv no:

    Yog:
    button_0 = buttons[0] @button_0.clicked.connect

    Tam sim no koj tuaj yeem sau:
    @buttons[0].clicked.connect

  • Rau lub tsev qiv ntawv txheem ntxiv tus qauv cov ntaub ntawv, uas suav nrog cov ntaub ntawv los ntawm IANA lub sijhawm thaj chaw database.

    > > > los ntawm zoneinfo import ZoneInfo
    > > > los ntawm datetime import datetime, timedelta
    > > > # lub caij ntuj sov
    > > > dt = datetime(2020, 10, 31, 12, tzinfo=ZoneInfo("America/Los_Angeles"))
    > > > print(dt)
    2020-10-31 12:00:00-07:00

    > > > dt.tzname()
    'PDT'

    > > > # Standard time
    > > > dt += timedelta(days=7)
    > > > print(dt)
    2020-11-07 12:00:00-08:00

    > > > print(dt.tzname())
    PST

  • Ntxiv graphlib module, uas ua raws txhawb rau topological sorting ntawm graphs.
  • Tswv yim cov txheej txheem tshiab rau tshem tawm cov lus ua ntej thiab kab xaus - str.removeprefix(prefix) thiab str.removesuffix(suffix). Cov txheej txheem tau ntxiv rau str, bytes, bytearray thiab collections.UserString khoom.

    > > > s = "FooBar"
    > > > s.removeprefix("Foo")
    'Bar'

  • Koom nrog tshiab parser PEG (Parsing Expression Grammar), uas hloov tus parser LLX(1). Kev siv cov parser tshiab ua rau nws muaj peev xwm tshem tau qee qhov "hacks" siv los hla cov kev txwv hauv LL(1), thiab txo cov nqi zog rau kev tswj xyuas qhov ntsuas. Nyob rau hauv cov nqe lus ntawm kev ua tau zoo, tus tshiab parser yog kwv yees li ntawm tib theem li yav dhau los ib tug, tab sis yog ua ntej ntawm nws nyob rau hauv cov nqe lus ntawm yooj, uas tso cai rau koj kom muaj kev ywj pheej ntau dua thaum tsim hom lus tshiab. Cov qub parser code yog khaws cia rau tam sim no thiab tuaj yeem rov qab siv tus chij "-X oldparser" lossis "PYTHONOLDPARSER = 1" ib puag ncig hloov pauv, tab sis yuav raug tshem tawm hauv kev tso tawm 3.10.
  • Muab lub peev xwm rau C txuas ntxiv txoj hauv kev nkag mus rau lub xeev ntawm cov modules uas lawv tau txiav txim siab siv cov pointer ncaj qha tsis yog kev tshawb nrhiav rau lub xeev module siv PyState_FindModule muaj nuj nqi. Qhov kev hloov pauv tso cai rau koj kom ua tau zoo ntawm C modules los ntawm kev txo lossis tshem tawm tag nrho cov nyiaj siv ua haujlwm ntawm kev kuaj xyuas lub xeev module. Txhawm rau koom nrog ib qho module nrog ib chav kawm, C-function PyType_FromModuleAndSpec() tau thov, kom tau txais cov qauv thiab nws lub xeev, C-functions PyType_GetModule() thiab PyType_GetModuleState() tau thov, thiab muab cov txheej txheem nkag mus rau hauv chav kawm. nyob rau hauv uas nws tau txhais, C-function PyCMethod thiab METH_METHOD chij yog npaj. .
  • Cov khib nyiab xa los ntawm kev xauv cov khoom uas muaj cov khoom siv rov ua dua tshiab uas tseem nyob sab nraud tuaj yeem siv tau tom qab qhov kawg ua tiav.
  • Ntxiv txoj kev os.pidfd_open, uas tso cai rau Linux kernel subsystem "pidfd" los siv los tswj PID rov siv qhov xwm txheej (pidfd cuam tshuam nrog cov txheej txheem tshwj xeeb thiab tsis hloov pauv, thaum PID tuaj yeem cuam tshuam nrog lwm cov txheej txheem tom qab cov txheej txheem tam sim no cuam tshuam nrog PID txiav tawm. ).
  • Kev them nyiaj yug rau Unicode specification tau hloov kho rau version 13.0.0.
  • Tshem tawm nco xau thaum reinitializing tus neeg txhais lus Python hauv tib txoj kev.
  • Qhov kev ua tau zoo ntawm cov hom built-in, tuple, teeb, frozenset, daim ntawv teev npe thiab dict tau ua kom zoo dua. ua raws los ntawm kev siv Vectorcall shortcut raws tu qauv kom nkag tau sai rau cov khoom sau ua lus C.
  • Modules _abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, tus neeg teb xov tooj, peev txheej, sij hawm thiab _weakref yog loaded los ntawm pib hauv ntau theem.
  • Tus qauv tsev qiv ntawv modules audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, xaiv, struct, termios thiab zlib tau hloov dua siab tshiab los siv txwv. ruaj khov ABI, uas daws qhov teeb meem ntawm kev ua haujlwm ntawm kev sib koom ua ke ntawm cov qauv txuas ntxiv rau cov qauv sib txawv ntawm Python (thaum hloov kho lub version, tsis tas yuav rov tsim kho qhov txuas ntxiv, thiab cov qauv muab tso ua ke rau 3.9 yuav tuaj yeem ua haujlwm hauv 3.10 ceg).
  • Lub asyncio module tau deprecated kev txhawb nqa rau reuse_address parameter vim muaj peev xwm muaj teeb meem kev nyab xeeb (siv SO_REUSEADDR rau UDP ntawm Linux tso cai rau cov txheej txheem sib txawv los txuas cov mloog pob ntseg rau UDP chaw nres nkoj).
  • Kev ua kom zoo dua tshiab tau ntxiv, piv txwv li, txhim kho kev ua haujlwm ntawm cov teeb liab tuav hauv ntau cov ntawv thov, nce kev ceev ntawm cov txheej txheem subprocess hauv FreeBSD ib puag ncig, thiab ua haujlwm sai dua ntawm cov hloov pauv ib ntus (ua kom muaj qhov sib txawv hauv cov lus qhia "rau y hauv [expr ]” tam sim no ua tau raws li qhov kev qhia “y = expr””). Feem ntau, feem ntau cov kev xeem qhia tau tias kev ua tau zoo txo ​​qis piv rau ceg 3.8 (kev nrawm tsuas yog pom hauv qhov kev xeem write_local thiab write_deque):

    Python version 3.4 3.5 3.6 3.7 3.8 3.9
    ————————————————

    Variable thiab attribute read access:
    nyeem_local 7.1 7.1 5.4 5.1 3.9 4.0
    nyeem_nonlocal 7.1 8.1 5.8 5.4 4.4 4.8
    nyeem_global 15.5 19.0 14.3 13.6 7.6 7.7
    nyeem_builtin 21.1 21.6 18.5 19.0 7.5 7.7
    nyeem_classvar_from_class 25.6 26.5 20.7 19.5 18.4 18.6
    nyeem_classvar_from_instance 22.8 23.5 18.8 17.1 16.4 20.1
    read_instancevar 32.4 33.1 28.0 26.3 25.4 27.7
    nyeem_instancevar_slots 27.8 31.3 20.8 20.8 20.2 24.5
    nyeem_nametuple 73.8 57.5 45.0 46.8 18.4 23.2
    nyeem_boundmethod 37.6 37.9 29.6 26.9 27.7 45.9

    Variable thiab attribute sau nkag:
    sau_local 8.7 9.3 5.5 5.3 4.3 4.2
    sau_nonlocal 10.5 11.1 5.6 5.5 4.7 4.9
    sau_global 19.7 21.2 18.0 18.0 15.8 17.2
    write_classvar 92.9 96.0 104.6 102.1 39.2 43.2
    sau_instancevar 44.6 45.8 40.0 38.9 35.5 40.7
    sau_instancevar_slots 35.6 36.1 27.3 26.6 25.7 27.7

    Cov qauv ntaub ntawv nyeem nkag:
    nyeem_list 24.2 24.5 20.8 20.8 19.0 21.1
    nyeem_deque 24.7 25.5 20.2 20.6 19.8 21.6
    nyeem_dict 24.3 25.7 22.3 23.0 21.0 22.5
    nyeem_strdict 22.6 24.3 19.5 21.2 18.9 21.6

    Cov ntaub ntawv qauv sau nkag:
    lis_list 27.1 28.5 22.5 21.6 20.0 21.6
    txc 28.7 30.1 22.7 21.8 23.5 23.2
    31.4 33.3 29.3 29.2 24.7 27.8
    sau_strdict 28.4 29.9 27.5 25.2 23.1 29.8

    stack (los yog queue) ua haujlwm:
    lis_append_pop 93.4 112.7 75.4 74.2 50.8 53.9
    deque_append_pop 43.5 57.0 49.4 49.2 42.5 45.5
    deque_append_popleft 43.7 57.3 49.7 49.7 42.8 45.5

    Lub sijhawm ntsuas:
    cov_overhead 0.5 0.6 0.4 0.3 0.3 0.3

  • Tshem tawm ntau Python 2.7 kev ua haujlwm thiab cov txheej txheem uas yav dhau los tsis lees paub thiab ua rau DeprecationWarning hauv qhov kev tso tawm dhau los, suav nrog unescape() txoj hauv html.parser.HTMLParser,
    tostring() thiab fromstring() hauv array.array, isAlive() hauv threading.Thread, getchildren() thiab getiterator() hauv ElementTree, sys.getcheckinterval(), sys.setcheckinterval(), asyncio.Task.current_task(), asyncio.task.all_tasks(), base64.encodestring() and base64.decodestring().

Tau qhov twg los: opennet.ru

Ntxiv ib saib