XNUMX๋
๋ฐ์ ๊ฐ๋ฐ ๋์
์ถ๊ฐ๋ ๊ฒ ์ค์์
-
์ง์ ๋ณต์กํ ํํ์ ๋ด์ ํ ๋น ์์ . ์๋ก์ด ":=" ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ํํ์ ๋ด์์ ๊ฐ ํ ๋น ์์ ์ ์ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์กฐ๊ฑด๋ฌธ์์๋ ๋ฃจํ๋ฅผ ์ ์ํ ๋ ์ด์ค ํจ์ ํธ์ถ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.if (n := len(a)) > 10:
...while (block := f.read(256)) != ":
... -
์ง์ ํจ์ ์ธ์๋ฅผ ์ง์ ํ๊ธฐ ์ํ ์๋ก์ด ๊ตฌ๋ฌธ. ํจ์ ์ ์ ์ค ์ธ์๋ฅผ ์ด๊ฑฐํ ๋ ์ด์ "/"๋ฅผ ์ง์ ํ์ฌ ํจ์ ํธ์ถ ์ค ๊ฐ์ด ์ด๊ฑฐ๋๋ ์์์ ๋ฐ๋ผ ๊ฐ๋ง ํ ๋นํ ์ ์๋ ์ธ์์ ํ ๋น ๊ฐ๋ฅํ ์ธ์๋ฅผ ๊ตฌ๋ถํ ์ ์์ต๋๋ค. ์ด๋ค ์์๋ก๋ (๋ณ์=๊ฐ ๊ตฌ๋ฌธ)). ์ค์ฉ์ ์ธ ์ธก๋ฉด์์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด Python์ ํจ์๊ฐ C์ ๊ธฐ์กด ํจ์ ๋์์ ์์ ํ ์๋ฎฌ๋ ์ด์ ํ ์ ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด ๋งค๊ฐ๋ณ์ ์ด๋ฆ์ด ํฅํ ๋ณ๊ฒฝ๋ ์์ ์ธ ๊ฒฝ์ฐ ํน์ ์ด๋ฆ์ ๋ํ ๋ฐ์ธ๋ฉ์ ํผํ ์๋ ์์ต๋๋ค."/" ํ๋๊ทธ๋ ์ด์ ์ ์ถ๊ฐ๋ "*" ํ๋๊ทธ๋ฅผ ๋ณด์ํ์ฌ "๋ณ์=๊ฐ" ํ์์ ํ ๋น๋ง ์ ์ฉํ ์ ์๋ ๋ณ์๋ฅผ ๊ตฌ๋ถํฉ๋๋ค. ์๋ฅผ ๋ค์ด, "def f(a, b, /, c, d, *, e, f):" ํจ์์์ ๋ณ์ "a"์ "b"๋ ๊ฐ์ด ๋์ด๋ ์์๋๋ก๋ง ํ ๋น๋ ์ ์์ต๋๋ค. ,
๋ณ์ "e" ๋ฐ "f"๋ "variable=value" ํ ๋น์ ํตํด์๋ง ๊ฐ๋ฅํ๋ฉฐ ๋ณ์ "c" ๋ฐ "d"๋ ๋ค์ ๋ฐฉ๋ฒ ์ค ํ๋๋ก ์ํ๋ฉ๋๋ค.f(10, 20, 30, 40, e=50, f=60)
f(10, 20, s=30, d=40, e=50, f=60) -
์ถ๊ฐ๋จ ์๋ก์ด C API
Python ์ด๊ธฐํ ๋งค๊ฐ๋ณ์๋ฅผ ๊ตฌ์ฑํ์ฌ ๋ชจ๋ ํญ๋ชฉ์ ์๋ฒฝํ๊ฒ ์ ์ดํ ์ ์์ต๋๋ค.๊ตฌ์ฑ ๊ณ ๊ธ ์ค๋ฅ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ ์๋ API๋ฅผ ์ฌ์ฉํ๋ฉด Python ์ธํฐํ๋ฆฌํฐ ๊ธฐ๋ฅ์ ๋ค๋ฅธ C ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ฒ ํฌํจํ ์ ์์ต๋๋ค. -
๊ตฌํ C ์ธ์ด๋ก ์์ฑ๋ ๊ฐ์ฒด์ ๋ ๋น ๋ฅด๊ฒ ์ก์ธ์คํ๊ธฐ ์ํ ์๋ก์ด ๋ฒกํฐ์ฝ ํ๋กํ ์ฝ์ ๋๋ค. CPython 3.8์์ Vectorcall์ ๋ํ ์ก์ธ์ค๋ ์ฌ์ ํ ๋ด๋ถ ์ฌ์ฉ์ผ๋ก ์ ํ๋๋ฉฐ, CPython 3.9์์๋ ๊ณต๊ฐ์ ์ผ๋ก ์ก์ธ์ค ๊ฐ๋ฅํ API ๋ฒ์ฃผ๋ก์ ์ ํ์ด ๊ณํ๋์ด ์์ต๋๋ค. -
์ถ๊ฐ๋จ ์ํ๋ ์์ ์ ๊ฐ์ฌํ๊ธฐ ์ํด ์คํฌ๋ฆฝํธ ์งํ ์ํฉ์ ๋ํ ํ์ ์์ค ์ ๋ณด์ ์ก์ธ์คํ ์ ์๋ Python์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํ๋ ๋ฐํ์ ๊ฐ์ฌ ํํฌ ํธ์ถ(์: ์ถ์ ์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ, ํ์ผ ์ด๊ธฐ ์ถ์ , ๋คํธ์ํฌ ์์ผ์ ์ก์ธ์คํ๊ณ exec, eval ๋ฐ run_mod๋ฅผ ํตํด ์ฝ๋๋ฅผ ์คํํฉ๋๋ค. - ๋ชจ๋์์๋
ํผํด ์ ๊ณต๋ ๊ฐ์ฒด ์ง๋ ฌํ ๋ฐ ์ญ์ง๋ ฌํ์ ์ฌ์ฉ๋๋ Pickle 5 ํ๋กํ ์ฝ์ ์ง์ํฉ๋๋ค. Pickle์ ์ฌ์ฉํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋ณต์ฌ ์์ ์๋ฅผ ์ค์ด๊ณ ๋ฐ์ดํฐ๋ณ ์์ถ ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ๊ณผ ๊ฐ์ ์ถ๊ฐ ์ต์ ํ ๊ธฐ์ ์ ์ ์ฉํ์ฌ ๋ค์ค ์ฝ์ด ๋ฐ ๋ค์ค ๋ ธ๋ ๊ตฌ์ฑ์์ Python ํ๋ก์ธ์ค ๊ฐ์ ๋๋์ ๋ฐ์ดํฐ ์ ์ก์ ์ต์ ํํ ์ ์์ต๋๋ค. ํ๋กํ ์ฝ์ ๋ค์ฏ ๋ฒ์งธ ๋ฒ์ ์ ๋ฐ์ดํฐ๊ฐ ๊ธฐ๋ณธ ํผํด ์คํธ๋ฆผ๊ณผ ๋ณ๋๋ก ์ ์ก๋ ์ ์๋ ๋์ญ ์ธ ์ ์ก ๋ชจ๋๋ฅผ ์ถ๊ฐํ ์ ์์ ์ฃผ๋ชฉํ ๋งํฉ๋๋ค. - ๊ธฐ๋ณธ์ ์ผ๋ก Pickle ํ๋กํ ์ฝ์ ๋ค ๋ฒ์งธ ๋ฒ์ ์ด ํ์ฑํ๋ฉ๋๋ค. ์ด ๋ฒ์ ์ ์ด์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ ์ธ ๋ฒ์งธ ๋ฒ์ ๊ณผ ๋น๊ตํ์ฌ ๋ ๋์ ์ฑ๋ฅ์ ์ ๊ณตํ๊ณ ์ ์ก๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
- ๋ชจ๋์์๋
์ ๋ ฅ ๋ช ๊ฐ์ง ์๋ก์ด ๊ธฐ๋ฅ์ด ๋์ ๋์์ต๋๋ค:- ํด๋์ค
TypedDict ํค์ ์ฐ๊ด๋ ๋ฐ์ดํฐ์ ๋ํด ์ ํ ์ ๋ณด๊ฐ ๋ช ์์ ์ผ๋ก ์ง์ ๋ ์ฐ๊ด ๋ฐฐ์ด์ ๊ฒฝ์ฐ(โTypedDict('Point2D', x=int, y=int, label=str)โ). - ์ ํ
์ ํํ ๋ฅผ ์ฌ์ฉํ๋ฉด ๋งค๊ฐ๋ณ์๋ ๋ฐํ ๊ฐ์ ๋ฏธ๋ฆฌ ์ ์๋ ๋ช ๊ฐ์ง ๊ฐ(โLiteral['connected', 'disconnected']โ)์ผ๋ก ์ ํํ ์ ์์ต๋๋ค. - ๊ฑด์ค "
๋ "๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณ๊ฒฝํ๊ฑฐ๋ ์ฌํ ๋นํ ์ ์๋ ๋ณ์, ํจ์, ๋ฉ์๋ ๋ฐ ํด๋์ค์ ๊ฐ์ ์ ์ํ ์ ์์ต๋๋ค("pi: Final[float] = 3.1415926536").
- ํด๋์ค
- ๋ฐ์ดํธ์ฝ๋๋ก ์ปดํ์ผ๋ ํ์ผ์ ์บ์๋ฅผ ํ ๋นํ๊ณ ๋ณ๋์ FS ํธ๋ฆฌ์ ์ ์ฅํ๋ฉฐ ์ฝ๋๊ฐ ์๋ ๋๋ ํฐ๋ฆฌ์ ๋ถ๋ฆฌ๋๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ต๋๋ค. ๋ฐ์ดํธ์ฝ๋๊ฐ ํฌํจ๋ ํ์ผ์ ์ ์ฅํ๋ ๊ฒฝ๋ก๋ ๋ณ์๋ฅผ ํตํด ์ค์ ๋ฉ๋๋ค.
PYTHONPYCachePrefix ๋๋ "-X pycache_prefix" ์ต์ ; -
๊ตฌํ ๋ฆด๋ฆฌ์ค์ ๋์ผํ ABI๋ฅผ ์ฌ์ฉํ๋ Python์ ๋๋ฒ๊ทธ ๋น๋๋ฅผ ์์ฑํ๋ ๊ธฐ๋ฅ, ์ด๋ฅผ ํตํด ๋๋ฒ๊ทธ ๋น๋์์ SI ์ธ์ด๋ก ์์ฑ๋๊ณ ์์ ์ ์ธ ๋ฆด๋ฆฌ์ค์ฉ์ผ๋ก ์ปดํ์ผ๋ ํ์ฅ์ ๋ก๋ํ ์ ์์ต๋๋ค. - f-๋ฌธ์์ด('f' ์ ๋์ฌ๊ฐ ๋ถ์ ํ์ํ๋ ๋ฆฌํฐ๋ด)์ = ์ฐ์ฐ์(์: "f'{expr=}'")์ ๋ํ ์ง์์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ ์ฌ์ด ๋๋ฒ๊น
์ ์ํด ํํ์์ ํ
์คํธ๋ก ๋ณํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด:
>>>> ์ฌ์ฉ์ = 'eric_idle'
>>>> member_since = ๋ ์ง(1975, 7, 31)
>>> f'{user=} {member_since=}'
"user='eric_idle' member_since=datetime.date(1975, 7, 31)" - ํํ "
๊ณ์ ยป ๋ธ๋ก ๋ด์์ ์ฌ์ฉ ๊ฐ๋ฅ์ต์ข ์ ์ผ๋ก ; - ์๋ก์ด ๋ชจ๋์ด ์ถ๊ฐ๋์์ต๋๋ค
๋ค์ค ์ฒ๋ฆฌ.shared_memory , ๋ค์ค ํ๋ก์ธ์ค ๊ตฌ์ฑ์์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์ธ๊ทธ๋จผํธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. - Windows ํ๋ซํผ์์ asyncio ๊ตฌํ์ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋๋ก ์ด๋๋์์ต๋๋ค.
ProactorEventLoop ; - ์๋ก์ด ๊ฐ์ฒด ์ฝ๋ ์บ์ฑ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ LOAD_GLOBAL ๋ช ๋ น์ ์ฑ๋ฅ์ด ์ฝ 40% ํฅ์๋์์ต๋๋ค.
์ถ์ฒ : opennet.ru