{"id":119691,"date":"2026-10-30T06:48:25","date_gmt":"2026-10-29T22:48:25","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/119691.html"},"modified":"2026-10-30T06:48:25","modified_gmt":"2026-10-29T22:48:25","slug":"java-%e8%bd%ac-python-%e5%90%8e%e7%ab%af-01-%e7%8e%b0%e4%bb%a3%e5%b7%a5%e7%a8%8b%e5%ba%95%e5%ba%a7%e4%b8%8e%e6%a0%b8%e5%bf%83%e8%af%ad%e6%b3%95%e9%81%bf%e5%9d%91","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/119691.html","title":{"rendered":"Java \u8f6c Python \u540e\u7aef 01: \u73b0\u4ee3\u5de5\u7a0b\u5e95\u5ea7\u4e0e\u6838\u5fc3\u8bed\u6cd5\u907f\u5751"},"content":{"rendered":"<p>        \/* MD \/ \u5bcc\u6587\u672c\u4e2d\u7684 .toc\uff08\u542b\u535a\u5ba2\u56ed\u642c\u5bb6\u7b49\u5d4c\u5957\u7ed3\u6784\uff09\uff1b.toc-box \u5728\u4fa7\u680f\uff0c\u4e0d\u53d7\u5f71\u54cd *\/<br \/>\n        #content_views .toc,<br \/>\n        \/* \u7f16\u8f91\u5668\u5e38\u5728\u76ee\u5f55\u524d\u540e\u63d2\u5165\u7a7a p\uff08:empty \u4ecd\u5360 20px\uff09\uff0c\u4e00\u5e76\u53bb\u6389\u907f\u514d\u9876\u7a7a\u9699 *\/<br \/>\n        #content_views.markdown_views &gt; p:empty:has(+ .toc),<br \/>\n        #content_views.markdown_views &gt; .toc + p:empty,<br \/>\n        \/* \u5bcc\u6587\u672c\u65e7\u7248\u76ee\u5f55\u6807\u8bb0 *\/<br \/>\n        #content_views.htmledit_views #main-toc,<br \/>\n        #content_views.htmledit_views #hr-toc,<br \/>\n        #content_views.htmledit_views p[id*=\\&#8221;-toc\\&#8221;] {<br \/>\n          display: none !important;<br \/>\n        }<br \/>\n        \/* \u76ee\u5f55\u53bb\u6389\u540e\uff0c\u7d27\u8ddf\u7684\u9996\u4e2a\u6807\u9898\u4e0d\u518d\u591a\u51fa\u4e00\u5757\u4e0a\u8fb9\u8ddd *\/<br \/>\n        #content_views.markdown_views &gt; .toc + h1,<br \/>\n        #content_views.markdown_views &gt; .toc + h2,<br \/>\n        #content_views.markdown_views &gt; .toc + h3,<br \/>\n        #content_views.markdown_views &gt; .toc + h4,<br \/>\n        #content_views.markdown_views &gt; .toc + p:empty + h1,<br \/>\n        #content_views.markdown_views &gt; .toc + p:empty + h2,<br \/>\n        #content_views.markdown_views &gt; .toc + p:empty + h3,<br \/>\n        #content_views.markdown_views &gt; .toc + p:empty + h4 {<br \/>\n          margin-top: 0 !important;<br \/>\n        }<\/p>\n<h2>\u7b2c 1 \u7ae0 \u5fc3\u667a\u8f6c\u53d8\u4e0e\u73b0\u4ee3\u5de5\u7a0b\u5e95\u5ea7<\/h2>\n<h3>1.1 \u52a8\u6001\u7c7b\u578b &#043; \u7c7b\u578b\u6ce8\u89e3<\/h3>\n<p>\u6700\u672c\u8d28\u7684\u533a\u522b&#xff1a;Java \u662f\u9759\u6001\u5f3a\u7c7b\u578b&#xff0c;Python \u662f\u52a8\u6001\u7c7b\u578b &#043; \u53ef\u9009\u7c7b\u578b\u6ce8\u89e3\u3002<\/p>\n<p><span class=\"token comment\"># Python&#xff1a;\u53d8\u91cf\u53ea\u662f&#034;\u540d\u5b57\u8d34\u5728\u5bf9\u8c61\u4e0a&#034;&#xff0c;\u53ef\u4ee5\u968f\u65f6\u6362\u7c7b\u578b&#xff08;\u4e0d\u63a8\u8350&#xff0c;\u4f46\u5408\u6cd5&#xff09;<\/span><br \/>\nx <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">42<\/span>          <span class=\"token comment\"># x \u662f int<\/span><br \/>\nx <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;hello&#034;<\/span>     <span class=\"token comment\"># \u73b0\u5728\u662f str&#xff0c;\u8fd0\u884c\u65f6\u4e0d\u62a5\u9519<\/span><\/p>\n<p><span class=\"token comment\">\/\/ Java&#xff1a;\u7c7b\u578b\u5728\u7f16\u8bd1\u671f\u7ed1\u5b9a&#xff0c;\u6362\u4e86\u76f4\u63a5\u7f16\u8bd1\u5931\u8d25<\/span><br \/>\n<span class=\"token keyword\">int<\/span> x <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">42<\/span><span class=\"token punctuation\">;<\/span><br \/>\nx <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;hello&#034;<\/span><span class=\"token punctuation\">;<\/span>    <span class=\"token comment\">\/\/ \u7f16\u8bd1\u9519\u8bef<\/span><\/p>\n<p>\u5173\u952e\u8ba4\u77e5&#xff1a;<\/p>\n<ul>\n<li>Python 3.5&#043; \u652f\u6301\u7c7b\u578b\u6ce8\u89e3&#xff08;type hints&#xff09;&#xff0c;\u4f46\u5b83\u53ea\u662f&#034;\u63d0\u793a&#034;&#xff1a;\n<ul>\n<li>IDE \u548c\u9759\u6001\u68c0\u67e5\u5668&#xff08;mypy \/ pyright&#xff09;\u5728\u9759\u6001\u9636\u6bb5\u636e\u6b64\u8fdb\u884c\u7c7b\u578b\u63a8\u5bfc\u4e0e\u9519\u8bef\u62e6\u622a&#xff1b;<\/li>\n<li>\u8fd0\u884c\u65f6\u89e3\u91ca\u5668\u5b8c\u5168\u4e0d\u6821\u9a8c\u2014\u2014\u7ed9\u6ce8\u89e3\u4e3a int \u7684\u53c2\u6570\u4f20\u5b57\u7b26\u4e32&#xff0c;\u89e3\u91ca\u5668\u4e0d\u4f1a\u62a5\u9519\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\u73b0\u4ee3 Python \u9879\u76ee&#xff08;\u5c24\u5176 agent \u6846\u67b6&#xff1a;pydantic\u3001FastAPI\u3001LangGraph&#xff09;\u9ed8\u8ba4\u5168\u91cf\u4f7f\u7528\u7c7b\u578b\u6ce8\u89e3&#xff0c;\u5efa\u8bae\u5728\u6240\u6709\u51fd\u6570\u7b7e\u540d\u4e2d\u89c4\u8303\u6807\u6ce8\u7c7b\u578b\u6ce8\u89e3\u3002<\/li>\n<li>\u4f8b\u5916&#xff1a;pydantic \u6a21\u578b\u548c FastAPI \u4f1a\u5728\u8fd0\u884c\u65f6\u771f\u6b63\u8bfb\u53d6\u5e76\u6821\u9a8c\u6ce8\u89e3\u2014\u2014\u8fd9\u662f\u6846\u67b6\u884c\u4e3a&#xff0c;\u4e0d\u662f\u8bed\u8a00\u884c\u4e3a\u3002<\/li>\n<\/ul>\n<p><span class=\"token comment\"># &#039;: int&#039; \u4e0e &#039;-&gt; int&#039; \u5373\u7c7b\u578b\u6ce8\u89e3&#xff0c;\u7b49\u4ef7 Java \u5f62\u53c2\/\u8fd4\u56de\u503c\u7c7b\u578b\u58f0\u660e&#xff08;\u540e\u7f6e\u4e14\u8fd0\u884c\u65f6\u4e0d\u5f3a\u5236\u6821\u9a8c&#xff09;<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">add<\/span><span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">,<\/span> b<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> a <span class=\"token operator\">&#043;<\/span> b<\/p>\n<p>add<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;a&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;b&#034;<\/span><span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># \u8fd4\u56de &#034;ab&#034;&#xff1a;\u7c7b\u578b\u4e0d\u7b26\u4f46\u8fd0\u884c\u4e0d\u62a5\u9519&#xff0c;IDE \/ pyright \u4f1a\u6807\u7ea2<\/span><br \/>\nadd<span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;hello&#034;<\/span><span class=\"token punctuation\">)<\/span>     <span class=\"token comment\"># \u62a5\u9519 TypeError&#xff1a;\u5f3a\u7c7b\u578b\u8bed\u8a00\u4e0d\u652f\u6301 int &#043; str&#xff08;\u62a5\u9519\u7531\u52a0\u6cd5\u8fd0\u7b97\u89e6\u53d1&#xff0c;\u975e\u6ce8\u89e3\u62e6\u622a&#xff09;<\/span><\/p>\n<h3>1.2 \u4e00\u5207\u7686\u5bf9\u8c61\u3001\u6ca1\u6709 new\u3001\u7f29\u8fdb\u5373\u8bed\u6cd5\u5757<\/h3>\n<p><span class=\"token comment\"># \u51fd\u6570\u3001\u7c7b\u3001\u6a21\u5757\u672c\u8eab\u90fd\u662f\u5bf9\u8c61&#xff0c;\u53ef\u4ee5\u8d4b\u503c\u7ed9\u53d8\u91cf\u3001\u5f53\u53c2\u6570\u4f20&#xff08;Java 8 \u4e4b\u524d\u505a\u4e0d\u5230&#xff09;<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">greet<\/span><span class=\"token punctuation\">(<\/span>name<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;hello, <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><\/p>\n<p>f <span class=\"token operator\">&#061;<\/span> greet           <span class=\"token comment\"># \u51fd\u6570\u8d4b\u503c\u7ed9\u53d8\u91cf<\/span><br \/>\nf<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;world&#034;<\/span><span class=\"token punctuation\">)<\/span>          <span class=\"token comment\"># &#034;hello, world&#034;<\/span><\/p>\n<p><span class=\"token comment\"># \u6ca1\u6709 new<\/span><br \/>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Agent<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__init__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> name<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>   <span class=\"token comment\"># \u6784\u9020\u903b\u8f91\u5199\u5728 __init__<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>name <span class=\"token operator\">&#061;<\/span> name<\/p>\n<p>a <span class=\"token operator\">&#061;<\/span> Agent<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;bot&#034;<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># \u76f4\u63a5\u7c7b\u540d\u8c03\u7528&#xff0c;\u6ca1\u6709 new \u5173\u952e\u5b57<\/span><\/p>\n<p>\u7f29\u8fdb\u5373\u8bed\u6cd5\u5757\u2014\u2014Python \u7528\u7f29\u8fdb\u4ee3\u66ff {}\u3002\u6807\u51c6\u662f 4 \u4e2a\u7a7a\u683c&#xff0c;\u7edd\u4e0d\u7528 Tab&#xff08;ruff\/formatter \u4f1a\u5f3a\u5236\u7edf\u4e00&#xff09;\u3002Java \u7a0b\u5e8f\u5458\u6700\u9700\u8981\u9632\u7684\u662f\u6df7\u7528\u7a7a\u683c\u6570\u5bfc\u81f4\u903b\u8f91\u9519\u8bef&#xff1a;<\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">check<\/span><span class=\"token punctuation\">(<\/span>x<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> x <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;positive&#034;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;non-positive&#034;<\/span>    <span class=\"token comment\"># \u7f29\u8fdb\u5c42\u7ea7\u51b3\u5b9a\u5b83\u5c5e\u4e8e if \u8fd8\u662f\u51fd\u6570<\/span><\/p>\n<h3>1.3 \u9879\u76ee\u7ed3\u6784\u5bf9\u7167<\/h3>\n<p>Maven \u9879\u76ee                          Python \u9879\u76ee&#xff08;\u73b0\u4ee3 src \u5e03\u5c40&#xff09;<br \/>\n\u251c\u2500\u2500 pom.xml                        \u251c\u2500\u2500 pyproject.toml        \u2190 \u9879\u76ee\u5143\u6570\u636e&#043;\u4f9d\u8d56\u58f0\u660e<br \/>\n\u251c\u2500\u2500 src\/main\/java\/com\/foo\/         \u251c\u2500\u2500 src\/foo\/<br \/>\n\u2502   \u251c\u2500\u2500 Main.java                  \u2502   \u251c\u2500\u2500 __init__.py       \u2190 \u6807\u8bb0\u8fd9\u662f\u5305<br \/>\n\u2502   \u251c\u2500\u2500 service\/                   \u2502   \u251c\u2500\u2500 service\/<br \/>\n\u2502   \u2502   \u2514\u2500\u2500 UserService.java       \u2502   \u2502   \u251c\u2500\u2500 __init__.py<br \/>\n\u2502   \u2502                              \u2502   \u2502   \u2514\u2500\u2500 user_service.py  \u2190 \u4e00\u4e2a\u6587\u4ef6&#061;\u4e00\u4e2a\u6a21\u5757<br \/>\n\u2502   \u2514\u2500\u2500 model\/                     \u2502   \u2514\u2500\u2500 model\/<br \/>\n\u2502       \u2514\u2500\u2500 User.java              \u2502       \u2514\u2500\u2500 user.py<br \/>\n\u2514\u2500\u2500 src\/test\/java\/                 \u2514\u2500\u2500 tests\/                \u2190 \u6d4b\u8bd5\u901a\u5e38\u5728 src \u5916<br \/>\n    \u2514\u2500\u2500 UserServiceTest.java           \u2514\u2500\u2500 test_user_service.py<\/p>\n<p>\u5bf9\u5e94\u5173\u7cfb&#xff1a;<\/p>\n<table>\n<tr>Maven \u6982\u5ff5Python \u5bf9\u5e94<\/tr>\n<tbody>\n<tr>\n<td>pom.xml \u4f9d\u8d56\u58f0\u660e<\/td>\n<td>pyproject.toml \u7684 [project] dependencies<\/td>\n<\/tr>\n<tr>\n<td>groupId:artifactId<\/td>\n<td>\u5305\u540d&#xff08;PyPI \u4e0a\u7684\u540d\u5b57&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>mvn install \u672c\u5730\u4ed3\u5e93<\/td>\n<td>uv\/pip \u5b89\u88c5\u5230\u865a\u62df\u73af\u5883<\/td>\n<\/tr>\n<tr>\n<td>src\/main\/java<\/td>\n<td>src\/&lt;\u5305\u540d&gt;\/<\/td>\n<\/tr>\n<tr>\n<td>src\/test\/java<\/td>\n<td>tests\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>1.4 \u4f9d\u8d56\u4e0e\u865a\u62df\u73af\u5883&#xff1a;uv \/ pip<\/h3>\n<p>Java \u7684\u4f9d\u8d56\u88c5\u8fdb\u672c\u5730\u5168\u5c40\u4ed3\u5e93&#xff08;~\/.m2&#xff09;&#xff0c;\u6240\u6709\u9879\u76ee\u5171\u4eab\u3002Python \u4e0d\u540c&#xff1a;\u6bcf\u4e2a\u9879\u76ee\u5fc5\u987b\u6709\u81ea\u5df1\u72ec\u7acb\u7684\u865a\u62df\u73af\u5883&#xff08;\u4e00\u4e2a\u88c5\u4e86\u8be5\u9879\u76ee\u6240\u6709\u4f9d\u8d56\u7684\u9694\u79bb\u76ee\u5f55&#xff09;&#xff0c;\u5426\u5219\u4e0d\u540c\u9879\u76ee\u7684\u4f9d\u8d56\u7248\u672c\u4f1a\u4e92\u76f8\u51b2\u7a81\u3002<\/p>\n<p>\u5f53\u524d\u4e8b\u5b9e\u6807\u51c6\u662f uv&#xff08;Rust \u7f16\u5199&#xff0c;\u6781\u5feb&#xff09;&#xff0c;\u66ff\u4ee3\u4e86\u8001\u7684 pip &#043; venv &#043; pip-tools \u7ec4\u5408&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u521b\u5efa\u9879\u76ee&#xff08;\u751f\u6210 pyproject.toml &#043; .venv \u865a\u62df\u73af\u5883&#xff09;<\/span><br \/>\nuv init my-agent <span class=\"token operator\">&amp;&amp;<\/span> <span class=\"token builtin class-name\">cd<\/span> my-agent<\/p>\n<p><span class=\"token comment\"># \u6dfb\u52a0\u4f9d\u8d56&#xff08;\u81ea\u52a8\u521b\u5efa\/\u66f4\u65b0\u865a\u62df\u73af\u5883&#xff0c;\u7b49\u4ef7\u4e8e\u5728 pom.xml \u52a0\u4f9d\u8d56\u5e76 mvn install&#xff09;<\/span><br \/>\nuv <span class=\"token function\">add<\/span> fastapi uvicorn httpx pydantic<br \/>\nuv <span class=\"token function\">add<\/span> <span class=\"token string\">&#034;pydantic&gt;&#061;2.0&#034;<\/span><\/p>\n<p><span class=\"token comment\"># \u5f00\u53d1\u4f9d\u8d56&#xff08;\u76f8\u5f53\u4e8e Maven \u7684 scope&#061;test\/provided&#xff09;<\/span><br \/>\nuv <span class=\"token function\">add<\/span> <span class=\"token parameter variable\">&#8211;dev<\/span> pytest ruff<\/p>\n<p><span class=\"token comment\"># \u8fd0\u884c&#xff08;uv \u81ea\u52a8\u627e\u5230\u9879\u76ee\u865a\u62df\u73af\u5883&#xff09;<\/span><br \/>\nuv run python <span class=\"token parameter variable\">-m<\/span> my_agent.main<br \/>\nuv run pytest<\/p>\n<p><span class=\"token comment\"># \u9501\u5b9a\u6587\u4ef6 uv.lock \u2194 Maven \u7684\u4f9d\u8d56\u9501\u5b9a&#xff0c;\u4fdd\u8bc1\u56e2\u961f\u53ef\u590d\u73b0<\/span><br \/>\nuv lock<\/p>\n<p>\u7c7b\u6bd4\u8bb0\u5fc6&#xff1a;uv \u2248 mvn &#043; mvnw \u5408\u4f53&#xff0c;uv.lock \u2248 \u9501\u5b9a\u7248\u672c\u7684 pom.xml&#xff0c;.venv\/ \u2248 \u6bcf\u4e2a project \u79c1\u6709\u7684\u8f7b\u91cf ~\/.m2\u3002<\/p>\n<h3>1.5 \u6a21\u5757\u4e0e\u5305&#xff1a;import \u673a\u5236<\/h3>\n<p>Java \u7684\u5305\u540d\u4e0e\u76ee\u5f55\u5f3a\u5236\u4e00\u81f4&#xff1b;Python \u7684 import \u8def\u5f84\u5c31\u662f\u6587\u4ef6\u7cfb\u7edf\u8def\u5f84&#xff1a;<\/p>\n<p><span class=\"token comment\"># src\/my_agent\/tools\/search.py \u5185\u6709\u51fd\u6570 web_search<\/span><br \/>\n<span class=\"token keyword\">from<\/span> my_agent<span class=\"token punctuation\">.<\/span>tools<span class=\"token punctuation\">.<\/span>search <span class=\"token keyword\">import<\/span> web_search       <span class=\"token comment\"># \u5168\u8def\u5f84\u5bfc\u5165<\/span><br \/>\n<span class=\"token keyword\">from<\/span> my_agent<span class=\"token punctuation\">.<\/span>tools <span class=\"token keyword\">import<\/span> search                   <span class=\"token comment\"># \u5bfc\u5165\u6a21\u5757&#xff0c;\u7528 search.web_search()<\/span><br \/>\n<span class=\"token keyword\">import<\/span> my_agent<span class=\"token punctuation\">.<\/span>tools<span class=\"token punctuation\">.<\/span>search <span class=\"token keyword\">as<\/span> search_mod          <span class=\"token comment\"># \u8d77\u522b\u540d<\/span><\/p>\n<p><span class=\"token comment\"># my_agent\/tools\/__init__.py \u91cc\u53ef\u4ee5\u505a&#034;\u5305\u95e8\u9762&#034;&#xff1a;<\/span><br \/>\n<span class=\"token comment\"># from .search import web_search   \u2190 \u8ba9\u5916\u90e8\u76f4\u63a5 from my_agent.tools import web_search<\/span><\/p>\n<p>\u89c4\u5219\u8981\u70b9&#xff1a;<\/p>\n<ul>\n<li>\u4e00\u4e2a .py \u6587\u4ef6 &#061; \u4e00\u4e2a\u6a21\u5757&#xff08;module&#xff09;&#xff1b;\u542b __init__.py \u7684\u76ee\u5f55 &#061; \u4e00\u4e2a\u5305&#xff08;package&#xff09;\u3002__init__.py \u53ef\u4ee5\u4e3a\u7a7a&#xff0c;\u4e5f\u53ef\u4ee5\u5199\u5bfc\u51fa\u95e8\u9762\u3002<\/li>\n<li>\u76f8\u5bf9\u5bfc\u5165 from .search import x&#xff08;\u540c\u5305&#xff09;\u3001from ..core import y&#xff08;\u4e0a\u4e00\u7ea7\u5305&#xff09;\u2014\u2014\u53ea\u5728\u5305\u5185\u90e8\u7528\u3002<\/li>\n<li>\u6ca1\u6709\u8bbf\u95ee\u4fee\u9970\u7b26&#xff1a;\u6240\u6709\u9876\u5c42\u540d\u5b57\u9ed8\u8ba4\u53ef\u5bfc\u5165&#xff0c;_ \u524d\u7f00\u53ea\u662f&#034;\u522b\u5bfc\u6211&#034;\u7684\u7ea6\u5b9a\u3002<\/li>\n<li>\u5faa\u73af\u5bfc\u5165&#xff08;circular import&#xff09;\u2194 Java \u5faa\u73af\u4f9d\u8d56&#xff1a;Python \u4f1a\u8fd0\u884c\u65f6\u62a5\u9519&#xff0c;\u9760\u62c6\u5206\u6a21\u5757\/\u5ef6\u8fdf\u5bfc\u5165\u89e3\u51b3\u3002<\/li>\n<li>Python 3.3&#043; \u6709\u547d\u540d\u7a7a\u95f4\u5305&#xff0c;\u4f46\u9879\u76ee\u5185\u7edf\u4e00\u5199 __init__.py \u66f4\u89c4\u8303\u3002<\/li>\n<\/ul>\n<h4>\u8fd0\u884c\u5165\u53e3\u4e0e sys.path \u9677\u9631<\/h4>\n<p>\u5728 Java \u4e2d&#xff0c;\u7c7b\u7684\u5b9a\u4f4d\u7531 Classpath \u7edf\u4e00\u6258\u7ba1&#xff0c;\u7c7b\u540d\u4e0e\u76ee\u5f55\u5f3a\u7ed1\u5b9a&#xff1b;\u800c\u5728 Python \u4e2d&#xff0c;\u6a21\u5757\u5bfb\u627e\u4f9d\u8d56\u89e3\u91ca\u5668\u7684 sys.path \u8def\u5f84\u5217\u8868\u3002<\/p>\n<p><span class=\"token comment\"># \u9519\u8bef\u793a\u4f8b&#xff1a;\u5b50\u76ee\u5f55\u76f4\u63a5\u8fd0\u884c\u62a5\u9519<\/span><br \/>\n<span class=\"token comment\"># \u76ee\u5f55\u4e3a src\/my_agent\/tools\/search.py&#xff0c;\u5176\u5185\u90e8\u5199\u4e86&#xff1a;<\/span><br \/>\n<span class=\"token keyword\">from<\/span> my_agent<span class=\"token punctuation\">.<\/span>core <span class=\"token keyword\">import<\/span> config<\/p>\n<p>\u5982\u679c\u76f4\u63a5\u5728\u7ec8\u7aef\u8fd0\u884c python src\/my_agent\/tools\/search.py&#xff0c;\u4f1a\u7acb\u5373\u62a5\u9519&#xff1a;<br \/>\nModuleNotFoundError: No module named &#039;my_agent&#039;\u3002<\/p>\n<p>\u5e95\u5c42\u673a\u5236&#xff1a;<\/p>\n<li>\u76f4\u63a5\u7528\u811a\u672c\u8def\u5f84\u8fd0\u884c&#xff08;python path\/to\/script.py&#xff09;\u65f6&#xff0c;Python \u4f1a\u81ea\u52a8\u5c06\u8be5\u811a\u672c\u6240\u5728\u76ee\u5f55&#xff08;&#8230;\/my_agent\/tools\/&#xff09;\u52a0\u5165 sys.path[0]&#xff0c;\u800c\u4e0d\u662f\u9879\u76ee\u6839\u76ee\u5f55\u6216 src\/&#xff1b;\u56e0\u6b64\u89e3\u91ca\u5668\u6839\u672c\u627e\u4e0d\u5230\u4e0a\u5c42\u7684 my_agent \u5305\u3002<\/li>\n<li>\u89c4\u8303\u542f\u52a8\u65b9\u5f0f&#xff1a;\u4f7f\u7528 -m \u6a21\u5757\u6a21\u5f0f&#xff0c;\u5728\u9879\u76ee\u6839\u76ee\u5f55\u4e0b\u6267\u884c&#xff1a;uv run python <span class=\"token parameter variable\">-m<\/span> my_agent.tools.search\n<p>-m \u4f1a\u5f3a\u5236\u5c06\u5f53\u524d\u8fd0\u884c\u7684**\u5de5\u4f5c\u76ee\u5f55&#xff08;\u9879\u76ee\u6839\u76ee\u5f55&#xff09;**\u52a0\u5165 sys.path&#xff0c;\u4f7f\u5168\u8def\u5f84\u5bfc\u5165\u6b63\u5e38\u89e3\u6790\u3002<\/li>\n<p>\u5165\u53e3\u5b88\u62a4&#xff1a;if __name__ &#061;&#061; &#034;__main__&#034;: \u7684\u5e95\u5c42\u539f\u7406&#xff1a;<br \/>\nJava \u6bcf\u4e2a\u5e94\u7528\u6709\u660e\u786e\u7684 public static void main \u5165\u53e3\u7c7b&#xff1b;Python \u4efb\u4f55 .py \u6587\u4ef6\u65e2\u80fd\u4f5c\u4e3a\u5165\u53e3\u6267\u884c&#xff0c;\u4e5f\u80fd\u4f5c\u4e3a\u6a21\u5757\u88ab\u5bfc\u5165&#xff1a;<\/p>\n<ul>\n<li>\u5f53\u8be5\u6587\u4ef6\u88ab\u76f4\u63a5\u8fd0\u884c\u65f6&#xff0c;Python \u89e3\u91ca\u5668\u81ea\u52a8\u5c06\u5176\u5185\u7f6e\u53d8\u91cf __name__ \u8d4b\u503c\u4e3a &#034;__main__&#034;&#xff1b;<\/li>\n<li>\u5f53\u8be5\u6587\u4ef6\u88ab\u5176\u4ed6\u6a21\u5757 import \u65f6&#xff0c;__name__ \u4f1a\u88ab\u8d4b\u503c\u4e3a\u5176\u771f\u5b9e\u7684\u6a21\u5757\u8def\u5f84\u540d&#xff08;\u5982 &#034;my_agent.tools.search&#034;&#xff09;\u3002<\/li>\n<li>\u56e0\u6b64&#xff0c;if __name__ &#061;&#061; &#034;__main__&#034;: \u4fdd\u8bc1\u4e86\u8be5\u6a21\u5757\u4f5c\u4e3a\u5e93\u88ab\u5176\u4ed6\u4ee3\u7801\u5f15\u7528\u65f6&#xff0c;\u4e0d\u4f1a\u610f\u5916\u89e6\u53d1\u6d4b\u8bd5\u6216\u521d\u59cb\u5316\u811a\u672c\u3002<\/li>\n<\/ul>\n<h3>1.6 \u4ee3\u7801\u89c4\u8303&#xff1a;ruff<\/h3>\n<p>\u4e00\u4e2a\u5de5\u5177\u8986\u76d6 Java \u91cc Checkstyle &#043; Spotless &#043; PMD \u7684\u804c\u8d23&#xff1a;<\/p>\n<p>uv run ruff check <span class=\"token builtin class-name\">.<\/span> <span class=\"token parameter variable\">&#8211;fix<\/span>    <span class=\"token comment\"># lint \u5e76\u81ea\u52a8\u4fee\u590d&#xff08;\u672a\u4f7f\u7528\u5bfc\u5165\u3001\u9519\u8bef\u5199\u6cd5\u2026&#xff09;<\/span><br \/>\nuv run ruff <span class=\"token function\">format<\/span> <span class=\"token builtin class-name\">.<\/span>         <span class=\"token comment\"># \u683c\u5f0f\u5316 \u2194 google-java-format<\/span><\/p>\n<p>CI \u91cc\u4e24\u6761\u547d\u4ee4\u8dd1\u4e00\u904d\u5373\u53ef&#xff0c;\u914d\u7f6e\u5168\u5728 pyproject.toml\u3002\u914d\u7f6e pre-commit hook&#xff08;pre-commit \u6846\u67b6&#xff09;\u53ef\u5728\u4ee3\u7801\u63d0\u4ea4\u65f6\u81ea\u52a8\u6267\u884c&#xff0c;\u5bf9\u9f50 Git Hooks \u6821\u9a8c\u89c4\u8303\u3002<\/p>\n<h3>1.7 \u4e25\u683c\u7c7b\u578b\u68c0\u67e5\u5de5\u4f5c\u6d41&#xff1a;pyright<\/h3>\n<p>\u63a8\u8350\u7684\u5de5\u7a0b\u7ec4\u5408&#xff08;\u5199\u8fdb pyproject.toml \u4e00\u6b21&#xff0c;\u4e4b\u540e\u65e0\u611f&#xff09;&#xff1a;<\/p>\n<p>[tool.ruff]                # lint &#043; format \u4e8c\u5408\u4e00&#xff08;\u66ff\u4ee3 black\/isort\/flake8&#xff09;<br \/>\nline-length &#061; 100<\/p>\n<p>[tool.pyright]<br \/>\ntypeCheckingMode &#061; &#034;strict&#034;    # \u4e25\u683c\u6a21\u5f0f&#xff0c;\u63a5\u8fd1 Java \u7684\u7f16\u8bd1\u671f\u68c0\u67e5\u4f53\u9a8c<\/p>\n<p>uv run ruff check <span class=\"token builtin class-name\">.<\/span> <span class=\"token operator\">&amp;&amp;<\/span> uv run ruff <span class=\"token function\">format<\/span> <span class=\"token builtin class-name\">.<\/span>   <span class=\"token comment\"># \u63d0\u4ea4\u524d<\/span><br \/>\nuv run pyright                                 <span class=\"token comment\"># CI \u4e2d<\/span><\/p>\n<p>\u8bb0\u4f4f\u5b9a\u4f4d&#xff1a;\u6ce8\u89e3 &#061; \u6587\u6863 &#043; IDE \u8865\u5168 &#043; \u9759\u6001\u6293\u9519 &#043; \u6846\u67b6\u5143\u6570\u636e&#xff0c;\u56db\u91cd\u6536\u76ca&#xff0c;\u6210\u672c\u51e0\u4e4e\u4e3a\u96f6&#xff0c;\u6240\u4ee5 Python \u793e\u533a\u5168\u6ce8\u89e3\u662f\u4e3b\u6d41\u3002<\/p>\n<hr \/>\n<h2>\u7b2c 2 \u7ae0 \u8bed\u6cd5\u57fa\u77f3\u4e0e\u907f\u5751<\/h2>\n<h3>2.1 \u53d8\u91cf\u4e0e\u57fa\u672c\u7c7b\u578b<\/h3>\n<table>\n<tr>JavaPython\u5907\u6ce8<\/tr>\n<tbody>\n<tr>\n<td>int&#xff08;8\/16\/32\/64\u4f4d&#xff09;<\/td>\n<td>int<\/td>\n<td>Python \u6574\u6570\u65e0\u9650\u7cbe\u5ea6&#xff0c;\u6ca1\u6709\u6ea2\u51fa<\/td>\n<\/tr>\n<tr>\n<td>long<\/td>\n<td>int<\/td>\n<td>\u540c\u4e0a<\/td>\n<\/tr>\n<tr>\n<td>double \/ float<\/td>\n<td>float<\/td>\n<td>64 \u4f4d\u53cc\u7cbe\u5ea6&#xff0c;\u7b49\u4ef7 Java double<\/td>\n<\/tr>\n<tr>\n<td>\u65e0<\/td>\n<td>complex<\/td>\n<td>\u590d\u6570&#xff0c;\u540e\u7aef\u5f00\u53d1\u57fa\u672c\u4e0d\u7528<\/td>\n<\/tr>\n<tr>\n<td>boolean<\/td>\n<td>bool<\/td>\n<td>True \/ False&#xff08;\u9996\u5b57\u6bcd\u5927\u5199&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>char<\/td>\n<td>\u65e0<\/td>\n<td>\u5355\u5b57\u7b26\u5c31\u662f\u957f\u5ea6\u4e3a 1 \u7684 str<\/td>\n<\/tr>\n<tr>\n<td>String<\/td>\n<td>str<\/td>\n<td>\u4e0d\u53ef\u53d8&#xff0c;Unicode&#xff0c;\u65e0\u9700 char \u5904\u7406\u7f16\u7801\u70e6\u607c<\/td>\n<\/tr>\n<tr>\n<td>null<\/td>\n<td>None<\/td>\n<td>\u4e14 None \u53ea\u80fd\u548c None \u6bd4\u8f83<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">2<\/span> <span class=\"token operator\">**<\/span> <span class=\"token number\">100<\/span>            <span class=\"token comment\"># 1267650600228229401496703205376&#xff0c;\u6574\u6570\u4e0d\u6ea2\u51fa<\/span><br \/>\nf <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0.1<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">0.2<\/span>           <span class=\"token comment\"># 0.30000000000000004&#xff0c;\u548c Java \u4e00\u6837\u6709\u6d6e\u70b9\u8bef\u5dee<\/span><br \/>\ns <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">None<\/span>                <span class=\"token comment\"># Java \u7684 null<\/span><br \/>\nflag <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">True<\/span>             <span class=\"token comment\"># \u4e0d\u662f true<\/span><\/p>\n<p><span class=\"token comment\"># None \u5224\u65ad\u60ef\u7528\u6cd5&#xff1a;\u7528 is&#xff0c;\u4e0d\u7528 &#061;&#061;<\/span><br \/>\n<span class=\"token keyword\">if<\/span> s <span class=\"token keyword\">is<\/span> <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">.<\/span><span class=\"token punctuation\">.<\/span><span class=\"token punctuation\">.<\/span><br \/>\n<span class=\"token keyword\">if<\/span> s <span class=\"token keyword\">is<\/span> <span class=\"token keyword\">not<\/span> <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">.<\/span><span class=\"token punctuation\">.<\/span><span class=\"token punctuation\">.<\/span><\/p>\n<p><span class=\"token comment\"># \u4ea4\u6362\u53d8\u91cf\u4e0d\u9700\u8981\u4e34\u65f6\u53d8\u91cf<\/span><br \/>\na<span class=\"token punctuation\">,<\/span> b <span class=\"token operator\">&#061;<\/span> b<span class=\"token punctuation\">,<\/span> a<\/p>\n<p><span class=\"token comment\"># \u591a\u91cd\u8d4b\u503c \/ \u89e3\u5305&#xff08;Java \u6ca1\u6709&#xff09;<\/span><br \/>\nx<span class=\"token punctuation\">,<\/span> y<span class=\"token punctuation\">,<\/span> z <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">]<\/span>             <span class=\"token comment\"># x&#061;1, y&#061;2, z&#061;3<\/span><br \/>\nfirst<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">*<\/span>rest <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">4<\/span><span class=\"token punctuation\">]<\/span>     <span class=\"token comment\"># first&#061;1, rest&#061;[2,3,4]<\/span><\/p>\n<p>\u5b57\u7b26\u4e32&#xff1a;\u4e0d\u53ef\u53d8 &#043; \u81ea\u52a8 Unicode&#xff0c;\u62fc\u63a5\u63a8\u8350 f-string&#xff08;\u89c1 2.5&#xff09;\u3002\u4e0e Java \u4e0d\u540c&#xff0c;\u6ca1\u6709 StringBuilder \u7684\u5fc5\u8981&#xff0c;\u5927\u91cf\u62fc\u63a5\u7528 &#034;&#034;.join(list)&#xff1a;<\/p>\n<p>parts <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;SELECT *&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;FROM users&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;WHERE id &#061; :id&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\nsql <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;\\\\n&#034;<\/span><span class=\"token punctuation\">.<\/span>join<span class=\"token punctuation\">(<\/span>parts<span class=\"token punctuation\">)<\/span>          <span class=\"token comment\"># \u7b49\u4ef7 String.join&#xff0c;sql&#061;&#034;SELECT *\\\\nFROM users\\\\nWHERE id &#061; :id&#034;<\/span><\/p>\n<h4>\u5185\u5b58\u4f20\u9012\u6a21\u578b&#xff1a;\u5171\u4eab\u5bf9\u8c61\u5f15\u7528\u4e0e\u6df1\u6d45\u62f7\u8d1d<\/h4>\n<p>Java \u662f\u4e25\u683c\u7684\u503c\u4f20\u9012&#xff08;\u57fa\u672c\u7c7b\u578b\u4f20\u6570\u503c\u526f\u672c&#xff0c;\u5f15\u7528\u7c7b\u578b\u4f20\u5f15\u7528\u5730\u5740\u7684\u526f\u672c&#xff09;&#xff1b;Python \u91c7\u7528 Pass-by-assignment&#xff08;\u5bf9\u8c61\u5f15\u7528\u5171\u4eab\u4f20\u9012&#xff09;&#xff1a;<\/p>\n<p><span class=\"token comment\"># 1. \u4e0d\u53ef\u53d8\u5bf9\u8c61&#xff08;int, float, str, tuple&#xff09;&#xff1a;\u4fee\u6539\u5373\u521b\u5efa\u65b0\u5bf9\u8c61<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">increment<\/span><span class=\"token punctuation\">(<\/span>val<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    val <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">1<\/span>                  <span class=\"token comment\"># val \u6307\u5411\u4e86\u5168\u65b0\u7684 int \u5bf9\u8c61&#xff0c;\u5916\u5c42\u4e0d\u53d7\u5f71\u54cd<\/span><\/p>\n<p>x <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">10<\/span><br \/>\nincrement<span class=\"token punctuation\">(<\/span>x<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>x<span class=\"token punctuation\">)<\/span>                      <span class=\"token comment\"># \u4ecd\u4e3a 10<\/span><\/p>\n<p><span class=\"token comment\"># 2. \u53ef\u53d8\u5bf9\u8c61&#xff08;list, dict, set, \u5b9e\u4f8b\u5bf9\u8c61&#xff09;&#xff1a;\u539f\u5730\u53d8\u66f4\u76f4\u63a5\u5f71\u54cd\u5916\u90e8<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">register_tool<\/span><span class=\"token punctuation\">(<\/span>registry<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">,<\/span> name<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    registry<span class=\"token punctuation\">[<\/span>name<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">True<\/span>     <span class=\"token comment\"># \u539f\u5730\u4fee\u6539\u5b57\u5178<\/span><\/p>\n<p>reg <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\nregister_tool<span class=\"token punctuation\">(<\/span>reg<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;search&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>reg<span class=\"token punctuation\">)<\/span>                    <span class=\"token comment\"># {&#039;search&#039;: True} \u2014\u2014 \u5916\u90e8\u5b57\u5178\u88ab\u4fee\u6539&#xff01;<\/span><\/p>\n<p>\u6d45\u62f7\u8d1d vs \u6df1\u62f7\u8d1d\u9677\u9631&#xff1a;<br \/>\n\u5207\u7247 nums[:]\u3001dict.copy() \u6216 list.copy() \u4ec5\u4e3a\u6d45\u62f7\u8d1d&#xff08;Shallow Copy&#xff09;\u3002\u5982\u679c\u5bb9\u5668\u5185\u5d4c\u5957\u4e86\u53ef\u53d8\u5bf9\u8c61&#xff08;\u5982\u5217\u8868\u91cc\u5b58\u5b57\u5178&#xff09;&#xff0c;\u4fee\u6539\u5185\u5c42\u5bf9\u8c61\u4f9d\u7136\u4f1a\u4e32\u6270\u539f\u6570\u636e&#xff1a;<\/p>\n<p><span class=\"token keyword\">import<\/span> copy<\/p>\n<p>tools <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;search&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;timeout&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">30<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">]<\/span><br \/>\nshallow <span class=\"token operator\">&#061;<\/span> tools<span class=\"token punctuation\">.<\/span>copy<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>        <span class=\"token comment\"># \u6d45\u62f7\u8d1d<\/span><br \/>\ndeep <span class=\"token operator\">&#061;<\/span> copy<span class=\"token punctuation\">.<\/span>deepcopy<span class=\"token punctuation\">(<\/span>tools<span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># \u6df1\u62f7\u8d1d<\/span><\/p>\n<p>shallow<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;timeout&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">60<\/span>    <span class=\"token comment\"># tools[0][&#034;timeout&#034;] \u4e5f\u4f1a\u88ab\u6539\u6210 60&#xff01;<\/span><br \/>\ndeep<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;timeout&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">99<\/span>       <span class=\"token comment\"># tools[0][&#034;timeout&#034;] \u4f9d\u7136\u662f 60&#xff0c;\u4e92\u4e0d\u5e72\u6270<\/span><\/p>\n<p>\u5728 Agent \u72b6\u6001\u6d41\u8f6c\u6216\u914d\u7f6e\u590d\u5236\u573a\u666f\u4e2d&#xff0c;\u6d89\u53ca\u5d4c\u5957\u914d\u7f6e\u65f6\u5fc5\u987b\u4f7f\u7528 copy.deepcopy\u3002<\/p>\n<h3>2.2 \u5bb9\u5668&#xff1a;list \/ dict \/ set \/ tuple<\/h3>\n<p>\u8fd9\u662f Python \u6700\u5e38\u7528\u7684\u5bb9\u5668&#xff0c;\u6ca1\u6709 ArrayList\/HashMap \u7684\u6cdb\u578b\u8bed\u6cd5&#xff0c;\u76f4\u63a5\u5b57\u9762\u91cf\u521b\u5efa&#xff1a;<\/p>\n<p>nums<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">[<\/span><span class=\"token builtin\">int<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">]<\/span>                 <span class=\"token comment\"># \u2194 ArrayList&lt;Integer&gt;<\/span><br \/>\nuser<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">[<\/span><span class=\"token builtin\">str<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;tom&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;role&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;admin&#034;<\/span><span class=\"token punctuation\">}<\/span>   <span class=\"token comment\"># \u2194 HashMap&lt;String,String&gt;<\/span><br \/>\ntags<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">set<\/span><span class=\"token punctuation\">[<\/span><span class=\"token builtin\">str<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;a&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;b&#034;<\/span><span class=\"token punctuation\">}<\/span>                 <span class=\"token comment\"># \u2194 HashSet&lt;String&gt;<\/span><br \/>\npoint<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">tuple<\/span><span class=\"token punctuation\">[<\/span><span class=\"token builtin\">int<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">4<\/span><span class=\"token punctuation\">)<\/span>             <span class=\"token comment\"># \u4e0d\u53ef\u53d8\u5143\u7ec4&#xff0c;Java \u65e0\u76f4\u63a5\u5bf9\u5e94&#xff08;record \u7684\u7b80\u5316\u7248&#xff09;<\/span><\/p>\n<p>nums<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span><span class=\"token number\">4<\/span><span class=\"token punctuation\">)<\/span>              <span class=\"token comment\"># add<\/span><br \/>\nnums<span class=\"token punctuation\">.<\/span>extend<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">6<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>         <span class=\"token comment\"># addAll<\/span><br \/>\nnums<span class=\"token punctuation\">.<\/span>pop<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>                  <span class=\"token comment\"># remove \u5c3e\u5143\u7d20<\/span><br \/>\nnums<span class=\"token punctuation\">.<\/span>remove<span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span>              <span class=\"token comment\"># \u6309\u503c\u5220\u9664&#xff08;\u4e0d\u5b58\u5728\u5219\u629b ValueError&#xff09;<\/span><br \/>\n<span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>nums<span class=\"token punctuation\">)<\/span>                   <span class=\"token comment\"># size()&#xff0c;\u51fd\u6570\u800c\u975e\u65b9\u6cd5<\/span><br \/>\n<span class=\"token number\">2<\/span> <span class=\"token keyword\">in<\/span> nums                   <span class=\"token comment\"># contains()&#xff0c;\u60ef\u7528 in<\/span><\/p>\n<p>\u5b57\u5178\u662f Python \u6700\u6838\u5fc3\u7684\u5bb9\u5668\u4e4b\u4e00&#xff0c;\u5e38\u7528\u4e8e\u6d88\u606f\u5386\u53f2\u3001\u5de5\u5177\u6ce8\u518c\u8868\u548c\u914d\u7f6e\u4f20\u9012&#xff1a;<\/p>\n<p>user <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;tom&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;role&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;admin&#034;<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p>user<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">]<\/span>                <span class=\"token comment\"># get&#xff0c;KeyError \u82e5\u4e0d\u5b58\u5728<\/span><br \/>\nuser<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;email&#034;<\/span><span class=\"token punctuation\">)<\/span>           <span class=\"token comment\"># \u2194 getOrDefault \u8bed\u4e49&#xff1a;\u4e0d\u5b58\u5728\u8fd4\u56de None<\/span><br \/>\nuser<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;email&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;&#034;<\/span><span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># \u4e0d\u5b58\u5728\u8fd4\u56de\u9ed8\u8ba4\u503c<\/span><br \/>\nuser<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;email&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;a&#064;b.com&#034;<\/span>   <span class=\"token comment\"># put<\/span><br \/>\n<span class=\"token keyword\">del<\/span> user<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;email&#034;<\/span><span class=\"token punctuation\">]<\/span>           <span class=\"token comment\"># remove<\/span><br \/>\nuser<span class=\"token punctuation\">.<\/span>pop<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;role&#034;<\/span><span class=\"token punctuation\">)<\/span>            <span class=\"token comment\"># \u5220\u9664\u5e76\u8fd4\u56de\u503c<\/span><\/p>\n<p><span class=\"token comment\"># \u904d\u5386&#xff08;Java: for (var e : map.entrySet())&#xff09;<\/span><br \/>\n<span class=\"token keyword\">for<\/span> key<span class=\"token punctuation\">,<\/span> value <span class=\"token keyword\">in<\/span> user<span class=\"token punctuation\">.<\/span>items<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>key<span class=\"token punctuation\">,<\/span> value<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">for<\/span> key <span class=\"token keyword\">in<\/span> user<span class=\"token punctuation\">:<\/span>            <span class=\"token comment\"># \u9ed8\u8ba4\u904d\u5386 key&#xff08;Java: keySet()&#xff09;<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token punctuation\">.<\/span><span class=\"token punctuation\">.<\/span><\/p>\n<p><span class=\"token comment\"># \u5408\u5e76\u5b57\u5178&#xff08;Python 3.9&#043;&#xff09;<\/span><br \/>\nmerged <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token operator\">**<\/span>defaults<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">**<\/span>overrides<span class=\"token punctuation\">}<\/span>    <span class=\"token comment\"># \u2194 putAll<\/span><br \/>\nmerged <span class=\"token operator\">&#061;<\/span> defaults <span class=\"token operator\">|<\/span> overrides<\/p>\n<p><span class=\"token comment\"># \u5b57\u5178\u63a8\u5bfc\u5f0f&#xff08;\u89c1 2.6&#xff09;<\/span><br \/>\n<span class=\"token punctuation\">{<\/span>u<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span> u <span class=\"token keyword\">for<\/span> u <span class=\"token keyword\">in<\/span> users<span class=\"token punctuation\">}<\/span><\/p>\n<h4>list \u4e0e Java List \u7684\u5173\u952e\u5dee\u5f02&#xff1a;\u5207\u7247<\/h4>\n<p>nums <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">4<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">]<\/span><br \/>\nnums<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">:<\/span><span class=\"token number\">4<\/span><span class=\"token punctuation\">]<\/span>      <span class=\"token comment\"># [1, 2, 3]     \u4e0b\u6807 [1,4) \u2014\u2014 \u5e38\u7528\u4e8e\u6d88\u606f\u5386\u53f2\u622a\u65ad<\/span><br \/>\nnums<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">:<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">]<\/span>       <span class=\"token comment\"># [0, 1, 2]     \u524d 3 \u4e2a<\/span><br \/>\nnums<span class=\"token punctuation\">[<\/span><span class=\"token operator\">&#8211;<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">:<\/span><span class=\"token punctuation\">]<\/span>      <span class=\"token comment\"># [3, 4, 5]     \u540e 3 \u4e2a&#xff08;agent \u91cc&#034;\u4fdd\u7559\u6700\u8fd1 N \u6761\u6d88\u606f&#034;\u5c31\u8fd9\u4e48\u5199&#xff09;<\/span><br \/>\nnums<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">:<\/span><span class=\"token punctuation\">:<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span>      <span class=\"token comment\"># [0, 2, 4]     \u9694\u4e00\u4e2a\u53d6\u4e00\u4e2a&#xff0c;\u6b65\u957f\u4e3a 2<\/span><br \/>\nnums<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">:<\/span><span class=\"token punctuation\">:<\/span><span class=\"token operator\">&#8211;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span>     <span class=\"token comment\"># \u53cd\u8f6c<\/span><br \/>\nnums<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">:<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">9<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token comment\"># \u5207\u7247\u8d4b\u503c<\/span><\/p>\n<p>\u5207\u7247\u662f\u526f\u672c&#xff08;\u6d45\u62f7\u8d1d&#xff09;&#xff0c;\u4fee\u6539\u5b83\u4e0d\u5f71\u54cd\u539f list\u2014\u2014\u548c Java subList \u8fd4\u56de\u89c6\u56fe\u4e0d\u540c&#xff0c;\u8fd9\u662f\u5e38\u89c1\u5751\u3002<\/p>\n<p>tuple \u7684\u7528\u9014&#xff1a;\u51fd\u6570\u8fd4\u56de\u591a\u4e2a\u503c\u3001\u5b57\u5178\u952e\u3001\u4e0d\u53ef\u53d8\u6570\u636e&#xff1a;<\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">parse<\/span><span class=\"token punctuation\">(<\/span>text<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">tuple<\/span><span class=\"token punctuation\">[<\/span><span class=\"token builtin\">str<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;tom&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">18<\/span>        <span class=\"token comment\"># \u591a\u8fd4\u56de\u503c<\/span><\/p>\n<p>name<span class=\"token punctuation\">,<\/span> age <span class=\"token operator\">&#061;<\/span> parse<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#8230;&#034;<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># \u8c03\u7528\u5904\u89e3\u5305<\/span><\/p>\n<h4>\u9009\u578b\u5bf9\u7167\u8868<\/h4>\n<table>\n<tr>\u9700\u6c42JavaPython<\/tr>\n<tbody>\n<tr>\n<td>\u6709\u5e8f\u5217\u8868<\/td>\n<td>ArrayList<\/td>\n<td>list<\/td>\n<\/tr>\n<tr>\n<td>\u952e\u503c\u6620\u5c04<\/td>\n<td>HashMap<\/td>\n<td>dict&#xff08;3.7&#043; \u4fdd\u8bc1\u63d2\u5165\u5e8f&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>\u53bb\u91cd\u96c6\u5408<\/td>\n<td>HashSet<\/td>\n<td>set<\/td>\n<\/tr>\n<tr>\n<td>\u4e0d\u53ef\u53d8\u5217\u8868<\/td>\n<td>List.of(&#8230;)<\/td>\n<td>tuple<\/td>\n<\/tr>\n<tr>\n<td>\u6709\u5e8f\u53bb\u91cd<\/td>\n<td>LinkedHashSet<\/td>\n<td>dict.fromkeys(seq)<\/td>\n<\/tr>\n<tr>\n<td>\u7ebf\u7a0b\u5b89\u5168\u961f\u5217<\/td>\n<td>BlockingQueue<\/td>\n<td>queue.Queue \/ asyncio.Queue<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>2.3 \u63a7\u5236\u6d41\u5dee\u5f02<\/h3>\n<p><span class=\"token comment\"># if \/ elif \/ else&#xff08;Java \u7684 else if \u2192 elif&#xff09;<\/span><br \/>\nscore <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">85<\/span><br \/>\n<span class=\"token keyword\">if<\/span> score <span class=\"token operator\">&gt;&#061;<\/span> <span class=\"token number\">90<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    grade <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;A&#034;<\/span><br \/>\n<span class=\"token keyword\">elif<\/span> score <span class=\"token operator\">&gt;&#061;<\/span> <span class=\"token number\">80<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    grade <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;B&#034;<\/span><br \/>\n<span class=\"token keyword\">else<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    grade <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;C&#034;<\/span><\/p>\n<p><span class=\"token comment\"># \u4e09\u5143\u8868\u8fbe\u5f0f&#xff1a;\u503c\u5728\u524d&#xff0c;\u6761\u4ef6\u5728\u540e&#xff08;\u987a\u5e8f\u548c Java \u76f8\u53cd&#xff09;<\/span><br \/>\nlevel <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;admin&#034;<\/span> <span class=\"token keyword\">if<\/span> user<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;role&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token string\">&#034;admin&#034;<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token string\">&#034;user&#034;<\/span><\/p>\n<p><span class=\"token comment\"># Python 3.10&#043; \u7684 match-case \u2194 switch&#xff08;\u5e26\u6a21\u5f0f\u5339\u914d&#xff0c;\u6bd4 Java switch \u5f3a\u5927&#xff09;<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">handle<\/span><span class=\"token punctuation\">(<\/span>event<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">match<\/span> event<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">case<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;type&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;message&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;content&#034;<\/span><span class=\"token punctuation\">:<\/span> c<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;msg: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>c<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><br \/>\n        <span class=\"token keyword\">case<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;type&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;quit&#034;<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;bye&#034;<\/span><br \/>\n        <span class=\"token keyword\">case<\/span> <span class=\"token keyword\">_<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;unknown&#034;<\/span><\/p>\n<p><span class=\"token comment\"># while \u4e0e Java \u76f8\u540c&#xff1b;\u6ca1\u6709 do-while<\/span><br \/>\n<span class=\"token comment\"># for \u662f for-each&#xff0c;\u6ca1\u6709 Java \u5f0f\u7684\u4e0b\u6807 for<\/span><br \/>\n<span class=\"token keyword\">for<\/span> item <span class=\"token keyword\">in<\/span> items<span class=\"token punctuation\">:<\/span>          <span class=\"token comment\"># \u2194 for (var item : items)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>item<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u9700\u8981\u4e0b\u6807\u65f6\u7528 enumerate \u2194 \u624b\u52a8\u7ef4\u62a4 i<\/span><br \/>\n<span class=\"token keyword\">for<\/span> i<span class=\"token punctuation\">,<\/span> item <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">enumerate<\/span><span class=\"token punctuation\">(<\/span>items<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>    <span class=\"token comment\"># \u2194 IntStream.range<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">,<\/span> item<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u5e76\u884c\u904d\u5386\u4e24\u4e2a\u96c6\u5408&#xff1a;zip \u2194 \u624b\u52a8\u5bf9\u9f50\u4e0b\u6807<\/span><br \/>\n<span class=\"token keyword\">for<\/span> name<span class=\"token punctuation\">,<\/span> age <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">zip<\/span><span class=\"token punctuation\">(<\/span>names<span class=\"token punctuation\">,<\/span> ages<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>name<span class=\"token punctuation\">,<\/span> age<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># range \u2194 IntStream.rangeClosed(1, 10)<\/span><br \/>\n<span class=\"token keyword\">for<\/span> i <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">11<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>      <span class=\"token comment\"># [1, 11)&#xff0c;\u6b65\u957f\u9ed8\u8ba4 1<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token punctuation\">.<\/span><span class=\"token punctuation\">.<\/span><br \/>\n<span class=\"token keyword\">for<\/span> i <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>  <span class=\"token comment\"># \u5012\u5e8f<\/span><\/p>\n<p><span class=\"token comment\"># for-else&#xff1a;\u5faa\u73af\u6b63\u5e38\u7ed3\u675f&#xff08;\u6ca1\u88ab break&#xff09;\u624d\u6267\u884c else \u2014\u2014 Java \u6ca1\u6709<\/span><br \/>\n<span class=\"token keyword\">for<\/span> tool <span class=\"token keyword\">in<\/span> tools<span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> tool<span class=\"token punctuation\">.<\/span>name <span class=\"token operator\">&#061;&#061;<\/span> target<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">break<\/span><br \/>\n<span class=\"token keyword\">else<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">raise<\/span> ToolNotFound<span class=\"token punctuation\">(<\/span>target<span class=\"token punctuation\">)<\/span><\/p>\n<h4>\u771f\u503c\u5224\u65ad<\/h4>\n<p>Python \u4e2d\u4efb\u4f55\u5bf9\u8c61\u90fd\u80fd\u76f4\u63a5\u653e\u5728 if \u91cc\u5224\u65ad&#xff1a;<\/p>\n<p><span class=\"token keyword\">if<\/span> items<span class=\"token punctuation\">:<\/span>               <span class=\"token comment\"># \u975e\u7a7a list \u2192 True&#xff08;Java \u5fc5\u987b\u5199 !items.isEmpty()&#xff09;<\/span><br \/>\n<span class=\"token keyword\">if<\/span> name<span class=\"token punctuation\">:<\/span>                <span class=\"token comment\"># \u975e\u7a7a\u5b57\u7b26\u4e32 \u2192 True<\/span><br \/>\n<span class=\"token keyword\">if<\/span> errors<span class=\"token punctuation\">:<\/span>              <span class=\"token comment\"># \u975e\u7a7a dict\/set \u2192 True<\/span><\/p>\n<p><span class=\"token keyword\">if<\/span> <span class=\"token keyword\">not<\/span> items<span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">.<\/span><span class=\"token punctuation\">.<\/span><span class=\"token punctuation\">.<\/span>       <span class=\"token comment\"># \u7a7a\u96c6\u5408<\/span><\/p>\n<p><span class=\"token comment\"># \u6ce8\u610f&#xff1a;\u5224\u65ad&#034;\u662f None&#034;\u7528 is None&#xff1b;\u5224\u65ad&#034;\u662f\u7a7a&#034;\u7528\u771f\u503c\u3002\u4e24\u8005\u4e0d\u540c&#xff01;<\/span><br \/>\nmsg <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;&#034;<\/span>                <span class=\"token comment\"># \u7a7a\u5b57\u7b26\u4e32<\/span><br \/>\n<span class=\"token keyword\">if<\/span> msg<span class=\"token punctuation\">:<\/span>                 <span class=\"token comment\"># False \u2014\u2014 \u4f1a\u628a\u7a7a\u4e32\u5f53&#034;\u6ca1\u6709&#034;<\/span><br \/>\n<span class=\"token keyword\">if<\/span> msg <span class=\"token keyword\">is<\/span> <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">:<\/span>         <span class=\"token comment\"># False \u2014\u2014 \u7a7a\u4e32\u4e0d\u662f None<\/span><\/p>\n<p>\u903b\u8f91\u8fd0\u7b97\u7b26\u662f\u5355\u8bcd&#xff1a;and \/ or \/ not \u2194 &amp;&amp; \/ || \/ !&#xff0c;\u4e14 and\/or \u8fd4\u56de\u64cd\u4f5c\u6570\u672c\u8eab&#xff08;\u77ed\u8def\u6c42\u503c\u8fd4\u56de\u503c&#xff09;&#xff1a;<\/p>\n<p>name <span class=\"token operator\">&#061;<\/span> input_name <span class=\"token keyword\">or<\/span> <span class=\"token string\">&#034;anonymous&#034;<\/span>    <span class=\"token comment\"># \u2194 Optional\/default \u60ef\u7528\u6cd5<\/span><\/p>\n<h3>2.4 \u51fd\u6570<\/h3>\n<p><span class=\"token comment\"># \u57fa\u672c\u5b9a\u4e49&#xff08;\u6ce8\u89e3\u5f3a\u70c8\u5efa\u8bae\u5199&#xff09;<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">call_llm<\/span><span class=\"token punctuation\">(<\/span>prompt<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">,<\/span> temperature<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0.7<\/span><span class=\"token punctuation\">,<\/span> model<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;gpt-4o&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token punctuation\">.<\/span><span class=\"token punctuation\">.<\/span><span class=\"token punctuation\">.<\/span><\/p>\n<p><span class=\"token comment\"># Python \u6ca1\u6709\u91cd\u8f7d&#xff01;\u7528\u9ed8\u8ba4\u53c2\u6570\u66ff\u4ee3&#xff1a;<\/span><br \/>\ncall_llm<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;hi&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\ncall_llm<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;hi&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0.2<\/span><span class=\"token punctuation\">)<\/span><br \/>\ncall_llm<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;hi&#034;<\/span><span class=\"token punctuation\">,<\/span> model<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;deepseek-chat&#034;<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># \u5173\u952e\u5b57\u53c2\u6570&#xff0c;Java \u6ca1\u6709<\/span><\/p>\n<p><span class=\"token comment\"># *args \/ **kwargs&#xff1a;\u53ef\u53d8\u53c2\u6570 \u2194 Java \u7684 T&#8230; args<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span>level<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token operator\">*<\/span>parts<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token operator\">**<\/span>context<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>level<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">*<\/span>parts<span class=\"token punctuation\">,<\/span> context<span class=\"token punctuation\">)<\/span><\/p>\n<p>log<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;INFO&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;request done&#034;<\/span><span class=\"token punctuation\">,<\/span> user_id<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;u1&#034;<\/span><span class=\"token punctuation\">,<\/span> trace_id<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;t1&#034;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>\u8981\u70b9&#xff1a;<\/p>\n<ul>\n<li>\u6ca1\u6709\u91cd\u8f7d\u3002\u9ed8\u8ba4\u53c2\u6570 &#043; \u5173\u952e\u5b57\u53c2\u6570\u662f Python \u5bf9\u91cd\u8f7d\u7684\u66ff\u4ee3&#xff0c;agent \u5de5\u5177\u5b9a\u4e49\u91cc\u5927\u91cf\u4f7f\u7528\u3002<\/li>\n<li>*parts \u6536\u96c6\u6240\u6709\u4f4d\u7f6e\u53c2\u6570\u4e3a tuple&#xff1b;**context \u6536\u96c6\u6240\u6709\u5173\u952e\u5b57\u53c2\u6570\u4e3a dict\u3002<\/li>\n<li>\u5173\u952e\u5b57\u53c2\u6570\u8ba9\u8c03\u7528\u5904\u81ea\u6587\u6863\u5316&#xff0c;\u6bd4 Java \u4f20\u4e00\u5806\u4f4d\u7f6e\u53c2\u6570\u53ef\u8bfb\u6027\u597d\u5f97\u591a\u3002<\/li>\n<\/ul>\n<h4>\u9ed8\u8ba4\u53c2\u6570\u7684\u53ef\u53d8\u5bf9\u8c61\u9677\u9631<\/h4>\n<p>\u5728 Java \u4e2d&#xff0c;\u65b9\u6cd5\u91cd\u8f7d\u6216\u9ed8\u8ba4\u5904\u7406\u662f\u5728\u8c03\u7528\u65f6\u52a8\u6001\u6267\u884c&#xff1b;\u800c\u5728 Python \u4e2d&#xff1a;<\/p>\n<p>\u51fd\u6570\u7684\u9ed8\u8ba4\u53c2\u6570\u5728\u6a21\u5757\u88ab\u52a0\u8f7d&#xff08;\u51fd\u6570\u5b9a\u4e49\u89e3\u6790&#xff09;\u65f6\u4ec5\u6c42\u503c\u4e00\u6b21&#xff0c;\u5e76\u6301\u4e45\u4fdd\u5b58\u5728\u51fd\u6570\u5bf9\u8c61\u7684 __defaults__ \u5143\u7ec4\u4e2d&#xff01;<\/p>\n<p><span class=\"token comment\"># \u5371\u9669\u4ee3\u7801&#xff1a;\u9ed8\u8ba4\u53c2\u6570\u4f7f\u7528\u4e86\u53ef\u53d8\u5bf9\u8c61 list<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">append_tool<\/span><span class=\"token punctuation\">(<\/span>tool_name<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">,<\/span> tools<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">[<\/span><span class=\"token builtin\">str<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">[<\/span><span class=\"token builtin\">str<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    tools<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span>tool_name<span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> tools<\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>append_tool<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;search&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>     <span class=\"token comment\"># [&#039;search&#039;]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>append_tool<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;calc&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># [&#039;search&#039;, &#039;calc&#039;] \u2014\u2014 \u7b2c\u4e8c\u6b21\u8c03\u7528\u4e32\u6270\u4e86\u7b2c\u4e00\u6b21\u7684\u6570\u636e&#xff01;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>append_tool<span class=\"token punctuation\">.<\/span>__defaults__<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># ([&#039;search&#039;, &#039;calc&#039;],) \u2014\u2014 \u51fd\u6570\u5143\u6570\u636e\u88ab\u76f4\u63a5\u6c61\u67d3&#xff01;<\/span><\/p>\n<p>\u9632\u8303\u51c6\u5219&#xff1a;<br \/>\n\u51fd\u6570\u5f62\u53c2\u7684\u9ed8\u8ba4\u503c\u4e25\u7981\u4f7f\u7528\u4efb\u4f55\u53ef\u53d8\u5bf9\u8c61&#xff08;[], {} \u7b49&#xff09;\u3002\u6807\u51c6\u505a\u6cd5\u662f\u4f7f\u7528\u4e0d\u53ef\u53d8\u7684\u5355\u4f8b None \u4f5c\u4e3a\u9ed8\u8ba4\u5360\u4f4d\u7b26&#xff0c;\u5e76\u5728\u51fd\u6570\u4f53\u5185\u5b89\u5168\u521d\u59cb\u5316&#xff1a;<\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">append_tool_safe<\/span><span class=\"token punctuation\">(<\/span>tool_name<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">,<\/span> tools<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">[<\/span><span class=\"token builtin\">str<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">|<\/span> <span class=\"token boolean\">None<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">[<\/span><span class=\"token builtin\">str<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> tools <span class=\"token keyword\">is<\/span> <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        tools <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><br \/>\n    tools<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span>tool_name<span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> tools<\/p>\n<h3>2.5 \u5b57\u7b26\u4e32\u5904\u7406&#xff1a;f-string<\/h3>\n<p>name<span class=\"token punctuation\">,<\/span> n <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;agent&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><\/p>\n<p><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;hello <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span>              <span class=\"token comment\"># \u2194 String.format(&#034;hello %s&#034;, name)<\/span><br \/>\n<span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>n<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> items&#034;<\/span><\/span>                 <span class=\"token comment\"># \u81ea\u52a8\u8c03\u7528 str()<\/span><br \/>\n<span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>n<span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">03d<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span>                   <span class=\"token comment\"># \u683c\u5f0f\u5316\u89c4\u683c \u2194 %03d \/ String.format<\/span><br \/>\n<span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>price<span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.2f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span>               <span class=\"token comment\"># \u4fdd\u7559\u4e24\u4f4d\u5c0f\u6570<\/span><br \/>\n<span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>value<span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span>                  <span class=\"token comment\"># \u8c03\u8bd5\u8f93\u51fa&#xff1a;value&#061;42<\/span><br \/>\n<span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>json<span class=\"token punctuation\">.<\/span>dumps<span class=\"token punctuation\">(<\/span>obj<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span>         <span class=\"token comment\"># {} \u5185\u53ef\u4ee5\u653e\u4efb\u610f\u8868\u8fbe\u5f0f<\/span><\/p>\n<p>\u5e38\u7528\u65b9\u6cd5\u5bf9\u7167&#xff1a;<\/p>\n<table>\n<tr>JavaPython<\/tr>\n<tbody>\n<tr>\n<td>s.length()<\/td>\n<td>len(s)<\/td>\n<\/tr>\n<tr>\n<td>s.contains(&#034;x&#034;)<\/td>\n<td>&#034;x&#034; in s<\/td>\n<\/tr>\n<tr>\n<td>s.startsWith(&#034;x&#034;)<\/td>\n<td>s.startswith(&#034;x&#034;)<\/td>\n<\/tr>\n<tr>\n<td>s.toUpperCase()<\/td>\n<td>s.upper()<\/td>\n<\/tr>\n<tr>\n<td>s.trim()<\/td>\n<td>s.strip()<\/td>\n<\/tr>\n<tr>\n<td>s.split(&#034;,&#034;)<\/td>\n<td>s.split(&#034;,&#034;)<\/td>\n<\/tr>\n<tr>\n<td>String.join(&#034;,&#034;, list)<\/td>\n<td>&#034;,&#034;.join(list)<\/td>\n<\/tr>\n<tr>\n<td>s.replace(&#034;a&#034;,&#034;b&#034;)<\/td>\n<td>s.replace(&#034;a&#034;, &#034;b&#034;)<\/td>\n<\/tr>\n<tr>\n<td>String.valueOf(i)<\/td>\n<td>str(i)&#xff08;\u8f6c int \u662f int(s)&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>s.isEmpty()<\/td>\n<td>not s<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u591a\u884c\u5b57\u7b26\u4e32\u7528\u4e09\u5f15\u53f7&#xff08;\u5e38\u7528\u4e8e\u4e66\u5199 Prompt&#xff09;&#xff1a;<\/p>\n<p>system_prompt <span class=\"token operator\">&#061;<\/span> <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;You are a helpful assistant.<br \/>\nAnswer in JSON format.<br \/>\nRules:<br \/>\n1. Be concise.<br \/>\n2. Cite sources.&#034;&#034;&#034;<\/span><\/p>\n<h3>2.6 \u63a8\u5bfc\u5f0f \u2194 Java Stream API<\/h3>\n<p>\u63a8\u5bfc\u5f0f\u662f Python \u5bf9 Stream \u5927\u90e8\u5206\u573a\u666f\u7684\u66ff\u4ee3&#xff0c;\u66f4\u7b80\u6d01\u4e14\u662f\u540c\u6b65\u6c42\u503c&#xff1a;<\/p>\n<p>nums <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">4<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">6<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p><span class=\"token comment\"># map<\/span><br \/>\nsquares <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>n <span class=\"token operator\">*<\/span> n <span class=\"token keyword\">for<\/span> n <span class=\"token keyword\">in<\/span> nums<span class=\"token punctuation\">]<\/span>                      <span class=\"token comment\"># nums.stream().map(n -&gt; n*n).toList()<\/span><br \/>\n<span class=\"token comment\"># filter<\/span><br \/>\nevens   <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>n <span class=\"token keyword\">for<\/span> n <span class=\"token keyword\">in<\/span> nums <span class=\"token keyword\">if<\/span> n <span class=\"token operator\">%<\/span> <span class=\"token number\">2<\/span> <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span>            <span class=\"token comment\"># .filter(n -&gt; n%2&#061;&#061;0)<\/span><br \/>\n<span class=\"token comment\"># map &#043; filter<\/span><br \/>\nbig     <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>n <span class=\"token operator\">*<\/span> <span class=\"token number\">10<\/span> <span class=\"token keyword\">for<\/span> n <span class=\"token keyword\">in<\/span> nums <span class=\"token keyword\">if<\/span> n <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">]<\/span>            <span class=\"token comment\"># .filter().map()<\/span><br \/>\n<span class=\"token comment\"># flatMap<\/span><br \/>\nwords   <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>w <span class=\"token keyword\">for<\/span> line <span class=\"token keyword\">in<\/span> lines <span class=\"token keyword\">for<\/span> w <span class=\"token keyword\">in<\/span> line<span class=\"token punctuation\">.<\/span>split<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token comment\"># reduce<\/span><br \/>\ntotal   <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">sum<\/span><span class=\"token punctuation\">(<\/span>nums<span class=\"token punctuation\">)<\/span>                                  <span class=\"token comment\"># .reduce(0, Integer::sum)<\/span><br \/>\nmx      <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">max<\/span><span class=\"token punctuation\">(<\/span>users<span class=\"token punctuation\">,<\/span> key<span class=\"token operator\">&#061;<\/span><span class=\"token keyword\">lambda<\/span> u<span class=\"token punctuation\">:<\/span> u<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;age&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>         <span class=\"token comment\"># .max(comparing(&#8230;))<\/span><br \/>\nany_    <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">any<\/span><span class=\"token punctuation\">(<\/span>n <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">5<\/span> <span class=\"token keyword\">for<\/span> n <span class=\"token keyword\">in<\/span> nums<span class=\"token punctuation\">)<\/span>                   <span class=\"token comment\"># .anyMatch(&#8230;)<\/span><br \/>\nall_    <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">all<\/span><span class=\"token punctuation\">(<\/span>n <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">0<\/span> <span class=\"token keyword\">for<\/span> n <span class=\"token keyword\">in<\/span> nums<span class=\"token punctuation\">)<\/span>                   <span class=\"token comment\"># .allMatch(&#8230;)<\/span><br \/>\ncount   <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">sum<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span> <span class=\"token keyword\">for<\/span> n <span class=\"token keyword\">in<\/span> nums <span class=\"token keyword\">if<\/span> n <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span>              <span class=\"token comment\"># .filter().count()<\/span><\/p>\n<p>\u5b57\u5178\/\u96c6\u5408\u63a8\u5bfc\u5f0f&#xff1a;<\/p>\n<p>users <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;id&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;tom&#034;<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;id&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;jerry&#034;<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p>by_id  <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span>u<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;id&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span> u <span class=\"token keyword\">for<\/span> u <span class=\"token keyword\">in<\/span> users<span class=\"token punctuation\">}<\/span>        <span class=\"token comment\"># \u2194 Collectors.toMap<\/span><br \/>\nnames  <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span>u<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">for<\/span> u <span class=\"token keyword\">in<\/span> users<span class=\"token punctuation\">}<\/span>         <span class=\"token comment\"># set \u63a8\u5bfc\u5f0f<\/span><\/p>\n<p>\u4f55\u65f6\u4ecd\u7528 Stream \u98ce\u683c&#xff1a;Python \u7684 itertools \/ map \/ filter \u5b58\u5728&#xff0c;\u4f46\u56e2\u961f\u89c4\u8303\u666e\u904d\u9996\u9009\u63a8\u5bfc\u5f0f&#xff1b;\u8d85\u957f\u94fe\u5f0f\u60f0\u6027\u5904\u7406\u624d\u8003\u8651\u751f\u6210\u5668&#xff08;\u7b2c 4 \u7ae0&#xff09;\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\/* MD \/ \u5bcc\u6587\u672c\u4e2d\u7684 .toc\uff08\u542b\u535a\u5ba2\u56ed\u642c\u5bb6\u7b49\u5d4c\u5957\u7ed3\u6784\uff09\uff1b.toc-box \u5728\u4fa7\u680f\uff0c\u4e0d\u53d7\u5f71\u54cd *\/#content_views .toc,\/* \u7f16\u8f91\u5668\u5e38\u5728\u76ee\u5f55\u524d\u540e\u63d2\u5165\u7a7a p\uff08:empty \u4ecd\u5360 20px\uff09\uff0c\u4e00\u5e76\u53bb\u6389\u907f\u514d\u9876\u7a7a\u9699 *\/#content_views.markdown_views &gt; p:empty:has(+ .toc),#content_views.markdown_views &gt; .toc + p:empty,\/* \u5bcc\u6587\u672c\u65e7\u7248\u76ee\u5f55\u6807\u8bb0 *\/#content<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[99,81,292,190],"topic":[],"class_list":["post-119691","post","type-post","status-publish","format-standard","hentry","category-server","tag-java","tag-python","tag-292","tag-190"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Java \u8f6c Python \u540e\u7aef 01: \u73b0\u4ee3\u5de5\u7a0b\u5e95\u5ea7\u4e0e\u6838\u5fc3\u8bed\u6cd5\u907f\u5751 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/119691.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java \u8f6c Python \u540e\u7aef 01: \u73b0\u4ee3\u5de5\u7a0b\u5e95\u5ea7\u4e0e\u6838\u5fc3\u8bed\u6cd5\u907f\u5751 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\/* MD \/ \u5bcc\u6587\u672c\u4e2d\u7684 .toc\uff08\u542b\u535a\u5ba2\u56ed\u642c\u5bb6\u7b49\u5d4c\u5957\u7ed3\u6784\uff09\uff1b.toc-box \u5728\u4fa7\u680f\uff0c\u4e0d\u53d7\u5f71\u54cd *\/#content_views .toc,\/* \u7f16\u8f91\u5668\u5e38\u5728\u76ee\u5f55\u524d\u540e\u63d2\u5165\u7a7a p\uff08:empty \u4ecd\u5360 20px\uff09\uff0c\u4e00\u5e76\u53bb\u6389\u907f\u514d\u9876\u7a7a\u9699 *\/#content_views.markdown_views &gt; p:empty:has(+ .toc),#content_views.markdown_views &gt; .toc + p:empty,\/* \u5bcc\u6587\u672c\u65e7\u7248\u76ee\u5f55\u6807\u8bb0 *\/#content\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/119691.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-29T22:48:25+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/119691.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/119691.html\",\"name\":\"Java \u8f6c Python \u540e\u7aef 01: \u73b0\u4ee3\u5de5\u7a0b\u5e95\u5ea7\u4e0e\u6838\u5fc3\u8bed\u6cd5\u907f\u5751 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-10-29T22:48:25+00:00\",\"dateModified\":\"2026-10-29T22:48:25+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/119691.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/119691.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/119691.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java \u8f6c Python \u540e\u7aef 01: \u73b0\u4ee3\u5de5\u7a0b\u5e95\u5ea7\u4e0e\u6838\u5fc3\u8bed\u6cd5\u907f\u5751\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Java \u8f6c Python \u540e\u7aef 01: \u73b0\u4ee3\u5de5\u7a0b\u5e95\u5ea7\u4e0e\u6838\u5fc3\u8bed\u6cd5\u907f\u5751 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/119691.html","og_locale":"zh_CN","og_type":"article","og_title":"Java \u8f6c Python \u540e\u7aef 01: \u73b0\u4ee3\u5de5\u7a0b\u5e95\u5ea7\u4e0e\u6838\u5fc3\u8bed\u6cd5\u907f\u5751 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\/* MD \/ \u5bcc\u6587\u672c\u4e2d\u7684 .toc\uff08\u542b\u535a\u5ba2\u56ed\u642c\u5bb6\u7b49\u5d4c\u5957\u7ed3\u6784\uff09\uff1b.toc-box \u5728\u4fa7\u680f\uff0c\u4e0d\u53d7\u5f71\u54cd *\/#content_views .toc,\/* \u7f16\u8f91\u5668\u5e38\u5728\u76ee\u5f55\u524d\u540e\u63d2\u5165\u7a7a p\uff08:empty \u4ecd\u5360 20px\uff09\uff0c\u4e00\u5e76\u53bb\u6389\u907f\u514d\u9876\u7a7a\u9699 *\/#content_views.markdown_views &gt; p:empty:has(+ .toc),#content_views.markdown_views &gt; .toc + p:empty,\/* \u5bcc\u6587\u672c\u65e7\u7248\u76ee\u5f55\u6807\u8bb0 *\/#content","og_url":"https:\/\/www.wsisp.com\/helps\/119691.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-10-29T22:48:25+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"10 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/119691.html","url":"https:\/\/www.wsisp.com\/helps\/119691.html","name":"Java \u8f6c Python \u540e\u7aef 01: \u73b0\u4ee3\u5de5\u7a0b\u5e95\u5ea7\u4e0e\u6838\u5fc3\u8bed\u6cd5\u907f\u5751 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-10-29T22:48:25+00:00","dateModified":"2026-10-29T22:48:25+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/119691.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/119691.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/119691.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"Java \u8f6c Python \u540e\u7aef 01: \u73b0\u4ee3\u5de5\u7a0b\u5e95\u5ea7\u4e0e\u6838\u5fc3\u8bed\u6cd5\u907f\u5751"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/119691","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=119691"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/119691\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=119691"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=119691"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=119691"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=119691"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}