Жилийн хөгжлийн дараа чухал ач холбогдолтой програмчлалын хэлний хувилбар . Python 3.9 бол дараа нь гаргасан анхны хувилбар юм төсөл дээр хувилбаруудыг бэлтгэх, дэмжих. Шинэ томоохон хувилбарууд одоо жилд нэг удаа гарах бөгөөд залруулах шинэчлэлтүүд хоёр сар тутамд гарах болно. Чухал ач холбогдол бүхий салбар бүрийг нэг жил хагасын хугацаанд дэмжих бөгөөд үүний дараа дахин гурван жил хагасын хугацаанд сул талыг засахад зориулж хөгжүүлнэ.
Одоо шинэ салбар дээр ажиллах ажил дараагийн салбар гарахаас таван сарын өмнө эхэлж байна, i.e. Python 3.9 хувилбар гарсантай давхцаж байна Python 3.10 салбарын альфа тест. Python 3.10 салбар нь долоон сарын турш альфа хувилбарт байх бөгөөд энэ хугацаанд шинэ боломжуудыг нэмж, алдаануудыг засна. Үүний дараа бета хувилбаруудыг гурван сарын турш турших бөгөөд энэ хугацаанд шинэ боломжуудыг нэмэхийг хориглож, алдааг засахад бүх анхаарлаа хандуулах болно. Суллахаас өмнөх сүүлийн хоёр сарын хугацаанд салбар нь эцсийн тогтворжуулалтыг хийх шатандаа байх болно.
Python 3.9 дээр:
- Суурилуулсан dict классыг ашиглан тодорхойлсон толь бичгүүдэд, нэгтгэх операторуудын дэмжлэг "|" болон толь бичгүүдийг нэгтгэхэд өмнө нь санал болгож байсан {**d1, **d2} болон dict.update аргуудыг нөхдөг "|=" шинэчлэлтүүд.
>>> x = {"түлхүүр1": "х-с утга1", "түлхүүр2": "х-с утга2"}
>>> y = {"түлхүүр2": "y-с утга2", "түлхүүр3": "y-с утга3"}>>> x | y
{'түлхүүр1': 'х-с утга1', 'түлхүүр2': 'у-аас утга2', 'түлхүүр3': 'ү-ээс утга3'}>>> y | x
{'түлхүүр2': 'х-с утга2', 'түлхүүр3': 'y-с утга3', 'түлхүүр1': 'х-с утга1'} - Суурилуулсан төрлүүдийн цуглуулгад жагсаалт, dict, tuple зэрэг багтдаг бөгөөд тэдгээрийг бичих модулиас импортлохгүйгээр үндсэн төрөл болгон ашиглаж болно. Тэдгээр. typing.List, typing.Dict болон typing.Tuple-ийн оронд та одоо зааж өгч болно.
зүгээр л жагсаалт, dict болон tuple:def greet_all(нэр: жагсаалт[str]) -> Байхгүй:
нэрсийн хувьд:
хэвлэх("Сайн уу", нэр) - функц болон хувьсагчийн тайлбар хийх уян хатан хэрэгслүүд. Тэмдэглэгээ хавсаргахын тулд бичих модульд шинэ Annotated төрлийг нэмсэн бөгөөд одоо байгаа төрлүүдийг статик дүн шинжилгээ хийх эсвэл ажиллах хугацааг оновчтой болгоход ашиглаж болох нэмэлт мета өгөгдлөөр өргөтгөсөн. Кодоос мета өгөгдөлд хандахын тулд typing.get_type_hints() аргад include_extras параметрийг нэмсэн.
charType = Тэмдэглэгээтэй[int, ctype("char")]
UnsignedShort = Тэмдэглэгээтэй[int, struct2.ctype('H')] - Чимэгчдэд тавих дүрмийн шаардлага - if болон while-д хэрэглэхэд тохиромжтой аливаа хэллэгийг одоо чимэглэгч болгон ашиглаж болно. Энэхүү өөрчлөлт нь PyQt5 кодын унших чадварыг эрс сайжруулж, энэ модулийн засвар үйлчилгээг хялбаршуулсан.
Энэ нь:
button_0 = товчлуурууд[0]
@button_0.clicked.connectОдоо та бичиж болно:
@buttons[0].clicked.connect - Стандарт номын сан руу модуль , үүнд IANA цагийн бүсийн мэдээллийн сангаас мэдээлэл орсон.
>>> zoneinfo импортын ZoneInfo-оос
>>> datetime-аас импортлох datetime, timedelta
>>> # Зуны цаг
>>> dt = огноо цаг(2020, 10, 31, 12, tzinfo=ZoneInfo("Америк/Лос_Анжелес"))
>>> хэвлэх(dt)
2020-10-31 12:00:00-07:00>>> dt.tzname()
'PDT'>>> # Стандарт цаг
>>> dt += timedelta(өдөр=7)
>>> хэвлэх(dt)
2020-11-07 12:00:00-08:00>>> хэвлэх(dt.tzname())
PST - graphlib модулийг нэмсэн бөгөөд үүнд графикуудын топологийн эрэмбийг дэмжих.
- угтвар болон мөрийн төгсгөлийг арилгах шинэ аргууд - str.removeprefix(утгалт) болон str.removesuffix(даггавар). str, bytes, bytearray болон collections.UserString объектуудад аргууд нэмэгдсэн.
>>> s = "FooBar"
>>> s.removeprefix("Foo")
"Баар" - шинэ задлан шинжлэгч (Parsing Expression Grammar) нь задлан шинжлэгчийг орлуулсан . Шинэ задлан шинжлэгчийг ашигласнаар LL(1)-ийн хязгаарлалтыг тойрч гарахад ашигладаг зарим "хакерууд"-аас ангижрах боломжтой болж, задлан шинжлэгчийг засварлахад шаардагдах хөдөлмөрийн зардлыг мэдэгдэхүйц бууруулсан. Гүйцэтгэлийн хувьд шинэ задлан шинжлэгч нь өмнөхтэй ойролцоо түвшинд байгаа боловч уян хатан байдлын хувьд түүнээс нэлээд түрүүлж байгаа нь хэлний шинэ функцуудыг зохион бүтээхдээ илүү чөлөөтэй байх боломжийг олгодог. Хуучин задлагч кодыг одоохондоо хадгалсан бөгөөд "-X oldparser" туг эсвэл "PYTHONOLDPARSER=1" орчны хувьсагчийг ашиглан буцаах боломжтой боловч 3.10 хувилбар дээр устгагдах болно.
- C өргөтгөлийн аргууд нь PyState_FindModule функцийг ашиглан модулийн төлөвийг хайхын оронд шууд заагчийн хамаарлыг ашиглан тодорхойлсон модулиудын төлөвт хандах чадвар. Энэхүү өөрчлөлт нь модулийн төлөвийг шалгах нэмэлт зардлыг багасгах эсвэл бүрмөсөн арилгах замаар C модулиудын гүйцэтгэлийг нэмэгдүүлэх боломжийг олгоно. Модулийг ангитай холбохын тулд C-функц PyType_FromModuleAndSpec()-ийг санал болгож, модуль болон түүний төлөвийг олж авахын тулд C-функцуудыг PyType_GetModule() болон PyType_GetModuleState() санал болгож, ангид хандах аргыг санал болгож байна. тодорхойлогдсон бол C-функц PyCMethod болон METH_METHOD тугийг санал болгож байна.
- Хог цуглуулагч Төгсгөгчийг ажиллуулсны дараа гаднаас хандах боломжтой хэвээр байгаа сэргээсэн объектуудыг агуулсан цуглуулгуудыг түгжихээс.
- Нэмсэн арга , цөмийн дэд системийг ашиглах боломжийг олгодог Linux PID дахин ашиглах нөхцөл байдлыг зохицуулахын тулд "pidfd" командыг ашиглана уу (pidfd нь тодорхой процесстой холбоотой бөгөөд өөрчлөгддөггүй бол тухайн PID-тэй холбоотой одоогийн процесс дууссаны дараа PID-г өөр процесст оноож болно).
- Юникод тодорхойлолтын дэмжлэгийг 13.0.0 хувилбар болгон шинэчилсэн.
- Арилгасан ижил процесст Python орчуулагчийг дахин эхлүүлэх үед.
- Суурилуулсан төрлүүдийн хүрээ, tuple, set, frozenset, list болон dict-ийн гүйцэтгэлийг оновчтой болгосон. C хэл дээр бичигдсэн объектуудад илүү хурдан хандахын тулд Vectorcall товчлолын протоколыг ашиглан.
- _abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, оператор, нөөц, цаг болон _weakref модулиудыг ачаалах горимд шилжүүлсэн. .
- Audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib зэрэг номын сангийн стандарт модулиудыг хязгаарлагдмал ашиглахаар хөрвүүлсэн. , энэ нь Python-ийн өөр өөр хувилбаруудад зориулсан өргөтгөлийн модулиудын угсралтын ажиллагааны асуудлыг шийддэг (хувилбарыг шинэчлэх үед өргөтгөлийн модулиудыг дахин бүтээх шаардлагагүй бөгөөд 3.9-д зориулж эмхэтгэсэн модулиуд 3.10 салбар дээр ажиллах боломжтой болно).
- Аюулгүй байдлын асуудлаас шалтгаалан asyncio модуль нь reuse_address параметрийн дэмжлэгийг зогсоосон (UDP-д зориулсан SO_REUSEADDR-г ашиглан) Linux сонсох сокетуудыг UDP порт руу холбох өөр өөр процессуудыг зөвшөөрдөг).
- Шинэ оновчлолууд нэмэгдсэн, жишээлбэл, олон урсгалтай програмууд дахь дохионы зохицуулагчийн гүйцэтгэл сайжирсан, FreeBSD орчин дахь дэд процессын модулийн хурд нэмэгдсэн, түр зуурын хувьсагчдыг илүү хурдан хуваарилах ([expr дахь "for y" илэрхийлэлд хувьсагчийг оноох) ]” нь одоо “y = expr” ") илэрхийлэлтэй адил гүйцэтгэлтэй байна. Ерөнхийдөө ихэнх туршилтууд Салбар 3.8-тай харьцуулахад гүйцэтгэлийн бууралт (хурдлах нь зөвхөн бичих_локал болон бичих_deque тестүүдэд ажиглагддаг):
Python хувилбар 3.4 3.5 3.6 3.7 3.8 3.9
————— — — — — —Хувьсагч ба атрибут унших хандалт:
унших_орон нутгийн 7.1 7.1 5.4 5.1 3.9 4.0
унших_орон нутгийн бус 7.1 8.1 5.8 5.4 4.4 4.8
read_global 15.5 19.0 14.3 13.6 7.6 7.7
уншсан_бүтээсэн 21.1 21.6 18.5 19.0 7.5 7.7
ангиас_унших_анги 25.6 26.5 20.7 19.5 18.4 18.6
Жишээнээс_унших_анги 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
read_instancevar_slots 27.8 31.3 20.8 20.8 20.2 24.5
read_namedtuple 73.8 57.5 45.0 46.8 18.4 23.2
унших_хэрэглэх арга 37.6 37.9 29.6 26.9 27.7 45.9Хувьсагч болон атрибут бичих эрх:
бичих_орон нутгийн 8.7 9.3 5.5 5.3 4.3 4.2
бичих_орон нутгийн бус 10.5 11.1 5.6 5.5 4.7 4.9
write_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
write_instancevar 44.6 45.8 40.0 38.9 35.5 40.7
write_instancevar_slots 35.6 36.1 27.3 26.6 25.7 27.7Өгөгдлийн бүтэц унших хандалт:
унших_жагсаалт 24.2 24.5 20.8 20.8 19.0 21.1
унших_deque 24.7 25.5 20.2 20.6 19.8 21.6
уншсан_зар 24.3 25.7 22.3 23.0 21.0 22.5
унших_стрикт 22.6 24.3 19.5 21.2 18.9 21.6Өгөгдлийн бүтэц бичих хандалт:
бичих_жагсаалт 27.1 28.5 22.5 21.6 20.0 21.6
write_deque 28.7 30.1 22.7 21.8 23.5 23.2
бичих_dict 31.4 33.3 29.3 29.2 24.7 27.8
write_strdict 28.4 29.9 27.5 25.2 23.1 29.8Стек (эсвэл дараалал) үйлдлүүд:
жагсаалт_хавслах_поп 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Цагийн гогцоо:
гогцоо_дамж 0.5 0.6 0.4 0.3 0.3 0.3 - html.parser.HTMLParser доторх unescape() аргыг багтаасан, өмнө нь хуучирсан, өмнөх хувилбарт DeprecationWarning-д хүргэсэн олон Python 2.7 функц, аргууд,
array.array-д tostring() болон fromstring(), threading.Thread-д isAlive(), ElementTree-д getchildren() болон getiterator(), sys.getcheckinterval(), sys.setcheckinterval(), asyncio.Task.current_task(), asyncio.Task.all_tasks(), base64.encodestring() болон base64.decodestring().
Эх сурвалж: opennet.ru
