XNUMX๋
์ ๊ฐ๋ฐ ๋์
์ด์ ์ ๋ธ๋์น์ ๋ํ ์์
์ ๋ค์ ๋ธ๋์น๊ฐ ์ถ์๋๊ธฐ 3.9๊ฐ์ ์ ์ ์์๋ฉ๋๋ค. Python XNUMX ์ถ์์ ๋์์
- ๋ด์ฅ dict ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ ์๋ ์ฌ์ ์์,
์ถ์ฐ ํ ๋ณํฉ ์ฐ์ฐ์ "|" ์ง์ ๋ฐ "|=" ์ ๋ฐ์ดํธ๋ ์ฌ์ ๋ณํฉ์ ์ํด ์ด์ ์ ์ ์๋ {**d1, **d2} ๋ฐ dict.update ๋ฐฉ๋ฒ์ ๋ณด์ํฉ๋๋ค.>>> x = {"key1": "x์ ๊ฐ1", "key2": "x์ ๊ฐ2"}
>>> y = {"key2": "y์ ๊ฐ2", "key3": "y์ ๊ฐ3"}>>> x | ์์ด
{'key1': 'x์ ๊ฐ1', 'key2': 'y์ ๊ฐ2', 'key3': 'y์ ๊ฐ3'}>>> ์ | ์์ค
{'key2': 'x์ ๊ฐ2', 'key3': 'y์ ๊ฐ3', 'key1': 'x์ ๊ฐ1'} - ๋ด์ฅ๋ ์ ํ ์ปฌ๋ ์
์๋ ํ์ดํ ๋ชจ๋์์ ๊ฐ์ ธ์ค์ง ์๊ณ ๋ ๊ธฐ๋ณธ ์ ํ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๋ชฉ๋ก, ์ฌ์ ๋ฐ ํํ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ ๊ฒ๋ค. ํ์ดํ.List, ํ์ดํ.Dict ๋ฐ ํ์ดํ.Tuple ๋์ ์ด์ ์ง์ ํ ์ ์์ต๋๋ค.
๊ทธ๋ฅ ๋ฆฌ์คํธ, ๋์ ๋๋ฆฌ, ํํ๋ง ์์ผ๋ฉด ๋ฉ๋๋ค:def Greeting_all(names: list[str]) -> ์์:
์ด๋ฆ ์์ ์ด๋ฆ:
print("์๋ ํ์ธ์", ์ด๋ฆ) -
์ ๊ณต๋๋ค ํจ์์ ๋ณ์์ ์ฃผ์์ ๋ฌ๊ธฐ ์ํ ์ ์ฐํ ๋๊ตฌ์ ๋๋ค. ์ฃผ์์ ์ฒจ๋ถํ๊ธฐ ์ํด ์๋ก์ด Annotated ์ ํ์ด ํ์ดํ ๋ชจ๋์ ์ถ๊ฐ๋์ด ์ ์ ๋ถ์์ด๋ ๋ฐํ์ ์ต์ ํ์ ์ฌ์ฉํ ์ ์๋ ์ถ๊ฐ ๋ฉํ๋ฐ์ดํฐ๋ก ๊ธฐ์กด ์ ํ์ ํ์ฅํ์ต๋๋ค. ์ฝ๋์์ ๋ฉํ๋ฐ์ดํฐ์ ์ก์ธ์คํ๊ธฐ ์ํด include_extras ๋งค๊ฐ๋ณ์๊ฐ Typing.get_type_hints() ๋ฉ์๋์ ์ถ๊ฐ๋์์ต๋๋ค.charType = Annotated[int, ctype("char")] UnsignedShort = Annotated[int, struct2.ctype('H')]
-
ํค๋ค์ด ๋ฐ์ฝ๋ ์ดํฐ์ ๋ํ ๋ฌธ๋ฒ ์๊ตฌ ์ฌํญ - if ๋ฐ while ๋ธ๋ก์ ์ฌ์ฉํ๊ธฐ์ ์ ํฉํ ๋ชจ๋ ํํ์ ์ด์ ๋ฐ์ฝ๋ ์ดํฐ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ณ๊ฒฝ์ผ๋ก ์ธํด PyQt5 ์ฝ๋์ ๊ฐ๋ ์ฑ์ด ํฌ๊ฒ ํฅ์๋๊ณ ์ด ๋ชจ๋์ ์ ์ง ๊ด๋ฆฌ๊ฐ ๋จ์ํ๋์์ต๋๋ค.๊ทธ๊ฒ์ :
๋ฒํผ_0 = ๋ฒํผ[0] @button_0.clicked.connect์ด์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์์ต๋๋ค.
@buttons[0].clicked.connect - ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก
์ถ๊ฐ ๋ชจ๋๊ตฌ์ญ ์ ๋ณด , ์ฌ๊ธฐ์๋ IANA ์๊ฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๋ณด๊ฐ ํฌํจ๋ฉ๋๋ค.>>> zoneinfo์์ ZoneInfo ๊ฐ์ ธ์ค๊ธฐ
>>> datetime import datetime, timedelta์์
>>> # ์ฌ๋ฆ ์๊ฐ
>>> dt = datetime(2020, 10, 31, 12, tzinfo=ZoneInfo("America/Los_Angeles"))
>>> ์ธ์(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(prefix) ๋ฐ str.removesuffix(suffix). str, bytes, bytearray ๋ฐ collections.UserString ๊ฐ์ฒด์ ๋ฉ์๋๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.>>> s = "ํธ๋ฐ"
>>> s.removeprefix("Foo")
'์ ์ง' -
๊ด๋ จ๋ ์๋ก์ด ํ์PEG (Parsing Expression Grammar), ํ์๋ฅผ ๋์ฒดํจ์์(1) . ์๋ก์ด ํ์๋ฅผ ์ฌ์ฉํ๋ฉด LL(1)์ ์ ํ ์ฌํญ์ ์ฐํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ผ๋ถ "ํดํน"์ ์ ๊ฑฐํ ์ ์์๊ณ ํ์ ์ ์ง ๊ด๋ฆฌ์ ๋๋ ์ธ๊ฑด๋น๋ฅผ ํฌ๊ฒ ์ค์ผ ์ ์์์ต๋๋ค. ์ฑ๋ฅ ์ธก๋ฉด์์ ์ ํ์๋ ์ด์ ํ์์ ๊ฑฐ์ ๋์ผํ ์์ค์ด์ง๋ง ์ ์ฐ์ฑ ์ธก๋ฉด์์ ํจ์ฌ ์์ ์์ด ์๋ก์ด ์ธ์ด ๊ธฐ๋ฅ์ ์ค๊ณํ ๋ ๋ ์์ ๋กญ๊ฒ ๋๋ ์ ์์ต๋๋ค. ์ด์ ํ์ ์ฝ๋๋ ํ์ฌ ์ ์ง๋๋ฉฐ "-X oldparser" ํ๋๊ทธ ๋๋ "PYTHONOLDPARSER=1" ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐํ๋ ์ ์์ง๋ง ๋ฆด๋ฆฌ์ค 3.10์์๋ ์ ๊ฑฐ๋ฉ๋๋ค. -
์ ์ํด ์ ๊ณต PyState_FindModule ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ํ๋ฅผ ๊ฒ์ํ๋ ๋์ ์ง์ ํฌ์ธํฐ ์ญ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์๋ ๋ชจ๋์ ์ํ์ ์ก์ธ์คํ๋ C ํ์ฅ ๋ฉ์๋์ ๊ธฐ๋ฅ์ ๋๋ค. ์ด๋ฌํ ๋ณ๊ฒฝ์ ํตํด ๋ชจ๋ ์ํ๋ฅผ ํ์ธํ๋ ์ค๋ฒํค๋๋ฅผ ์ค์ด๊ฑฐ๋ ์์ ํ ์ ๊ฑฐํ์ฌ C ๋ชจ๋์ ์ฑ๋ฅ์ ๋์ผ ์ ์์ต๋๋ค. ๋ชจ๋์ ํด๋์ค์ ์ฐ๊ด์ํค๊ธฐ ์ํด C ํจ์ PyType_FromModuleAndSpec()์ด ์ ์๋๊ณ , ๋ชจ๋๊ณผ ํด๋น ์ํ๋ฅผ ์ป๊ธฐ ์ํด C ํจ์ PyType_GetModule() ๋ฐ PyType_GetModuleState()๊ฐ ์ ์๋๋ฉฐ, ํด๋์ค์ ์ก์ธ์คํ ์ ์๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ ์๋ C ํจ์ PyCMethod ๋ฐ METH_METHOD ํ๋๊ทธ๊ฐ ์ ์๋์์ต๋๋ค. - ์ฐ๋ ๊ธฐ ์์ง๊ฐ
๋ฐฐ๋ฌ๋จ ์ข ๋ฃ์๊ฐ ์คํ๋ ํ์๋ ์ธ๋ถ์์ ์ก์ธ์คํ ์ ์๋ ์ฌํ์ฑํ๋ ๊ฐ์ฒด๊ฐ ํฌํจ๋ ์ ๊ธ ์ปฌ๋ ์ ์์ ์์ฑ๋ฉ๋๋ค. - ์ถ๊ฐ๋ ๋ฐฉ๋ฒ
os.pidfd_open ์ด๋ฅผ ํตํด Linux ์ปค๋ ํ์ ์์คํ "pidfd"๋ฅผ ์ฌ์ฉํ์ฌ PID ์ฌ์ฌ์ฉ ์ํฉ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค(pidfd๋ ํน์ ํ๋ก์ธ์ค์ ์ฐ๊ฒฐ๋์ด ์์ผ๋ฉฐ ๋ณ๊ฒฝ๋์ง ์์ง๋ง PID๋ ํด๋น PID์ ์ฐ๊ฒฐ๋ ํ์ฌ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋ ํ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ฐ๊ฒฐ๋ ์ ์์) ). - ์ ๋์ฝ๋ ์ฌ์์ ๋ํ ์ง์์ด ๋ฒ์ 13.0.0์ผ๋ก ์ ๋ฐ์ดํธ๋์์ต๋๋ค.
- ์ ๊ฑฐ๋จ
๋ฉ๋ชจ๋ฆฌ ๋์ ๋์ผํ ํ๋ก์ธ์ค์์ Python ์ธํฐํ๋ฆฌํฐ๋ฅผ ๋ค์ ์ด๊ธฐํํ ๋. - ๋ด์ฅ ์ ํ range, 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๋ ์ ํ๋ ์ฌ์ฉ์ ์ํด ๋ณํ๋์์ต๋๋ค.
์์ ์ ์ธ ABI , ์ด๋ ๋ค์ํ ๋ฒ์ ์ Python์ ๋ํ ํ์ฅ ๋ชจ๋ ์ด์ ๋ธ๋ฆฌ์ ์๋์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค(๋ฒ์ ์ ์ ๋ฐ์ดํธํ ๋ ํ์ฅ ๋ชจ๋์ ๋ค์ ๋น๋ํ ํ์๊ฐ ์์ผ๋ฉฐ 3.9์ฉ์ผ๋ก ์ปดํ์ผ๋ ๋ชจ๋์ 3.10 ๋ถ๊ธฐ์์ ์๋ํ ์ ์์ต๋๋ค). - asyncio ๋ชจ๋์ ์ ์ฌ์ ์ธ ๋ณด์ ๋ฌธ์ ๋ก ์ธํด ์ฌ์ฌ์ฉ_์ฃผ์ ๋งค๊ฐ๋ณ์์ ๋ํ ์ง์์ ์ค๋จํ์ต๋๋ค(Linux์์ UDP์ SO_REUSEADDR์ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์์ ์์ผ์ UDP ํฌํธ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค).
- ์๋ก์ด ์ต์ ํ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ฉํฐ์ค๋ ๋ ์ ํ๋ฆฌ์ผ์ด์
์์ ์ ํธ ์ฒ๋ฆฌ๊ธฐ ์ฑ๋ฅ ํฅ์, FreeBSD ํ๊ฒฝ์์ ํ์ ํ๋ก์ธ์ค ๋ชจ๋ ์๋ ํฅ์, ์์ ๋ณ์ ํ ๋น ์๋ ํฅ์("for y in [expr" ํํ์์ ๋ณ์ ํ ๋น) ]โ๋ ์ด์ โy = exprโ ") ํํ์๋งํผ ์ฑ๋ฅ์ด ์ข์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋๋ถ๋ถ์ ํ
์คํธ๋
๋ณด์ฌ ๋ถ๊ธฐ 3.8์ ๋นํด ์ฑ๋ฅ ์ ํ(์๋ ํฅ์์ write_local ๋ฐ write_deque ํ ์คํธ์์๋ง ๊ด์ฐฐ๋จ):ํ์ด์ฌ ๋ฒ์ 3.4 3.5 3.6 3.7 3.8 3.9
โโโโโ โ โ โ โ โ โ๋ณ์ ๋ฐ ์์ฑ ์ฝ๊ธฐ ์ก์ธ์ค:
์ฝ๊ธฐ_๋ก์ปฌ 7.1 7.1 5.4 5.1 3.9 4.0
read_nonlocal 7.1 8.1 5.8 5.4 4.4 4.8
์ฝ๊ธฐ_๊ธ๋ก๋ฒ 15.5 19.0 14.3 13.6 7.6 7.7
์ฝ๊ธฐ ๋ด์ฅ 21.1 21.6 18.5 19.0 7.5 7.7
read_classvar_from_class 25.6 26.5 20.7 19.5 18.4 18.6
read_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
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
read_bound๋ฐฉ๋ฒ 37.6 37.9 29.6 26.9 27.7 45.9๋ณ์ ๋ฐ ์์ฑ ์ฐ๊ธฐ ์ก์ธ์ค:
write_local 8.7 9.3 5.5 5.3 4.3 4.2
write_nonlocal 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
์ฝ๊ธฐ_๋ฐํฌ 24.7 25.5 20.2 20.6 19.8 21.6
read_dict 24.3 25.7 22.3 23.0 21.0 22.5
read_strdict 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
write_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