{"id":234,"date":"2026-05-15T05:45:28","date_gmt":"2026-05-14T21:45:28","guid":{"rendered":"https:\/\/junai.ai\/blog\/python-typing-18\/"},"modified":"2026-05-17T07:31:25","modified_gmt":"2026-05-16T23:31:25","slug":"python-typing-18","status":"publish","type":"post","link":"https:\/\/junai.ai\/blog\/python-typing-18\/","title":{"rendered":"\ud30c\uc774\uc36c \ud0c0\uc785 \ud78c\ud2b8 \u2014 list[int]\u00b7| \u00b7-&gt; \ubc18\ud658 (18\ud3b8)"},"content":{"rendered":"\n<!-- WordPress REST API \ubc1c\ud589\uc6a9 HTML (\uc790\ub3d9 \uc0dd\uc131) -->\n<!-- WP-FEATURED-MEDIA-ID: 597 -->\n<div style=\"max-width:800px;margin:0 auto;\">\n<style>\n\/* js-textbook \u2014 PostgreSQL \uad50\uc7ac \ub3d9\uc77c \ud314\ub808\ud2b8 *\/\n:root {\n  --color-primary: #336791;\n  --color-accent: #60a5fa;\n  --color-bg: #fafafa;\n  --color-bg-card: #ffffff;\n  --color-text: #1e293b;\n  --color-text-muted: #64748b;\n  --hero-start: #0f172a;\n  --hero-end: #336791;\n  --font-body: -apple-system, BlinkMacSystemFont, 'Apple SD Gothic Neo', 'Noto Sans KR', sans-serif;\n  --size-body: 17px;\n  --line-height: 1.75;\n}\n* { box-sizing: border-box; }\n.container { max-width: 760px; margin: 0 auto; padding: 0 22px 80px; }\n.hero { background: linear-gradient(135deg, var(--hero-start) 0%, var(--hero-end) 100%); color: #fff; padding: 72px 22px 56px; text-align: center; }\n.hero .badge { display: inline-block; background: rgba(96,165,250,0.18); color: var(--color-accent); padding: 6px 14px; border-radius: 999px; font-size: 13px; font-weight: 600; letter-spacing: 0.5px; margin-bottom: 18px; }\n.hero h1 { margin: 0 0 18px; font-size: 36px; line-height: 1.3; letter-spacing: -0.3px; }\n.hero p.sub { margin: 0 auto; max-width: 580px; font-size: 17px; color: #bfdbfe; }\n.hero img { width: 100%; max-width: 720px; height: auto; margin: 36px auto 0; display: block; border-radius: 10px; box-shadow: 0 8px 32px rgba(0,0,0,0.3); }\n.meta { display: flex; gap: 14px; justify-content: center; margin-top: 20px; font-size: 13px; color: #93c5fd; flex-wrap: wrap; }\n.meta span::before { content: \"\u00b7\"; margin-right: 14px; color: #1e3a8a; }\n.meta span:first-child::before { content: \"\"; margin: 0; }\narticle { background: var(--color-bg-card); margin-top: -36px; padding: 44px 28px; border-radius: 14px; box-shadow: 0 2px 18px rgba(0,0,0,0.06); }\narticle p { margin: 0 0 18px; }\nh2 { font-size: 28px; line-height: 1.35; letter-spacing: -0.3px; margin: 48px 0 18px; padding-bottom: 10px; border-bottom: 2px solid var(--color-primary); }\nh2:first-of-type { margin-top: 8px; }\nh3 { font-size: 21px; line-height: 1.4; margin: 30px 0 12px; color: var(--color-primary); }\ncode { background: #f1f5f9; color: #0f172a; padding: 2px 6px; border-radius: 4px; font-family: 'SFMono-Regular', Menlo, Consolas, monospace; font-size: 0.92em; }\npre { background: #0f172a; color: #e2e8f0; padding: 18px 20px; border-radius: 10px; overflow-x: auto; font-size: 14.5px; line-height: 1.65; margin: 18px 0; }\npre code { background: transparent; color: inherit; padding: 0; }\nul, ol { margin: 0 0 18px; padding-left: 24px; }\nli { margin-bottom: 8px; }\nstrong { color: #0f172a; }\n.databox { background: #eff6ff; border-left: 4px solid var(--color-primary); padding: 18px 20px; border-radius: 6px; margin: 22px 0; }\n.databox p { margin: 0 0 8px; }\n.databox p:last-child { margin: 0; }\n.databox strong { color: var(--color-primary); }\n.warnbox { background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%); border-left: 4px solid #d97706; padding: 18px 20px; border-radius: 6px; margin: 22px 0; }\n.warnbox strong { color: #92400e; }\n.tablewrap { overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 22px 0; }\ntable { width: 100%; border-collapse: collapse; font-size: 15px; background: var(--color-bg-card); }\nth, td { padding: 11px 12px; text-align: left; border-bottom: 1px solid #e2e8f0; vertical-align: top; }\nth { background: #f1f5f9; font-weight: 700; color: #0f172a; }\ntd:first-child, th:first-child { font-weight: 700; }\n.cta { background: linear-gradient(135deg, #336791 0%, #60a5fa 100%); color: #fff; padding: 30px 24px; border-radius: 12px; margin-top: 44px; text-align: center; }\n.cta h3 { color: #fff; margin: 0 0 10px; }\n.cta p { margin: 0; color: #dbeafe; }\n.series-nav { background: #eff6ff; padding: 18px 22px; border-radius: 10px; margin-top: 24px; font-size: 14.5px; color: var(--color-text-muted); }\n.series-nav strong { color: var(--color-primary); }\n@media (max-width: 480px) {\n  .hero { padding: 52px 18px 44px; }\n  .hero h1 { font-size: 26px; }\n  .hero p.sub { font-size: 15px; }\n  article { padding: 28px 18px; border-radius: 10px; }\n  h2 { font-size: 22px; }\n  h3 { font-size: 18px; }\npre { font-size: 13px; padding: 14px 16px; }\n}\n@media (max-width: 560px) {\n  .tablewrap table, .tablewrap thead, .tablewrap tbody, .tablewrap tr, .tablewrap th, .tablewrap td { display: block; width: auto; }\n  .tablewrap thead { display: none; }\n  .tablewrap tr { margin: 0 0 14px; border: 1px solid #e2e8f0; border-radius: 10px; overflow: hidden; }\n  .tablewrap td { border: none; border-bottom: 1px solid #f1f5f9; padding: 9px 14px; }\n  .tablewrap td:first-child { background: #eff6ff; font-weight: 800; font-size: 15.5px; }\n  .tablewrap td:last-child { border-bottom: none; }\n  .tablewrap td[data-label]::before { content: attr(data-label) \" \u2014 \"; font-weight: 700; color: var(--color-primary); }\n}\n<\/style>\n<header class=\"hero\">\n  <span class=\"badge\">\ud30c\uc774\uc36c \uad50\uc7ac \u00b7 18\ud3b8 \/ 27\ud3b8<\/span>\n  <h1>\ud30c\uc774\uc36c \ud0c0\uc785 \ud78c\ud2b8<\/h1>\n  <p class=\"sub\">\ub3d9\uc801 \ud0c0\uc785\uc758 \ubd80\ub4dc\ub7ec\uc6b4 \uc548\uc804\ub9dd. IDE \uc790\ub3d9\uc644\uc131 + \uc0ac\uc804 \ubc84\uadf8 \uc7a1\uae30.<\/p>\n  <div class=\"meta\"><span>\uc911\uae09<\/span><span>\uc77d\ub294 \uc2dc\uac04 6\ubd84<\/span><span>2026-05-13<\/span><\/div>\n  <img decoding=\"async\" src=\"https:\/\/junai.ai\/blog\/wp-content\/uploads\/2026\/05\/hero-216.jpg\" alt=\"def avg(nums: list[int]) -> float \uac19\uc740 \ud0c0\uc785 \ud78c\ud2b8 \ucf54\ub4dc \ud654\uba74&#8221;>\n<\/header>\n\n<div class=\"container\">\n<article>\n\n<p>3\ud3b8\uc5d0\uc11c \ud30c\uc774\uc36c\uc774 \ub3d9\uc801 \ud0c0\uc785\uc774\ub77c \ud588\uc8e0. <code>age = 30<\/code> \ud55c \uc904\uc5d0\uc11c \uc790\ub8cc\ud615\uc774 \uc790\ub3d9\uc73c\ub85c \uacb0\uc815. \uc790\uc720\ub86d\uc9c0\ub9cc \ud568\uc815\ub3c4 \uc788\uc5b4\uc694 \u2014 <em>&#8220;\uc774 \ud568\uc218\uc758 <code>data<\/code> \uc778\uc790\ub294 \ub9ac\uc2a4\ud2b8\uc77c\uae4c \ub515\uc154\ub108\ub9ac\uc77c\uae4c&#8221;<\/em> \uac00 \ud55c \ub2ec \ub4a4 \ubcf8\uc778 \ucf54\ub4dc\ub97c \ubd10\ub3c4 \uc548 \ubcf4\uc785\ub2c8\ub2e4. \ub3d9\ub8cc \ucf54\ub4dc\ub294 \ub354\ud574\uc694. \ud574\ubc95\uc740 <strong>\ud0c0\uc785 \ud78c\ud2b8<\/strong>(type hint, 3.5+) \u2014 \uac15\uc81c\ub294 \uc548 \ud558\uc9c0\ub9cc <em>&#8220;\uc774 \uc790\ub9ac\uc5d0\ub294 int \uac00 \uc635\ub2c8\ub2e4&#8221;<\/em> \ub77c\uace0 \uc801\ub294 \uc57d\uc18d\uc785\ub2c8\ub2e4.<\/p>\n\n<p>18\ud3b8\uc744 \ub9c8\uce58\uba74 \u2460 \uae30\ubcf8 \ubb38\ubc95(<code>x: int<\/code>\u00b7<code>-&gt; str<\/code>) \u2461 \uceec\ub809\uc158(<code>list[int]\u00b7dict[str, int]<\/code>) \u2462 <code>X | None<\/code> \ud569\uc9d1\ud569 \u2463 <code>mypy<\/code> \uc815\uc801 \uac80\uc0ac \u2464 VS Code \uc790\ub3d9\uc644\uc131 \ud65c\uc6a9 \u2014 5\uac00\uc9c0\ub97c \uc190\uc5d0 \uc775\ud799\ub2c8\ub2e4.<\/p>\n\n<h2>\uae30\ubcf8 \ubb38\ubc95 \u2014 \ubcc0\uc218\u00b7\uc778\uc790\u00b7\ubc18\ud658<\/h2>\n\n<pre><code># \ubcc0\uc218\nage: int = 30\nname: str = \"\uc900\uc131\"\nactive: bool = True\n\n# \ud568\uc218 \uc778\uc790\uc640 \ubc18\ud658\ndef greet(name: str, count: int = 1) -&gt; str:\n    return f\"\uc548\ub155, {name}\" * count\n\n# \ud074\ub798\uc2a4 \uc18d\uc131 (dataclass \uc640 \uc5f0\uacb0)\nclass User:\n    name: str\n    age: int = 30<\/code><\/pre>\n\n<p>\ud615\ud0dc: <code>\uc774\ub984: \ud0c0\uc785<\/code> \ub610\ub294 \ud568\uc218\uc5d0\uc11c <code>\uc774\ub984: \ud0c0\uc785 = \uae30\ubcf8\uac12<\/code>. \ubc18\ud658\uc740 <code>-&gt; \ud0c0\uc785<\/code>. <strong>\uc2e4\ud589\uc5d0\ub294 \uc601\ud5a5 0<\/strong> \u2014 \uc5b4\uae0b\ub09c \ud0c0\uc785\uc744 \ub118\uaca8\ub3c4 \ud30c\uc774\uc36c\uc740 \uadf8\ub0e5 \ub3d9\uc791\ud569\ub2c8\ub2e4(\uac80\uc0ac\ud558\uc9c0 \uc54a\uc74c). \ud78c\ud2b8\uc77c \ubfd0.<\/p>\n\n<div class=\"databox\">\n  <p><strong>\ud83d\udccc \ud0c0\uc785 \ud78c\ud2b8\ub294 \uac15\uc81c\uac00 \uc544\ub2cc \ubb38\uc11c<\/strong><\/p>\n  <p><code>greet(name=123)<\/code> \ub97c \ud638\ucd9c\ud574\ub3c4 \ud30c\uc774\uc36c\uc740 \uc548 \ub9c9\uc544\uc694. \uadf8\ub7ec\uba74 \uc65c \uc801\ub098? \u2460 IDE \uc790\ub3d9\uc644\uc131\u00b7\uacbd\uace0\uac00 \uc815\ud655\ud574\uc9d0 \u2461 \ub3d9\ub8cc\uac00 \ud568\uc218 \uc2dc\uadf8\ub2c8\ucc98\ub9cc \ubcf4\uace0 \ubb34\uc5c7\uc744 \ub118\uae38\uc9c0 \uc555 \u2462 mypy \uac19\uc740 \ubcc4\ub3c4 \ub3c4\uad6c\uac00 \uc0ac\uc804\uc5d0 \ubc84\uadf8 \ud0d0\uc9c0. <em>&#8220;\uc2e4\ud589 \uc2dc\uac04 \ud0c0\uc785 \uac80\uc0ac&#8221;<\/em> \uac00 \ud544\uc694\ud558\uba74 <code>pydantic<\/code> \uac19\uc740 \ub77c\uc774\ube0c\ub7ec\ub9ac.<\/p>\n<\/div>\n\n<h2>\uceec\ub809\uc158 \ud0c0\uc785 \u2014 list[int]\u00b7dict[str, Any]<\/h2>\n\n<pre><code>def avg(nums: list[int]) -&gt; float:\n    return sum(nums) \/ len(nums)\n\ndef header_map(rows: list[dict[str, str]]) -&gt; dict[str, int]:\n    return {r[\"name\"]: int(r[\"score\"]) for r in rows}\n\n# \ud29c\ud50c \u2014 \uc704\uce58\ubcc4 \ud0c0\uc785 \uc815\ud655\ud788\ndef stats(nums: list[float]) -&gt; tuple[float, float, float]:\n    return min(nums), max(nums), sum(nums) \/ len(nums)<\/code><\/pre>\n\n<p>3.9 \uc774\uc804\uc5d0\ub294 <code>from typing import List, Dict, Tuple<\/code> \uc744 import \ud574 \ub300\ubb38\uc790\ub85c \uc801\uc5b4\uc57c \ud588\uc9c0\ub9cc(<code>List[int]<\/code>), <strong>3.9+ \ubd80\ud130 \ub0b4\uc7a5 \uc18c\ubb38\uc790 \uadf8\ub300\ub85c<\/strong>. \ub354 \uc9e7\uace0 \uc790\uc5f0\uc2a4\ub7fd\uc2b5\ub2c8\ub2e4.<\/p>\n\n<h2>X | None\u00b7Union \u2014 \uc5ec\ub7ec \ud0c0\uc785 \ud5c8\uc6a9<\/h2>\n\n<p>&#8220;\ubb38\uc790\uc5f4\uc774\uac70\ub098 None&#8221; \uac19\uc774 \uc5ec\ub7ec \ud0c0\uc785\uc744 \ud5c8\uc6a9\ud560 \ub54c <code>|<\/code> \uc5f0\uc0b0\uc790(3.10+).<\/p>\n\n<pre><code>def find(name: str) -&gt; User | None:\n    for u in users:\n        if u.name == name:\n            return u\n    return None         # \ubabb \ucc3e\uc73c\uba74 None\n\n# \uc61b \ubc29\uc2dd\nfrom typing import Optional\ndef find(name: str) -&gt; Optional[User]: ...\n# == User | None\n\n# \uc5ec\ub7ec \ud0c0\uc785 (3.10+)\ndef parse(value: int | str | float) -&gt; float:\n    return float(value)<\/code><\/pre>\n\n<p><code>None<\/code> \ub3c4 \ud0c0\uc785\uc774\ub77c \ud569\uc9d1\ud569\uc5d0 \uadf8\ub300\ub85c \uc801\uc2b5\ub2c8\ub2e4. <code>Optional[User]<\/code> \uc640 <code>User | None<\/code> \uc740 \uac19\uc740 \uc758\ubbf8.<\/p>\n\n<h2>mypy \uc815\uc801 \uac80\uc0ac \u2014 \uc0ac\uc804\uc5d0 \ubc84\uadf8 \uc7a1\uae30<\/h2>\n\n<pre><code># \ud130\ubbf8\ub110\uc5d0\uc11c\n$ pip install mypy\n$ mypy myapp.py\n\nmyapp.py:14: error: Argument 1 to \"avg\" has incompatible type\n  \"list[str]\"; expected \"list[int]\"  [arg-type]\nFound 1 error in 1 file<\/code><\/pre>\n\n<p>mypy \ub294 \ucf54\ub4dc\ub97c <strong>\uc2e4\ud589 \uc5c6\uc774<\/strong> \uc77d\uc5b4 \ud0c0\uc785 \uc704\ubc18\uc744 \ucc3e\uc544\ub0c5\ub2c8\ub2e4. 12\ud3b8\uc758 try\/except \uc640\ub294 \ub2e4\ub978 \uc548\uc804\ub9dd \u2014 try \uac00 \ub7f0\ud0c0\uc784\uc5d0 \uc7a1\ub294 \uac70\ub77c\uba74 mypy \ub294 \uc791\uc131 \uc2dc \uc7a1\ub294 \uac70\uc608\uc694. \ub2e8\uc704 \ud14c\uc2a4\ud2b8\uc640 \uc9dd\uc9c0\uc5b4 \uc2e4\ubb34 \ucf54\ub4dc \ud488\uc9c8\uc744 \uc62c\ub9bd\ub2c8\ub2e4.<\/p>\n\n<div class=\"warnbox\">\n  <strong>\u26a0\ufe0f \ud0c0\uc785 \ud78c\ud2b8\ub294 \uc810\uc9c4\uc801\uc73c\ub85c.<\/strong> \ubaa8\ub4e0 \ud568\uc218\uc5d0 \ub2e4 \uc801\uc73c\ub824 \ub4e4\uba74 \ud55c \uc8fc \uc548\uc5d0 \uc9c0\uccd0\uc694. <strong>\uc678\ubd80 \ud638\ucd9c\ub418\ub294 \ud568\uc218\u00b7\ubcf5\uc7a1\ud55c \ub370\uc774\ud130 \ud750\ub984\u00b7\ub77c\uc774\ube0c\ub7ec\ub9ac \uc778\ud130\ud398\uc774\uc2a4<\/strong>\ubd80\ud130. \ub0b4\ubd80 \uc9e7\uc740 \ud568\uc218\ub294 \uc548 \uc801\uc5b4\ub3c4 OK. <code>--strict<\/code> \ubaa8\ub4dc\ub294 \uc2e0\uaddc \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c\ub098 \uad8c\uc7a5.<\/p>\n<\/div>\n\n<h2>VS Code \uc790\ub3d9\uc644\uc131 + \ub9c8\ubb34\ub9ac<\/h2>\n\n<p>VS Code \uc758 Pylance(\ud30c\uc774\uc36c \ud655\uc7a5)\ub294 \ud0c0\uc785 \ud78c\ud2b8\ub97c \uc77d\uace0 <strong>\uc815\ud655\ud55c \uc790\ub3d9\uc644\uc131<\/strong>\uc744 \uc90d\ub2c8\ub2e4. <code>users: list[User]<\/code> \ub77c\uace0 \uc801\uc5b4\ub450\uba74 <code>users[0].<\/code> \uae4c\uc9c0 \uce5c \uc21c\uac04 User \uc758 \uc18d\uc131\u00b7\uba54\uc11c\ub4dc\uac00 \ub2e4 \ub5a0\uc694. \uc548 \uc801\uc5c8\uc73c\uba74 <code>users[0]<\/code> \uc758 \uc790\ub8cc\ud615\uc744 \ucd94\ub860 \ubabb \ud574 \uc790\ub3d9\uc644\uc131\uc774 \ud750\ub824\uc9d1\ub2c8\ub2e4.<\/p>\n\n<pre><code># \uc88b\uc740 \ud568\uc218 \uc2dc\uadf8\ub2c8\ucc98 \u2014 IDE \uac00 \ubaa8\ub4e0 \uac78 \uc54c\ub824\uc90c\ndef filter_users(\n    users: list[User],\n    min_age: int = 0,\n    active_only: bool = True,\n) -&gt; list[User]:\n    \"\"\"\uc870\uac74\uc5d0 \ub9de\ub294 \uc0ac\uc6a9\uc790\ub9cc \ubc18\ud658.\"\"\"\n    return [u for u in users if u.age &gt;= min_age and (not active_only or u.active)]<\/code><\/pre>\n\n<p>\uc774 \ud55c \ud568\uc218\ub9cc \ubd10\ub3c4 \uc785\ub825\u00b7\ucd9c\ub825\u00b7\uae30\ubcf8\uac12\uc774 \uba85\ud655. \ub3d9\ub8cc\uac00 docstring \uc548 \uc77d\uc5b4\ub3c4 90% \uc0ac\uc6a9 \uac00\ub2a5\ud569\ub2c8\ub2e4.<\/p>\n\n<p>\ub2e4\uc74c \ubbf8\uc158 \u2014 REPL\/\ud30c\uc77c\uc5d0\uc11c: \u2460 <code>def divide(a: float, b: float) -&gt; float | None<\/code> \u2014 0 \uc73c\ub85c \ub098\ub204\uba74 None \u2461 14\ud3b8 Student \ud074\ub798\uc2a4\uc5d0 \ubaa8\ub4e0 \uc18d\uc131 \ud0c0\uc785 \ud78c\ud2b8 \ucd94\uac00 \u2462 <code>mypy<\/code> \uae54\uace0 \ubcf8\uc778 \ucf54\ub4dc\uc5d0 \ub3cc\ub824\ubcf4\uae30.<\/p>\n\n<div class=\"cta\">\n  <h3>\ub2e4\uc74c \ud3b8 \ubbf8\ub9ac\ubcf4\uae30<\/h3>\n  <p>19\ud3b8 \u2014 &#8220;collections\u00b7itertools&#8221;: \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac \uace0\uae09. <code>Counter<\/code>\u00b7<code>defaultdict<\/code>\u00b7<code>deque<\/code>\u00b7<code>chain<\/code>\u00b7<code>groupby<\/code> \uac19\uc740 \uc2e4\ubb34 \ub3c4\uad6c.<\/p>\n<\/div>\n\n<div class=\"series-nav\">\n  <strong>\ud83d\udcda 27\ud3b8 \ud30c\uc774\uc36c \uad50\uc7ac \uc2dc\ub9ac\uc988 \u2014 18\/27\ud3b8<\/strong><br>\n  \u2190 17\ud3b8 &#8220;\ub370\ucf54\ub808\uc774\ud130&#8221; \u00b7 \ub2e4\uc74c: 19\ud3b8 &#8220;collections\u00b7itertools&#8221;\n<\/div>\n\n<\/article>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\ud0c0\uc785 \ud78c\ud2b8\u00b7list[int]\u00b7| \ud569\uc9d1\ud569\u00b7mypy\u00b7VS Code \uae4c\uc9c0. 27\ud3b8 \uad50\uc7ac 18\ud3b8.<\/p>\n","protected":false},"author":1,"featured_media":597,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[],"class_list":["post-234","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/posts\/234","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/comments?post=234"}],"version-history":[{"count":1,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/posts\/234\/revisions"}],"predecessor-version":[{"id":624,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/posts\/234\/revisions\/624"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/media\/597"}],"wp:attachment":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/media?parent=234"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/categories?post=234"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/tags?post=234"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}