{"id":83608,"date":"2026-07-26T02:37:52","date_gmt":"2026-07-25T18:37:52","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/83608.html"},"modified":"2026-07-26T02:37:52","modified_gmt":"2026-07-25T18:37:52","slug":"python%e5%9f%ba%e7%a1%80%e8%af%ad%e6%b3%95%e6%95%99%e7%a8%8b","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/83608.html","title":{"rendered":"Python\u57fa\u7840\u8bed\u6cd5\u6559\u7a0b"},"content":{"rendered":"<h2>&#x1f40d; Python \u57fa\u7840\u8bed\u6cd5\u8fd9\u4e00\u7bc7\u5c31\u591f\u4e86<\/h2>\n<p>\u9002\u7528\u7248\u672c: Python 3.8&#043; \u76ee\u6807\u8bfb\u8005: \u521d\u5b66\u8005\u53ca\u6709\u4e00\u5b9a\u57fa\u7840\u60f3\u8981\u7cfb\u7edf\u590d\u4e60\u7684\u5f00\u53d1\u8005 \u6700\u540e\u66f4\u65b0: 2026-07-21<\/p>\n<hr \/>\n<h3>\u76ee\u5f55<\/h3>\n<li>Python \u7b80\u4ecb<\/li>\n<li>\u73af\u5883\u642d\u5efa\u4e0e\u7b2c\u4e00\u4e2a\u7a0b\u5e8f<\/li>\n<li>\u53d8\u91cf\u4e0e\u6570\u636e\u7c7b\u578b<\/li>\n<li>\u8fd0\u7b97\u7b26<\/li>\n<li>\u5b57\u7b26\u4e32\u8be6\u89e3<\/li>\n<li>\u5217\u8868&#xff08;List&#xff09;<\/li>\n<li>\u5143\u7ec4&#xff08;Tuple&#xff09;<\/li>\n<li>\u5b57\u5178&#xff08;Dictionary&#xff09;<\/li>\n<li>\u96c6\u5408&#xff08;Set&#xff09;<\/li>\n<li>\u6761\u4ef6\u5224\u65ad<\/li>\n<li>\u5faa\u73af\u8bed\u53e5<\/li>\n<li>\u51fd\u6570<\/li>\n<li>Lambda \u8868\u8fbe\u5f0f<\/li>\n<li>\u5217\u8868\u63a8\u5bfc\u5f0f\u4e0e\u751f\u6210\u5668\u8868\u8fbe\u5f0f<\/li>\n<li>\u8fed\u4ee3\u5668\u4e0e\u751f\u6210\u5668<\/li>\n<li>\u88c5\u9970\u5668<\/li>\n<li>\u6a21\u5757\u4e0e\u5305<\/li>\n<li>\u6587\u4ef6\u64cd\u4f5c<\/li>\n<li>\u5f02\u5e38\u5904\u7406<\/li>\n<li>\u9762\u5411\u5bf9\u8c61\u7f16\u7a0b<\/li>\n<li>\u5e38\u7528\u5185\u7f6e\u51fd\u6570<\/li>\n<li>\u7c7b\u578b\u6ce8\u89e3<\/li>\n<li>\u865a\u62df\u73af\u5883\u4e0e\u5305\u7ba1\u7406<\/li>\n<li>\u7f16\u7801\u89c4\u8303&#xff08;PEP 8&#xff09;<\/li>\n<li>\u7efc\u5408\u7ec3\u4e60<\/li>\n<hr \/>\n<h3>1. Python \u7b80\u4ecb<\/h3>\n<h4>1.1 \u4ec0\u4e48\u662f Python&#xff1f;<\/h4>\n<p>Python \u662f\u4e00\u79cd\u9ad8\u7ea7\u3001\u89e3\u91ca\u578b\u3001\u9762\u5411\u5bf9\u8c61\u7684\u7f16\u7a0b\u8bed\u8a00&#xff0c;\u7531 Guido van Rossum \u4e8e 1991 \u5e74\u53d1\u5e03\u3002\u5b83\u4ee5\u7b80\u6d01\u6613\u8bfb\u7684\u8bed\u6cd5\u548c\u5f3a\u5927\u7684\u6807\u51c6\u5e93\u800c\u95fb\u540d\u3002<\/p>\n<h4>1.2 Python \u7684\u7279\u70b9<\/h4>\n<table>\n<tr>\u7279\u70b9\u8bf4\u660e<\/tr>\n<tbody>\n<tr>\n<td>\u7b80\u6d01\u6613\u8bfb<\/td>\n<td>\u4f7f\u7528\u7f29\u8fdb\u8868\u793a\u4ee3\u7801\u5757&#xff0c;\u8bed\u6cd5\u63a5\u8fd1\u81ea\u7136\u8bed\u8a00<\/td>\n<\/tr>\n<tr>\n<td>\u89e3\u91ca\u578b\u8bed\u8a00<\/td>\n<td>\u65e0\u9700\u7f16\u8bd1&#xff0c;\u9010\u884c\u89e3\u91ca\u6267\u884c<\/td>\n<\/tr>\n<tr>\n<td>\u52a8\u6001\u7c7b\u578b<\/td>\n<td>\u53d8\u91cf\u65e0\u9700\u58f0\u660e\u7c7b\u578b&#xff0c;\u8fd0\u884c\u65f6\u81ea\u52a8\u63a8\u65ad<\/td>\n<\/tr>\n<tr>\n<td>\u8de8\u5e73\u53f0<\/td>\n<td>\u652f\u6301 Windows\u3001macOS\u3001Linux \u7b49<\/td>\n<\/tr>\n<tr>\n<td>\u4e30\u5bcc\u7684\u5e93<\/td>\n<td>\u62e5\u6709\u5e9e\u5927\u7684\u6807\u51c6\u5e93\u548c\u7b2c\u4e09\u65b9\u751f\u6001<\/td>\n<\/tr>\n<tr>\n<td>\u591a\u8303\u5f0f<\/td>\n<td>\u652f\u6301\u9762\u5411\u5bf9\u8c61\u3001\u8fc7\u7a0b\u5f0f\u3001\u51fd\u6570\u5f0f\u7f16\u7a0b<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>1.3 Python \u7684\u5e94\u7528\u9886\u57df<\/h4>\n<ul>\n<li>Web \u5f00\u53d1: Django\u3001Flask\u3001FastAPI<\/li>\n<li>\u6570\u636e\u79d1\u5b66\u4e0e\u4eba\u5de5\u667a\u80fd: NumPy\u3001Pandas\u3001PyTorch\u3001TensorFlow<\/li>\n<li>\u81ea\u52a8\u5316\u8fd0\u7ef4: Ansible\u3001SaltStack<\/li>\n<li>\u7f51\u7edc\u722c\u866b: Scrapy\u3001BeautifulSoup\u3001Selenium<\/li>\n<li>\u684c\u9762\u5e94\u7528: PyQt\u3001Tkinter<\/li>\n<li>\u6e38\u620f\u5f00\u53d1: Pygame<\/li>\n<\/ul>\n<hr \/>\n<h3>2. \u73af\u5883\u642d\u5efa\u4e0e\u7b2c\u4e00\u4e2a\u7a0b\u5e8f<\/h3>\n<h4>2.1 \u5b89\u88c5 Python<\/h4>\n<p>\u4ece python.org \u4e0b\u8f7d\u5b89\u88c5\u5305\u3002\u5b89\u88c5\u65f6\u52a1\u5fc5\u52fe\u9009 \u201cAdd Python to PATH\u201d\u3002<\/p>\n<p>\u9a8c\u8bc1\u5b89\u88c5&#xff1a;<\/p>\n<p>python <span class=\"token parameter variable\">&#8211;version<\/span><br \/>\n<span class=\"token comment\"># \u8f93\u51fa\u793a\u4f8b: Python 3.11.5<\/span><\/p>\n<h4>2.2 \u7b2c\u4e00\u4e2a\u7a0b\u5e8f&#xff1a;Hello, World!<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u521b\u5efa\u7b2c\u4e00\u4e2a Python \u7a0b\u5e8f&#xff0c;\u7528 print() \u51fd\u6570\u5728\u5c4f\u5e55\u4e0a\u8f93\u51fa\u6587\u5b57&#xff1a;<\/p>\n<p><span class=\"token comment\"># hello.py<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Hello, World!&#034;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u8fd0\u884c\u540e\u5c4f\u5e55\u4e0a\u5c06\u663e\u793a Hello, World! \u2014\u2014\u4f60\u5df2\u7ecf\u6210\u529f\u7f16\u5199\u4e86\u7b2c\u4e00\u4e2a Python \u7a0b\u5e8f\u3002<\/p>\n<p>\u8fd0\u884c&#xff1a;<\/p>\n<p>python hello.py<br \/>\n<span class=\"token comment\"># \u8f93\u51fa: Hello, World!<\/span><\/p>\n<h4>2.3 \u4ea4\u4e92\u5f0f\u89e3\u91ca\u5668&#xff08;REPL&#xff09;<\/h4>\n<p>\u5728\u7ec8\u7aef\u8f93\u5165 python \u5373\u53ef\u8fdb\u5165\u4ea4\u4e92\u6a21\u5f0f&#xff1a;<\/p>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5728\u7ec8\u7aef\u8f93\u5165 python \u8fdb\u5165\u4ea4\u4e92\u6a21\u5f0f&#xff0c;\u53ef\u4ee5\u9010\u884c\u8f93\u5165\u4ee3\u7801\u5e76\u7acb\u5373\u770b\u5230\u7ed3\u679c&#xff0c;\u9002\u5408\u5feb\u901f\u6d4b\u8bd5&#xff1a;<\/p>\n<p><span class=\"token operator\">&gt;&gt;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token number\">1<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">2<\/span><br \/>\n<span class=\"token number\">3<\/span><br \/>\n<span class=\"token operator\">&gt;&gt;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u4f60\u597d&#xff0c;\u4e16\u754c&#xff01;&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n\u4f60\u597d&#xff0c;\u4e16\u754c&#xff01;<br \/>\n<span class=\"token operator\">&gt;&gt;<\/span><span class=\"token operator\">&gt;<\/span> exit<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u9000\u51fa\u4ea4\u4e92\u6a21\u5f0f<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;REPL \u662f\u5b66\u4e60 Python \u7684\u5229\u5668\u2014\u2014\u6bcf\u5b66\u4e00\u4e2a\u65b0\u8bed\u6cd5\u90fd\u53ef\u4ee5\u5148\u5728\u4ea4\u4e92\u73af\u5883\u4e2d\u8bd5\u4e00\u8bd5\u3002\u8f93\u5165 exit() \u5373\u53ef\u9000\u51fa\u3002<\/p>\n<h4>2.4 IDE \u63a8\u8350<\/h4>\n<table>\n<tr>IDE\u7279\u70b9<\/tr>\n<tbody>\n<tr>\n<td>VS Code<\/td>\n<td>\u514d\u8d39\u3001\u8f7b\u91cf\u3001\u63d2\u4ef6\u4e30\u5bcc&#xff08;\u63a8\u8350&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>PyCharm<\/td>\n<td>\u4e13\u4e1a\u7684 Python IDE&#xff0c;\u529f\u80fd\u5f3a\u5927<\/td>\n<\/tr>\n<tr>\n<td>Jupyter Notebook<\/td>\n<td>\u9002\u5408\u6570\u636e\u5206\u6790\u548c\u79d1\u5b66\u8ba1\u7b97<\/td>\n<\/tr>\n<tr>\n<td>IDLE<\/td>\n<td>Python \u81ea\u5e26&#xff0c;\u5165\u95e8\u591f\u7528<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h3>3. \u53d8\u91cf\u4e0e\u6570\u636e\u7c7b\u578b<\/h3>\n<h4>3.1 \u53d8\u91cf\u547d\u540d\u89c4\u5219<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;Python \u53d8\u91cf\u540d\u7531\u5b57\u6bcd\u3001\u6570\u5b57\u548c\u4e0b\u5212\u7ebf\u7ec4\u6210&#xff0c;\u4f46\u4e0d\u80fd\u4ee5\u6570\u5b57\u5f00\u5934&#xff0c;\u4e5f\u4e0d\u80fd\u4f7f\u7528\u5173\u952e\u5b57\u3002\u6765\u770b\u51e0\u4e2a\u4f8b\u5b50&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u2705 \u5408\u6cd5\u7684\u53d8\u91cf\u540d<\/span><br \/>\nname <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Alice&#034;<\/span><br \/>\nage <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">25<\/span><br \/>\nfirst_name <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Bob&#034;<\/span><br \/>\n_name <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;hidden&#034;<\/span><br \/>\nuser123 <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;valid&#034;<\/span><\/p>\n<p><span class=\"token comment\"># \u274c \u975e\u6cd5\u7684\u53d8\u91cf\u540d<\/span><br \/>\n<span class=\"token comment\"># 123abc &#061; &#034;error&#034;     # \u4e0d\u80fd\u4ee5\u6570\u5b57\u5f00\u5934<\/span><br \/>\n<span class=\"token comment\"># my-name &#061; &#034;error&#034;     # \u4e0d\u80fd\u5305\u542b\u8fde\u5b57\u7b26<\/span><br \/>\n<span class=\"token comment\"># class &#061; &#034;error&#034;       # \u4e0d\u80fd\u4f7f\u7528\u5173\u952e\u5b57<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u8bb0\u4f4f\u4e09\u6761\u6838\u5fc3\u89c4\u5219&#xff1a;\u4e0d\u80fd\u6570\u5b57\u5f00\u5934\u3001\u4e0d\u80fd\u7528\u5173\u952e\u5b57\u3001\u533a\u5206\u5927\u5c0f\u5199\u3002\u6309\u7167 snake_case \u98ce\u683c\u547d\u540d\u662f\u6700\u4f73\u5b9e\u8df5\u3002<\/p>\n<p>\u547d\u540d\u89c4\u8303&#xff08;PEP 8&#xff09;:<\/p>\n<ul>\n<li>\u53d8\u91cf\u548c\u51fd\u6570&#xff1a;\u5c0f\u5199 &#043; \u4e0b\u5212\u7ebf snake_case<\/li>\n<li>\u7c7b\u540d&#xff1a;\u5927\u9a7c\u5cf0 PascalCase<\/li>\n<li>\u5e38\u91cf&#xff1a;\u5168\u5927\u5199 UPPER_CASE<\/li>\n<\/ul>\n<h4>3.2 Python \u5173\u952e\u5b57<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;Python \u4fdd\u7559\u4e86\u4e00\u4e9b\u6709\u7279\u6b8a\u542b\u4e49\u7684\u5355\u8bcd&#xff08;\u5173\u952e\u5b57&#xff09;&#xff0c;\u4e0d\u80fd\u7528\u4f5c\u53d8\u91cf\u540d\u3002\u901a\u8fc7 keyword \u6a21\u5757\u53ef\u4ee5\u67e5\u770b\u5b8c\u6574\u5217\u8868&#xff1a;<\/p>\n<p><span class=\"token keyword\">import<\/span> keyword<br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>keyword<span class=\"token punctuation\">.<\/span>kwlist<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token comment\"># [&#039;False&#039;, &#039;None&#039;, &#039;True&#039;, &#039;and&#039;, &#039;as&#039;, &#039;assert&#039;, &#039;async&#039;, &#039;await&#039;,<\/span><br \/>\n<span class=\"token comment\">#  &#039;break&#039;, &#039;class&#039;, &#039;continue&#039;, &#039;def&#039;, &#039;del&#039;, &#039;elif&#039;, &#039;else&#039;, &#039;except&#039;,<\/span><br \/>\n<span class=\"token comment\">#  &#039;finally&#039;, &#039;for&#039;, &#039;from&#039;, &#039;global&#039;, &#039;if&#039;, &#039;import&#039;, &#039;in&#039;, &#039;is&#039;,<\/span><br \/>\n<span class=\"token comment\">#  &#039;lambda&#039;, &#039;nonlocal&#039;, &#039;not&#039;, &#039;or&#039;, &#039;pass&#039;, &#039;raise&#039;, &#039;return&#039;,<\/span><br \/>\n<span class=\"token comment\">#  &#039;try&#039;, &#039;while&#039;, &#039;with&#039;, &#039;yield&#039;]<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u603b\u5171 35 \u4e2a\u5173\u952e\u5b57&#xff08;Python 3.8&#043;&#xff09;&#xff0c;\u50cf if\u3001for\u3001class\u3001def \u7b49\u90fd\u5728\u5176\u4e2d&#xff0c;\u53d6\u540d\u65f6\u6ce8\u610f\u907f\u5f00\u3002<\/p>\n<h4>3.3 \u57fa\u672c\u6570\u636e\u7c7b\u578b<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;Python \u6709\u516d\u5927\u57fa\u672c\u6570\u636e\u7c7b\u578b&#xff1a;\u6574\u6570(int)\u3001\u6d6e\u70b9\u6570(float)\u3001\u590d\u6570(complex)\u3001\u5e03\u5c14\u503c(bool)\u3001\u5b57\u7b26\u4e32(str)\u548c\u7a7a\u503c(None)\u3002\u4e0b\u9762\u7684\u4ee3\u7801\u5c55\u793a\u4e86\u6bcf\u79cd\u7c7b\u578b\u7684\u7528\u6cd5&#xff1a;<\/p>\n<p><span class=\"token comment\"># &#8212; \u6570\u503c\u578b &#8212;<\/span><br \/>\n<span class=\"token comment\"># int&#xff08;\u6574\u6570&#xff09;&#xff1a;\u65e0\u5927\u5c0f\u9650\u5236<\/span><br \/>\na <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">10<\/span><br \/>\nb <span class=\"token operator\">&#061;<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token number\">5<\/span><br \/>\nbig <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">999999999999999999999999999999<\/span><\/p>\n<p><span class=\"token comment\"># float&#xff08;\u6d6e\u70b9\u6570&#xff09;&#xff1a;\u53cc\u7cbe\u5ea6&#xff0c;\u7ea6 15-17 \u4f4d\u6709\u6548\u6570\u5b57<\/span><br \/>\npi <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">3.14159<\/span><br \/>\nsci <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1.5e-3<\/span>    <span class=\"token comment\"># \u79d1\u5b66\u8ba1\u6570\u6cd5 &#061; 0.0015<\/span><\/p>\n<p><span class=\"token comment\"># complex&#xff08;\u590d\u6570&#xff09;<\/span><br \/>\nc <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">3<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">4j<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>c<span class=\"token punctuation\">.<\/span>real<span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># 3.0<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>c<span class=\"token punctuation\">.<\/span>imag<span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># 4.0<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u5e03\u5c14\u578b &#8212;<\/span><br \/>\n<span class=\"token comment\"># bool&#xff1a;True \u6216 False&#xff08;\u9996\u5b57\u6bcd\u5927\u5199&#xff09;<\/span><br \/>\nis_active <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">True<\/span><br \/>\nis_empty <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">False<\/span><br \/>\n<span class=\"token comment\"># bool \u662f int \u7684\u5b50\u7c7b&#xff1a;True &#061;&#061; 1, False &#061;&#061; 0<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">True<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token boolean\">True<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># 2<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">isinstance<\/span><span class=\"token punctuation\">(<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># True<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u5b57\u7b26\u4e32 &#8212;<\/span><br \/>\n<span class=\"token comment\"># str&#xff1a;\u4f7f\u7528\u5355\u5f15\u53f7\u6216\u53cc\u5f15\u53f7<\/span><br \/>\nname <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#039;Alice&#039;<\/span><br \/>\nmessage <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Hello&#034;<\/span><br \/>\nmultiline <span class=\"token operator\">&#061;<\/span> <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u7b2c\u4e00\u884c<br \/>\n\u7b2c\u4e8c\u884c<br \/>\n\u7b2c\u4e09\u884c&#034;&#034;&#034;<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; None \u7c7b\u578b &#8212;<\/span><br \/>\n<span class=\"token comment\"># None&#xff1a;\u8868\u793a&#034;\u6ca1\u6709\u503c&#034;\u6216&#034;\u7a7a&#034;<\/span><br \/>\nresult <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">None<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;Python \u7684\u6574\u6570\u6ca1\u6709\u5927\u5c0f\u9650\u5236&#xff0c;\u5e03\u5c14\u503c\u662f int \u7684\u5b50\u7c7b&#xff08;True&#061;&#061;1&#xff09;&#xff0c;None \u8868\u793a\u65e0\u503c\u3002\u8fd9\u4e9b\u90fd\u662f\u65e5\u5e38\u7f16\u7a0b\u6700\u57fa\u7840\u7684\u6570\u636e\u7c7b\u578b\u3002<\/p>\n<h4>3.4 \u7c7b\u578b\u68c0\u67e5\u4e0e\u8f6c\u6362<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u4f7f\u7528 type() \u67e5\u770b\u53d8\u91cf\u7c7b\u578b&#xff0c;isinstance() \u68c0\u67e5\u7ee7\u627f\u5173\u7cfb&#xff0c;\u4ee5\u53ca\u7528 int()\u3001float()\u3001str() \u7b49\u51fd\u6570\u5728\u4e0d\u540c\u7c7b\u578b\u95f4\u8f6c\u6362&#xff1a;<\/p>\n<p><span class=\"token comment\"># type() \u67e5\u770b\u7c7b\u578b<\/span><br \/>\nx <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">42<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">type<\/span><span class=\"token punctuation\">(<\/span>x<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>          <span class=\"token comment\"># &lt;class &#039;int&#039;&gt;<\/span><\/p>\n<p><span class=\"token comment\"># isinstance() \u68c0\u67e5\u7c7b\u578b<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">isinstance<\/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 punctuation\">)<\/span>    <span class=\"token comment\"># True<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">isinstance<\/span><span class=\"token punctuation\">(<\/span>x<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token builtin\">int<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># True&#xff08;\u591a\u79cd\u7c7b\u578b\u4e4b\u4e00&#xff09;<\/span><\/p>\n<p><span class=\"token comment\"># \u7c7b\u578b\u8f6c\u6362&#xff08;\u663e\u5f0f\u8f6c\u6362&#xff09;<\/span><br \/>\nnum_str <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;123&#034;<\/span><br \/>\nnum <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">(<\/span>num_str<span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># \u5b57\u7b26\u4e32 -&gt; \u6574\u6570: 123<\/span><br \/>\nf <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;3.14&#034;<\/span><span class=\"token punctuation\">)<\/span>        <span class=\"token comment\"># \u5b57\u7b26\u4e32 -&gt; \u6d6e\u70b9\u6570: 3.14<\/span><br \/>\ns <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">100<\/span><span class=\"token punctuation\">)<\/span>             <span class=\"token comment\"># \u6574\u6570 -&gt; \u5b57\u7b26\u4e32: &#034;100&#034;<\/span><br \/>\nb <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">bool<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span>              <span class=\"token comment\"># -&gt; True &#xff08;\u975e0\u4e3aTrue&#xff0c;0\/\u7a7a\/None\u4e3aFalse&#xff09;<\/span><br \/>\nlst <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;hello&#034;<\/span><span class=\"token punctuation\">)<\/span>      <span class=\"token comment\"># \u5b57\u7b26\u4e32 -&gt; \u5217\u8868: [&#039;h&#039;, &#039;e&#039;, &#039;l&#039;, &#039;l&#039;, &#039;o&#039;]<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;isinstance() \u6bd4 type() \u66f4\u7075\u6d3b&#xff08;\u652f\u6301\u5b50\u7c7b\u5224\u65ad&#xff09;&#xff0c;\u663e\u5f0f\u7c7b\u578b\u8f6c\u6362\u65f6\u8981\u786e\u4fdd\u6570\u636e\u683c\u5f0f\u6b63\u786e&#xff0c;\u5426\u5219\u4f1a\u629b\u51fa ValueError\u3002<\/p>\n<h4>3.5 \u52a8\u6001\u7c7b\u578b<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;Python \u662f\u52a8\u6001\u7c7b\u578b\u8bed\u8a00&#xff0c;\u540c\u4e00\u4e2a\u53d8\u91cf\u53ef\u4ee5\u5728\u4e0d\u540c\u65f6\u523b\u6307\u5411\u4e0d\u540c\u7c7b\u578b\u7684\u503c&#xff0c;\u65e0\u9700\u63d0\u524d\u58f0\u660e&#xff1a;<\/p>\n<p><span class=\"token comment\"># Python \u662f\u52a8\u6001\u7c7b\u578b\u8bed\u8a00&#xff0c;\u53d8\u91cf\u53ef\u4ee5\u968f\u65f6\u6539\u53d8\u7c7b\u578b<\/span><br \/>\nx <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">10<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">type<\/span><span class=\"token punctuation\">(<\/span>x<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># &lt;class &#039;int&#039;&gt;<\/span><\/p>\n<p>x <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;hello&#034;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">type<\/span><span class=\"token punctuation\">(<\/span>x<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># &lt;class &#039;str&#039;&gt;<\/span><\/p>\n<p>x <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><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">type<\/span><span class=\"token punctuation\">(<\/span>x<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># &lt;class &#039;list&#039;&gt;<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u52a8\u6001\u7c7b\u578b\u8ba9\u4ee3\u7801\u66f4\u7075\u6d3b\u7b80\u6d01&#xff0c;\u4f46\u4e5f\u610f\u5473\u7740\u8981\u5c0f\u5fc3\u7c7b\u578b\u9519\u8bef\u2014\u2014\u8fd9\u4e5f\u662f\u7c7b\u578b\u6ce8\u89e3&#xff08;\u7b2c22\u7ae0&#xff09;\u5b58\u5728\u7684\u610f\u4e49\u3002<\/p>\n<h4>3.6 \u53ef\u53d8\u4e0e\u4e0d\u53ef\u53d8\u7c7b\u578b<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u7406\u89e3\u53ef\u53d8&#xff08;list\/dict\/set&#xff09;\u548c\u4e0d\u53ef\u53d8&#xff08;int\/str\/tuple&#xff09;\u7c7b\u578b\u7684\u533a\u522b&#xff0c;\u662f\u638c\u63e1 Python \u5185\u5b58\u884c\u4e3a\u7684\u5173\u952e&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u4e0d\u53ef\u53d8\u7c7b\u578b&#xff1a;int, float, complex, str, tuple, frozenset, bool<\/span><br \/>\na <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;hello&#034;<\/span><br \/>\n<span class=\"token comment\"># a[0] &#061; &#034;H&#034;     # \u274c TypeError: &#039;str&#039; object does not support item assignment<\/span><\/p>\n<p><span class=\"token comment\"># \u53ef\u53d8\u7c7b\u578b&#xff1a;list, dict, set, bytearray<\/span><br \/>\nb <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><br \/>\nb<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">10<\/span>         <span class=\"token comment\"># \u2705 \u53ef\u4ee5\u4fee\u6539<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>b<span class=\"token punctuation\">)<\/span>          <span class=\"token comment\"># [10, 2, 3]<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u4e0d\u53ef\u53d8\u5bf9\u8c61\u65e0\u6cd5\u539f\u5730\u4fee\u6539&#xff0c;\u4efb\u4f55\u4fee\u6539\u64cd\u4f5c\u5b9e\u9645\u662f\u521b\u5efa\u65b0\u5bf9\u8c61&#xff1b;\u53ef\u53d8\u5bf9\u8c61\u5219\u53ef\u4ee5\u76f4\u63a5\u6539\u53d8\u5176\u5185\u5bb9\u3002\u8fd9\u5f71\u54cd\u4e86\u8d4b\u503c\u3001\u4f20\u53c2\u548c\u62f7\u8d1d\u7684\u884c\u4e3a\u3002<\/p>\n<hr \/>\n<h3>4. \u8fd0\u7b97\u7b26<\/h3>\n<h4>4.1 \u7b97\u672f\u8fd0\u7b97\u7b26<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;Python \u652f\u6301\u52a0\u51cf\u4e58\u9664\u3001\u6574\u9664\u3001\u53d6\u4f59\u3001\u5e42\u8fd0\u7b97\u7b49\u57fa\u672c\u7b97\u672f\u8fd0\u7b97&#xff0c;\u4ee5\u53ca abs()\u3001round()\u3001divmod() \u7b49\u5185\u7f6e\u6570\u5b66\u51fd\u6570&#xff1a;<\/p>\n<p>a<span class=\"token punctuation\">,<\/span> b <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">&#043;<\/span> b<span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># 13  \u52a0<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">&#8211;<\/span> b<span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># 7   \u51cf<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">*<\/span> b<span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># 30  \u4e58<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">\/<\/span> b<span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># 3.3333333333333335  \u9664&#xff08;\u603b\u662f\u8fd4\u56defloat&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">\/\/<\/span> b<span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># 3   \u6574\u9664&#xff08;\u5411\u4e0b\u53d6\u6574&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">%<\/span> b<span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># 1   \u53d6\u4f59<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">**<\/span> b<span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># 1000  \u5e42\u8fd0\u7b97<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">abs<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">&#8211;<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 5   \u7edd\u5bf9\u503c<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">round<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">3.14159<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 3.14  \u56db\u820d\u4e94\u5165<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">pow<\/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 punctuation\">)<\/span>            <span class=\"token comment\"># 8   \u7b49\u4ef7\u4e8e 2**3<\/span><\/p>\n<p><span class=\"token comment\"># divmod&#xff1a;\u540c\u65f6\u8fd4\u56de\u5546\u548c\u4f59\u6570<\/span><br \/>\nquotient<span class=\"token punctuation\">,<\/span> remainder <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">divmod<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>quotient<span class=\"token punctuation\">,<\/span> remainder<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 3 1<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u6ce8\u610f \/ \u603b\u662f\u8fd4\u56de float&#xff0c;\/\/ \u662f\u5411\u4e0b\u53d6\u6574\u3002divmod() \u540c\u65f6\u8fd4\u56de\u5546\u548c\u4f59\u6570&#xff0c;\u975e\u5e38\u5b9e\u7528\u3002<\/p>\n<h4>4.2 \u6bd4\u8f83\u8fd0\u7b97\u7b26<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u6bd4\u8f83\u8fd0\u7b97\u7b26\u7528\u4e8e\u6bd4\u8f83\u4e24\u4e2a\u503c\u7684\u5927\u5c0f\u5173\u7cfb&#xff0c;\u8fd4\u56de\u5e03\u5c14\u503c\u3002Python \u8fd8\u652f\u6301\u94fe\u5f0f\u6bd4\u8f83\u548c is \/ &#061;&#061; \u4e24\u79cd\u76f8\u7b49\u6027\u68c0\u67e5&#xff1a;<\/p>\n<p>a<span class=\"token punctuation\">,<\/span> b <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">20<\/span><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">&#061;&#061;<\/span> b<span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># False  \u7b49\u4e8e<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">!&#061;<\/span> b<span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># True   \u4e0d\u7b49\u4e8e<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">&gt;<\/span> b<span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># False  \u5927\u4e8e<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">&lt;<\/span> b<span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># True   \u5c0f\u4e8e<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">&gt;&#061;<\/span> b<span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># False  \u5927\u4e8e\u7b49\u4e8e<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">&lt;&#061;<\/span> b<span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># True   \u5c0f\u4e8e\u7b49\u4e8e<\/span><\/p>\n<p><span class=\"token comment\"># \u94fe\u5f0f\u6bd4\u8f83&#xff08;Python \u7279\u6709&#xff09;<\/span><br \/>\nx <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">5<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span> <span class=\"token operator\">&lt;<\/span> x <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># True&#xff08;\u7b49\u4ef7\u4e8e 0 &lt; x and x &lt; 10&#xff09;<\/span><\/p>\n<p><span class=\"token comment\"># is \u548c &#061;&#061; \u7684\u533a\u522b<\/span><br \/>\n<span class=\"token comment\"># &#061;&#061; \u6bd4\u8f83\u503c\u662f\u5426\u76f8\u7b49<\/span><br \/>\n<span class=\"token comment\"># is \u6bd4\u8f83\u662f\u5426\u4e3a\u540c\u4e00\u4e2a\u5bf9\u8c61&#xff08;\u5185\u5b58\u5730\u5740\u76f8\u540c&#xff09;<\/span><br \/>\nlist_a <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><br \/>\nlist_b <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><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>list_a <span class=\"token operator\">&#061;&#061;<\/span> list_b<span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># True  \u503c\u76f8\u7b49<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>list_a <span class=\"token keyword\">is<\/span> list_b<span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># False \u4e0d\u540c\u5bf9\u8c61<\/span><\/p>\n<p><span class=\"token comment\"># \u5bf9\u4e8e\u5c0f\u6574\u6570&#xff08;-5 ~ 256&#xff09;\u548c\u77ed\u5b57\u7b26\u4e32&#xff0c;Python \u4f7f\u7528\u7f13\u5b58<\/span><br \/>\na <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">256<\/span><span class=\"token punctuation\">;<\/span> b <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">256<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token keyword\">is<\/span> b<span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># True&#xff08;\u540c\u4e00\u7f13\u5b58\u5bf9\u8c61&#xff09;<\/span><br \/>\na <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">257<\/span><span class=\"token punctuation\">;<\/span> b <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">257<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token keyword\">is<\/span> b<span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># \u53ef\u80fd True \u4e5f\u53ef\u80fd False&#xff08;\u53d6\u51b3\u4e8e\u5b9e\u73b0&#xff09;<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;&#061;&#061; \u6bd4\u8f83\u503c&#xff0c;is \u6bd4\u8f83\u8eab\u4efd&#xff08;\u5185\u5b58\u5730\u5740&#xff09;\u3002\u5bf9\u4e8e\u5c0f\u6574\u6570&#xff08;-5~256&#xff09;&#xff0c;Python \u4f7f\u7528\u7f13\u5b58\u673a\u5236&#xff0c;\u6240\u4ee5 is \u4e5f\u53ef\u80fd\u8fd4\u56de True\u2014\u2014\u8fd9\u662f\u5e38\u89c1\u7684\u9762\u8bd5\u8003\u70b9\u3002<\/p>\n<h4>4.3 \u903b\u8f91\u8fd0\u7b97\u7b26<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;Python \u4f7f\u7528 and\u3001or\u3001not&#xff08;\u800c\u4e0d\u662f &amp;&amp;\u3001||\u3001!&#xff09;\u3002\u903b\u8f91\u8fd0\u7b97\u652f\u6301\u77ed\u8def\u6c42\u503c&#xff0c;\u4e14\u53ef\u4ee5\u4f5c\u7528\u4e8e\u975e\u5e03\u5c14\u503c&#xff1a;<\/p>\n<p><span class=\"token comment\"># and, or, not&#xff08;\u6ce8\u610f&#xff1a;\u4e0d\u662f &amp;&amp;, ||, !&#xff09;<\/span><br \/>\nx<span class=\"token punctuation\">,<\/span> y <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">True<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token boolean\">False<\/span><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>x <span class=\"token keyword\">and<\/span> y<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># False  \u4e14<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>x <span class=\"token keyword\">or<\/span> y<span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># True   \u6216<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">not<\/span> x<span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># False  \u975e<\/span><\/p>\n<p><span class=\"token comment\"># \u77ed\u8def\u6c42\u503c<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">get_true<\/span><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><span class=\"token string\">&#034;get_true \u88ab\u8c03\u7528&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token boolean\">True<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">get_false<\/span><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><span class=\"token string\">&#034;get_false \u88ab\u8c03\u7528&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token boolean\">False<\/span><\/p>\n<p><span class=\"token comment\"># and&#xff1a;\u7b2c\u4e00\u4e2a False \u540e\u9762\u7684\u4e0d\u4f1a\u6267\u884c<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>get_false<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">and<\/span> get_true<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u53ea\u8f93\u51fa get_false \u88ab\u8c03\u7528&#xff0c;\u8fd4\u56de False<\/span><\/p>\n<p><span class=\"token comment\"># or&#xff1a;\u7b2c\u4e00\u4e2a True \u540e\u9762\u7684\u4e0d\u4f1a\u6267\u884c<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>get_true<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">or<\/span> get_false<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># \u53ea\u8f93\u51fa get_true \u88ab\u8c03\u7528&#xff0c;\u8fd4\u56de True<\/span><\/p>\n<p><span class=\"token comment\"># \u975e\u5e03\u5c14\u503c\u7684\u903b\u8f91\u8fd0\u7b97&#xff1a;\u8fd4\u56de\u7b2c\u4e00\u4e2a\u80fd\u51b3\u5b9a\u7ed3\u679c\u7684\u503c<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span> <span class=\"token keyword\">and<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">)<\/span>     <span class=\"token comment\"># 0   (0 \u662f &#034;\u5047\u503c&#034;&#xff0c;\u76f4\u63a5\u8fd4\u56de)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">and<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># []  (\u7a7a\u5217\u8868\u662f &#034;\u5047\u503c&#034;)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span> <span class=\"token keyword\">or<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">)<\/span>      <span class=\"token comment\"># 10  (0 \u662f\u5047\u503c&#xff0c;\u8fd4\u56de 10)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#034;<\/span> <span class=\"token keyword\">or<\/span> <span class=\"token string\">&#034;default&#034;<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># &#034;default&#034;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;hello&#034;<\/span> <span class=\"token keyword\">or<\/span> <span class=\"token string\">&#034;world&#034;<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># &#034;hello&#034; (\u7b2c\u4e00\u4e2a\u662f\u771f\u503c)<\/span><\/p>\n<p><span class=\"token comment\"># \u5e38\u89c1\u7684\u9ed8\u8ba4\u503c\u6a21\u5f0f<\/span><br \/>\nname <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;&#034;<\/span> <span class=\"token keyword\">or<\/span> <span class=\"token string\">&#034;\u533f\u540d\u7528\u6237&#034;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>name<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u533f\u540d\u7528\u6237<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u77ed\u8def\u6c42\u503c\u662f\u6027\u80fd\u4f18\u5316\u7684\u597d\u5e2e\u624b\u3002\u975e\u5e03\u5c14\u503c\u7684\u903b\u8f91\u8fd0\u7b97\u8fd4\u56de\u7b2c\u4e00\u4e2a\u80fd\u51b3\u5b9a\u7ed3\u679c\u7684\u503c&#xff0c;\u5e38\u7528\u4e8e\u8bbe\u7f6e\u9ed8\u8ba4\u503c&#xff08;\u5982 name &#061; input_name or \u2018\u533f\u540d\u2019&#xff09;\u3002<\/p>\n<h4>4.4 \u4f4d\u8fd0\u7b97\u7b26<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u4f4d\u8fd0\u7b97\u7b26\u76f4\u63a5\u64cd\u4f5c\u4e8c\u8fdb\u5236\u4f4d&#xff0c;\u5305\u62ec\u6309\u4f4d\u4e0e(&amp;)\u3001\u6216(|)\u3001\u5f02\u6216(^)\u3001\u53d6\u53cd(~)\u3001\u5de6\u79fb(&lt;&lt;)\u3001\u53f3\u79fb(&gt;&gt;)&#xff1a;<\/p>\n<p>a<span class=\"token punctuation\">,<\/span> b <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span>  <span class=\"token comment\"># \u4e8c\u8fdb\u5236: 0101, 0011<\/span><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">&amp;<\/span> b<span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># 1  (0101 &amp; 0011 &#061; 0001)  \u6309\u4f4d\u4e0e<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">|<\/span> b<span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># 7  (0101 | 0011 &#061; 0111)  \u6309\u4f4d\u6216<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">^<\/span> b<span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># 6  (0101 ^ 0011 &#061; 0110)  \u6309\u4f4d\u5f02\u6216<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">~<\/span>a<span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># -6                       \u6309\u4f4d\u53d6\u53cd<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">&lt;&lt;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># 10 (0101 &lt;&lt; 1 &#061; 1010)   \u5de6\u79fb<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">&gt;&gt;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># 2  (0101 &gt;&gt; 1 &#061; 0010)   \u53f3\u79fb<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u4f4d\u8fd0\u7b97\u5728\u5e95\u5c42\u64cd\u4f5c\u3001\u6743\u9650\u6807\u5fd7\u3001\u6027\u80fd\u4f18\u5316\u7b49\u573a\u666f\u5f88\u6709\u7528&#xff0c;\u4f46\u53ef\u8bfb\u6027\u8f83\u5dee&#xff0c;\u4f7f\u7528\u65f6\u5efa\u8bae\u52a0\u6ce8\u91ca\u8bf4\u660e\u610f\u56fe\u3002<\/p>\n<h4>4.5 \u8d4b\u503c\u8fd0\u7b97\u7b26<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u9664\u4e86\u57fa\u672c\u8d4b\u503c &#061;&#xff0c;Python \u8fd8\u652f\u6301\u590d\u5408\u8d4b\u503c&#xff08;&#043;&#061;\u3001-&#061; \u7b49&#xff09;\u548c Python 3.8 \u65b0\u589e\u7684\u6d77\u8c61\u8fd0\u7b97\u7b26 :&#061;&#xff1a;<\/p>\n<p>x <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">10<\/span><br \/>\nx <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">5<\/span>    <span class=\"token comment\"># \u7b49\u4ef7\u4e8e x &#061; x &#043; 5  \u2192 15<\/span><br \/>\nx <span class=\"token operator\">-&#061;<\/span> <span class=\"token number\">3<\/span>    <span class=\"token comment\"># \u7b49\u4ef7\u4e8e x &#061; x &#8211; 3  \u2192 12<\/span><br \/>\nx <span class=\"token operator\">*&#061;<\/span> <span class=\"token number\">2<\/span>    <span class=\"token comment\"># \u7b49\u4ef7\u4e8e x &#061; x * 2  \u2192 24<\/span><br \/>\nx <span class=\"token operator\">\/&#061;<\/span> <span class=\"token number\">4<\/span>    <span class=\"token comment\"># \u2192 6.0<\/span><br \/>\nx <span class=\"token operator\">\/\/&#061;<\/span> <span class=\"token number\">2<\/span>   <span class=\"token comment\"># \u2192 3.0<\/span><br \/>\nx <span class=\"token operator\">**&#061;<\/span> <span class=\"token number\">2<\/span>   <span class=\"token comment\"># \u2192 9.0<\/span><br \/>\nx <span class=\"token operator\">%&#061;<\/span> <span class=\"token number\">5<\/span>    <span class=\"token comment\"># \u2192 4.0<\/span><\/p>\n<p><span class=\"token comment\"># \u6d77\u8c61\u8fd0\u7b97\u7b26&#xff08;Python 3.8&#043;&#xff09;&#xff1a;\u5728\u8868\u8fbe\u5f0f\u4e2d\u8d4b\u503c<\/span><br \/>\n<span class=\"token comment\"># \u8bed\u6cd5: (\u53d8\u91cf\u540d :&#061; \u8868\u8fbe\u5f0f)<\/span><br \/>\n<span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>n <span class=\"token operator\">:&#061;<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;hello&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u5b57\u7b26\u4e32\u957f\u5ea6\u4e3a <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>n<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#xff0c;\u5927\u4e8e3&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u5b57\u7b26\u4e32\u957f\u5ea6\u4e3a 5&#xff0c;\u5927\u4e8e3<\/span><\/p>\n<p><span class=\"token comment\"># \u7ecf\u5178\u7528\u6cd5&#xff1a;\u5faa\u73af\u4e2d\u907f\u514d\u91cd\u590d\u8ba1\u7b97<\/span><br \/>\n<span class=\"token comment\"># \u4f20\u7edf\u5199\u6cd5<\/span><br \/>\n<span class=\"token keyword\">import<\/span> re<br \/>\n<span class=\"token keyword\">while<\/span> <span class=\"token boolean\">True<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    line <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">input<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token keyword\">not<\/span> line<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">break<\/span><br \/>\n<span class=\"token comment\"># \u6d77\u8c61\u5199\u6cd5<\/span><br \/>\n<span class=\"token comment\"># while line :&#061; input():<\/span><br \/>\n<span class=\"token comment\">#     # \u5904\u7406 line<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u6d77\u8c61\u8fd0\u7b97\u7b26 :&#061; \u80fd\u5728\u8868\u8fbe\u5f0f\u5185\u90e8\u5b8c\u6210\u8d4b\u503c&#xff0c;\u5e38\u7528\u4e8e if \u548c while \u4e2d\u907f\u514d\u91cd\u590d\u8ba1\u7b97&#xff0c;\u5982 while (line :&#061; file.readline())\u3002<\/p>\n<h4>4.6 \u6210\u5458\u8fd0\u7b97\u7b26<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;in \u548c not in \u7528\u4e8e\u68c0\u67e5\u5143\u7d20\u662f\u5426\u5b58\u5728\u4e8e\u5e8f\u5217&#xff08;\u5217\u8868\u3001\u5b57\u7b26\u4e32\u3001\u5b57\u5178\u7684\u952e\u7b49&#xff09;\u4e2d&#xff1a;<\/p>\n<p><span class=\"token comment\"># in \u548c not in&#xff1a;\u68c0\u67e5\u5143\u7d20\u662f\u5426\u5728\u5e8f\u5217\u4e2d<\/span><br \/>\nfruits <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;apple&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;banana&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;orange&#034;<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;apple&#034;<\/span> <span class=\"token keyword\">in<\/span> fruits<span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># True<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;grape&#034;<\/span> <span class=\"token keyword\">not<\/span> <span class=\"token keyword\">in<\/span> fruits<span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># True<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;e&#034;<\/span> <span class=\"token keyword\">in<\/span> <span class=\"token string\">&#034;hello&#034;<\/span><span class=\"token punctuation\">)<\/span>          <span class=\"token comment\"># True&#xff08;\u5b57\u7b26\u4e32\u4e5f\u662f\u5e8f\u5217&#xff09;<\/span><\/p>\n<p><span class=\"token comment\"># \u5b57\u5178\u4e2d\u68c0\u67e5\u952e<\/span><br \/>\nuser <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;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;age&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">25<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;name&#034;<\/span> <span class=\"token keyword\">in<\/span> user<span class=\"token punctuation\">)<\/span>          <span class=\"token comment\"># True<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Alice&#034;<\/span> <span class=\"token keyword\">in<\/span> user<span class=\"token punctuation\">)<\/span>         <span class=\"token comment\"># False&#xff08;\u68c0\u67e5\u7684\u662f\u952e&#xff0c;\u4e0d\u662f\u503c&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Alice&#034;<\/span> <span class=\"token keyword\">in<\/span> user<span class=\"token punctuation\">.<\/span>values<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># True<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u5bf9\u4e8e\u5b57\u5178&#xff0c;in \u9ed8\u8ba4\u68c0\u67e5\u952e\u800c\u975e\u503c&#xff1b;\u68c0\u67e5\u503c\u9700\u8981\u7528 .values()\u3002in \u5bf9\u96c6\u5408\u7684\u5224\u65ad\u662f O(1) \u7684&#xff0c;\u975e\u5e38\u9ad8\u6548\u3002<\/p>\n<h4>4.7 \u8fd0\u7b97\u7b26\u4f18\u5148\u7ea7&#xff08;\u4ece\u9ad8\u5230\u4f4e&#xff09;<\/h4>\n<p><span class=\"token comment\"># **                    \u5e42\u8fd0\u7b97<\/span><br \/>\n<span class=\"token comment\"># &#043;x, -x, ~x           \u4e00\u5143\u8fd0\u7b97\u7b26<\/span><br \/>\n<span class=\"token comment\"># *, \/, \/\/, %          \u4e58\u9664\u53d6\u4f59<\/span><br \/>\n<span class=\"token comment\"># &#043;, &#8211;                 \u52a0\u51cf<\/span><br \/>\n<span class=\"token comment\"># &lt;&lt;, &gt;&gt;               \u4f4d\u79fb<\/span><br \/>\n<span class=\"token comment\"># &amp;                    \u6309\u4f4d\u4e0e<\/span><br \/>\n<span class=\"token comment\"># ^                    \u6309\u4f4d\u5f02\u6216<\/span><br \/>\n<span class=\"token comment\"># |                    \u6309\u4f4d\u6216<\/span><br \/>\n<span class=\"token comment\"># &#061;&#061;, !&#061;, &gt;, &lt;, &gt;&#061;, &lt;&#061;, is, is not, in, not in  \u6bd4\u8f83<\/span><br \/>\n<span class=\"token comment\"># not                  \u903b\u8f91\u975e<\/span><br \/>\n<span class=\"token comment\"># and                  \u903b\u8f91\u4e0e<\/span><br \/>\n<span class=\"token comment\"># or                   \u903b\u8f91\u6216<\/span><br \/>\n<span class=\"token comment\"># :&#061;                   \u6d77\u8c61\u8fd0\u7b97\u7b26<\/span><\/p>\n<p><span class=\"token comment\"># \u4e0d\u786e\u5b9a\u65f6\u5c31\u52a0\u62ec\u53f7&#xff01;<\/span><br \/>\nresult <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">*<\/span> <span class=\"token number\">4<\/span>   <span class=\"token comment\"># 20<\/span><\/p>\n<hr \/>\n<h3>5. \u5b57\u7b26\u4e32\u8be6\u89e3<\/h3>\n<h4>5.1 \u5b57\u7b26\u4e32\u521b\u5efa<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;Python \u63d0\u4f9b\u4e86\u56db\u79cd\u5b57\u7b26\u4e32\u5b9a\u4e49\u65b9\u5f0f&#xff1a;\u5355\u5f15\u53f7\u3001\u53cc\u5f15\u53f7\u3001\u4e09\u5355\u5f15\u53f7\u3001\u4e09\u53cc\u5f15\u53f7&#xff0c;\u4ee5\u53ca\u539f\u59cb\u5b57\u7b26\u4e32&#xff08;r-string&#xff09;\u6765\u5ffd\u7565\u8f6c\u4e49&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u56db\u79cd\u5f15\u53f7\u65b9\u5f0f<\/span><br \/>\ns1 <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#039;\u5355\u5f15\u53f7\u5b57\u7b26\u4e32&#039;<\/span><br \/>\ns2 <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;\u53cc\u5f15\u53f7\u5b57\u7b26\u4e32&#034;<\/span><br \/>\ns3 <span class=\"token operator\">&#061;<\/span> <span class=\"token triple-quoted-string string\">&#039;&#039;&#039;\u4e09\u5355\u5f15\u53f7<br \/>\n\u53ef\u4ee5\u8de8\u884c&#039;&#039;&#039;<\/span><br \/>\ns4 <span class=\"token operator\">&#061;<\/span> <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u4e09\u53cc\u5f15\u53f7<br \/>\n\u4e5f\u53ef\u4ee5\u8de8\u884c&#034;&#034;&#034;<\/span><\/p>\n<p><span class=\"token comment\"># \u5f15\u53f7\u5d4c\u5957<\/span><br \/>\ns5 <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;It&#039;s a book&#034;<\/span>       <span class=\"token comment\"># \u53cc\u5f15\u53f7\u5185\u5305\u542b\u5355\u5f15\u53f7<\/span><br \/>\ns6 <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#039;He said &#034;Hello&#034;&#039;<\/span>   <span class=\"token comment\"># \u5355\u5f15\u53f7\u5185\u5305\u542b\u53cc\u5f15\u53f7<\/span><br \/>\ns7 <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#039;It\\\\&#039;s a book&#039;<\/span>      <span class=\"token comment\"># \u8f6c\u4e49\u5b57\u7b26<\/span><\/p>\n<p><span class=\"token comment\"># \u539f\u59cb\u5b57\u7b26\u4e32&#xff08;raw string&#xff09;&#xff1a;\u4e0d\u5904\u7406\u8f6c\u4e49<\/span><br \/>\npath <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">r&#034;C:\\\\Users\\\\name\\\\new_folder&#034;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>path<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># C:\\\\Users\\\\name\\\\new_folder&#xff08;\\\\n \u4e0d\u4f1a\u88ab\u5f53\u6210\u6362\u884c&#xff09;<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u65e5\u5e38\u7528\u5355\/\u53cc\u5f15\u53f7\u5373\u53ef&#xff1b;\u591a\u884c\u6587\u672c\u7528\u4e09\u5f15\u53f7&#xff1b;\u5904\u7406 Windows \u8def\u5f84\u6216\u6b63\u5219\u8868\u8fbe\u5f0f\u65f6&#xff0c;\u539f\u59cb\u5b57\u7b26\u4e32 r\u2019\u2026\u2019 \u80fd\u7701\u53bb\u5927\u91cf\u8f6c\u4e49\u7684\u9ebb\u70e6\u3002<\/p>\n<h4>5.2 \u8f6c\u4e49\u5b57\u7b26<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u53cd\u659c\u6760 \\\\ \u7528\u4e8e\u5f15\u5165\u7279\u6b8a\u5b57\u7b26&#xff0c;\u5982\u6362\u884c \\\\n\u3001\u5236\u8868\u7b26 \\\\t\u3001\u5f15\u53f7 &#034; \u7b49&#xff1a;<\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Hello\\\\nWorld&#034;<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># \u6362\u884c<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Hello\\\\tWorld&#034;<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># \u5236\u8868\u7b26<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Hello\\\\rWorld&#034;<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># \u56de\u8f66<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;He said \\\\&#034;Hi\\\\&#034;&#034;<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u53cc\u5f15\u53f7<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;It\\\\&#039;s a book&#039;<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># \u5355\u5f15\u53f7<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Path: C:\\\\\\\\data&#034;<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u53cd\u659c\u6760<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Line1\\\\\\\\\\\\nLine2&#034;<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u7eed\u884c&#xff08;\u884c\u672b\u7684\u53cd\u659c\u6760\u8868\u793a\u4e0b\u4e00\u884c\u7ee7\u7eed&#xff09;<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u8f6c\u4e49\u5b57\u7b26\u8ba9\u5b57\u7b26\u4e32\u80fd\u8868\u8fbe\u4efb\u610f\u7279\u6b8a\u5b57\u7b26\u3002\u9700\u8981\u8f93\u51fa\u53cd\u659c\u6760\u672c\u8eab\u65f6\u7528 \\\\&#xff0c;\u6216\u4f7f\u7528\u539f\u59cb\u5b57\u7b26\u4e32 r\u2019\u2026&#039;\u3002<\/p>\n<h4>5.3 \u5b57\u7b26\u4e32\u7d22\u5f15\u4e0e\u5207\u7247<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5b57\u7b26\u4e32\u652f\u6301\u7d22\u5f15&#xff08;\u5355\u4e2a\u5b57\u7b26&#xff09;\u548c\u5207\u7247&#xff08;\u5b50\u5b57\u7b26\u4e32&#xff09;\u3002\u8bed\u6cd5\u4e3a [start:stop:step]&#xff0c;start \u5305\u542b\u3001stop \u4e0d\u5305\u542b\u3001step \u4e3a\u6b65\u957f&#xff1a;<\/p>\n<p>text <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Python\u7f16\u7a0b&#034;<\/span><\/p>\n<p><span class=\"token comment\"># \u7d22\u5f15&#xff08;\u4ece0\u5f00\u59cb&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>text<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>     <span class=\"token comment\"># P<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>text<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\"># \u7a0b  &#xff08;\u8d1f\u6570\u7d22\u5f15\u4ece\u53f3\u8fb9\u5f00\u59cb&#xff0c;-1 \u662f\u6700\u540e\u4e00\u4e2a&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>text<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\"># \u7f16<\/span><\/p>\n<p><span class=\"token comment\"># \u5207\u7247 [start:stop:step]<\/span><br \/>\n<span class=\"token comment\"># start: \u8d77\u59cb\u7d22\u5f15&#xff08;\u5305\u542b&#xff09;&#xff0c;\u9ed8\u8ba40<\/span><br \/>\n<span class=\"token comment\"># stop:  \u7ed3\u675f\u7d22\u5f15&#xff08;\u4e0d\u5305\u542b&#xff09;&#xff0c;\u9ed8\u8ba4\u672b\u5c3e<\/span><br \/>\n<span class=\"token comment\"># step:  \u6b65\u957f&#xff0c;\u9ed8\u8ba41<\/span><br \/>\ntext <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;0123456789&#034;<\/span><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>text<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">:<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>     <span class=\"token comment\"># 01234  \u7d22\u5f150\u52304<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>text<span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">:<\/span><span class=\"token number\">7<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>     <span class=\"token comment\"># 23456<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>text<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">:<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>      <span class=\"token comment\"># 01234  \u7701\u7565start&#xff0c;\u4ece0\u5f00\u59cb<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>text<span class=\"token punctuation\">[<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">:<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>      <span class=\"token comment\"># 56789  \u7701\u7565stop&#xff0c;\u5230\u672b\u5c3e<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>text<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 punctuation\">)<\/span>     <span class=\"token comment\"># 02468  \u6b65\u957f\u4e3a2<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>text<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 punctuation\">)<\/span>    <span class=\"token comment\"># 9876543210  \u53cd\u8f6c\u5b57\u7b26\u4e32&#xff01;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>text<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 punctuation\">)<\/span>     <span class=\"token comment\"># 789  \u6700\u540e3\u4e2a\u5b57\u7b26<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u5207\u7247\u662f Python \u6700\u4f18\u96c5\u7684\u7279\u6027\u4e4b\u4e00\u3002[::-1] \u53cd\u8f6c\u5b57\u7b26\u4e32\u3001[-3:] \u53d6\u6700\u540e\u4e09\u4e2a\u5b57\u7b26\u2014\u2014\u7b80\u6d01\u800c\u5f3a\u5927\u3002\u5207\u7247\u64cd\u4f5c\u540c\u6837\u9002\u7528\u4e8e\u5217\u8868\u548c\u5143\u7ec4\u3002<\/p>\n<h4>5.4 \u5b57\u7b26\u4e32\u5e38\u7528\u65b9\u6cd5<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5b57\u7b26\u4e32\u6709\u4e30\u5bcc\u7684\u65b9\u6cd5\u7528\u4e8e\u5927\u5c0f\u5199\u8f6c\u6362\u3001\u7a7a\u767d\u5904\u7406\u3001\u67e5\u627e\u66ff\u6362\u3001\u5224\u65ad\u548c\u5206\u5272\u8fde\u63a5\u3002\u4ee5\u4e0b\u662f\u5b8c\u6574\u7684\u53c2\u8003\u793a\u4f8b&#xff1a;<\/p>\n<p>s <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;  Hello, Python World!  &#034;<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u5927\u5c0f\u5199\u8f6c\u6362 &#8212;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">.<\/span>upper<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>        <span class=\"token comment\"># &#034;  HELLO, PYTHON WORLD!  &#034;  \u5168\u5927\u5199<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">.<\/span>lower<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>        <span class=\"token comment\"># &#034;  hello, python world!  &#034;  \u5168\u5c0f\u5199<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">.<\/span>title<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>        <span class=\"token comment\"># &#034;  Hello, Python World!  &#034;  \u6bcf\u4e2a\u5355\u8bcd\u9996\u5b57\u6bcd\u5927\u5199<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">.<\/span>capitalize<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># &#034;  hello, python world!  &#034;  \u9996\u5b57\u6bcd\u5927\u5199<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">.<\/span>swapcase<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>     <span class=\"token comment\"># &#034;  hELLO, pYTHON wORLD!  &#034;  \u5927\u5c0f\u5199\u7ffb\u8f6c<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u7a7a\u767d\u5904\u7406 &#8212;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">.<\/span>strip<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>        <span class=\"token comment\"># &#034;Hello, Python World!&#034;  \u53bb\u4e24\u7aef\u7a7a\u767d<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">.<\/span>lstrip<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># &#034;Hello, Python World!  &#034;  \u53bb\u5de6\u7aef\u7a7a\u767d<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">.<\/span>rstrip<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># &#034;  Hello, Python World!&#034;  \u53bb\u53f3\u7aef\u7a7a\u767d<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u67e5\u627e\u4e0e\u66ff\u6362 &#8212;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">.<\/span>find<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Python&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>     <span class=\"token comment\"># 9  \u627e\u5230\u8fd4\u56de\u7d22\u5f15&#xff0c;\u627e\u4e0d\u5230\u8fd4\u56de -1<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">.<\/span>index<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Python&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># 9  \u627e\u5230\u8fd4\u56de\u7d22\u5f15&#xff0c;\u627e\u4e0d\u5230\u629b\u51fa ValueError<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">.<\/span>rfind<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;o&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>         <span class=\"token comment\"># 16 \u4ece\u53f3\u8fb9\u67e5\u627e<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">.<\/span>count<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;o&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>         <span class=\"token comment\"># 3  \u7edf\u8ba1\u51fa\u73b0\u6b21\u6570<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">.<\/span>replace<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;World&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u5927\u5bb6&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># &#034;  Hello, Python \u5927\u5bb6!  &#034;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">.<\/span>replace<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;o&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;O&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>      <span class=\"token comment\"># &#034;  HellO, Python World!  &#034;  \u53ea\u66ff\u63621\u6b21<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u5224\u65ad\u65b9\u6cd5 &#8212;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">.<\/span>startswith<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;  He&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># True  \u662f\u5426\u4ee5\u6307\u5b9a\u524d\u7f00\u5f00\u59cb<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">.<\/span>endswith<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;!  &#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>     <span class=\"token comment\"># True  \u662f\u5426\u4ee5\u6307\u5b9a\u540e\u7f00\u7ed3\u675f<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;abc123&#034;<\/span><span class=\"token punctuation\">.<\/span>isalnum<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># True  \u662f\u5426\u53ea\u542b\u5b57\u6bcd\u548c\u6570\u5b57<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;abc&#034;<\/span><span class=\"token punctuation\">.<\/span>isalpha<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># True  \u662f\u5426\u53ea\u542b\u5b57\u6bcd<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;123&#034;<\/span><span class=\"token punctuation\">.<\/span>isdigit<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># True  \u662f\u5426\u53ea\u542b\u6570\u5b57<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;abc&#034;<\/span><span class=\"token punctuation\">.<\/span>islower<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># True  \u662f\u5426\u5168\u5c0f\u5199<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;ABC&#034;<\/span><span class=\"token punctuation\">.<\/span>isupper<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># True  \u662f\u5426\u5168\u5927\u5199<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;   &#034;<\/span><span class=\"token punctuation\">.<\/span>isspace<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># True  \u662f\u5426\u5168\u7a7a\u767d\u5b57\u7b26<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Title&#034;<\/span><span class=\"token punctuation\">.<\/span>istitle<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>     <span class=\"token comment\"># True  \u662f\u5426\u662f\u6807\u9898\u683c\u5f0f<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u5206\u5272\u4e0e\u8fde\u63a5 &#8212;<\/span><br \/>\ncsv <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;apple,banana,orange&#034;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>csv<span class=\"token punctuation\">.<\/span>split<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;,&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>            <span class=\"token comment\"># [&#039;apple&#039;, &#039;banana&#039;, &#039;orange&#039;]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>csv<span class=\"token punctuation\">.<\/span>split<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;,&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>         <span class=\"token comment\"># [&#039;apple&#039;, &#039;banana,orange&#039;]  \u53ea\u5206\u52721\u6b21<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;a b  c&#034;<\/span><span class=\"token punctuation\">.<\/span>split<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>          <span class=\"token comment\"># [&#039;a&#039;, &#039;b&#039;, &#039;c&#039;]  \u9ed8\u8ba4\u6309\u7a7a\u767d\u5206\u5272\u4e14\u4f1a\u5408\u5e76\u591a\u4e2a\u7a7a\u767d<\/span><\/p>\n<p><span class=\"token comment\"># rsplit&#xff1a;\u4ece\u53f3\u8fb9\u5f00\u59cb\u5206\u5272<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;a,b,c&#034;<\/span><span class=\"token punctuation\">.<\/span>rsplit<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;,&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># [&#039;a,b&#039;, &#039;c&#039;]<\/span><\/p>\n<p><span class=\"token comment\"># splitlines&#xff1a;\u6309\u884c\u5206\u5272<\/span><br \/>\nmultiline <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;line1\\\\nline2\\\\nline3&#034;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>multiline<span class=\"token punctuation\">.<\/span>splitlines<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># [&#039;line1&#039;, &#039;line2&#039;, &#039;line3&#039;]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>multiline<span class=\"token punctuation\">.<\/span>splitlines<span class=\"token punctuation\">(<\/span>keepends<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [&#039;line1\\\\n&#039;, &#039;line2\\\\n&#039;, &#039;line3&#039;]<\/span><\/p>\n<p><span class=\"token comment\"># join&#xff1a;\u7528\u5206\u9694\u7b26\u8fde\u63a5\u53ef\u8fed\u4ee3\u5bf9\u8c61<\/span><br \/>\nwords <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;Python&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;is&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;awesome&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034; &#034;<\/span><span class=\"token punctuation\">.<\/span>join<span class=\"token punctuation\">(<\/span>words<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>           <span class=\"token comment\"># Python is awesome<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;-&#034;<\/span><span class=\"token punctuation\">.<\/span>join<span class=\"token punctuation\">(<\/span>words<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>           <span class=\"token comment\"># Python-is-awesome<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;, &#034;<\/span><span class=\"token punctuation\">.<\/span>join<span class=\"token punctuation\">(<\/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 string\">&#034;c&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># a, b, c<\/span><\/p>\n<p><span class=\"token comment\"># partition&#xff1a;\u5206\u5272\u6210\u4e09\u90e8\u5206 (\u524d, \u5206\u9694\u7b26, \u540e)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;hello world&#034;<\/span><span class=\"token punctuation\">.<\/span>partition<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034; &#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># (&#039;hello&#039;, &#039; &#039;, &#039;world&#039;)<\/span><br \/>\n<span class=\"token comment\"># rpartition&#xff1a;\u4ece\u53f3\u8fb9\u5f00\u59cb<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;hello world hello&#034;<\/span><span class=\"token punctuation\">.<\/span>rpartition<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034; &#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># (&#039;hello world&#039;, &#039; &#039;, &#039;hello&#039;)<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u586b\u5145\u4e0e\u5bf9\u9f50 &#8212;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;42&#034;<\/span><span class=\"token punctuation\">.<\/span>zfill<span class=\"token punctuation\">(<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>         <span class=\"token comment\"># 00042  \u75280\u586b\u5145\u5de6\u4fa7<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;hi&#034;<\/span><span class=\"token punctuation\">.<\/span>ljust<span class=\"token punctuation\">(<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;-&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># hi&#8212;&#8212;&#8211;  \u5de6\u5bf9\u9f50<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;hi&#034;<\/span><span class=\"token punctuation\">.<\/span>rjust<span class=\"token punctuation\">(<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;-&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># &#8212;&#8212;&#8211;hi  \u53f3\u5bf9\u9f50<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;hi&#034;<\/span><span class=\"token punctuation\">.<\/span>center<span class=\"token punctuation\">(<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;-&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># &#8212;-hi&#8212;-  \u5c45\u4e2d\u5bf9\u9f50<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u8fd9\u4e9b\u65b9\u6cd5\u90fd\u4e0d\u4f1a\u4fee\u6539\u539f\u5b57\u7b26\u4e32&#xff08;\u5b57\u7b26\u4e32\u4e0d\u53ef\u53d8&#xff09;&#xff0c;\u800c\u662f\u8fd4\u56de\u65b0\u5b57\u7b26\u4e32\u3002\u7279\u522b\u63a8\u8350\u8bb0\u4f4f split()\u3001join()\u3001strip() \u548c replace()\u2014\u2014\u5b83\u4eec\u662f\u65e5\u5e38\u7f16\u7a0b\u4e2d\u4f7f\u7528\u9891\u7387\u6700\u9ad8\u7684\u5b57\u7b26\u4e32\u65b9\u6cd5\u3002<\/p>\n<h4>5.5 \u5b57\u7b26\u4e32\u683c\u5f0f\u5316<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;Python \u63d0\u4f9b\u4e86\u56db\u79cd\u5b57\u7b26\u4e32\u683c\u5f0f\u5316\u65b9\u5f0f\u3002f-string&#xff08;Python 3.6&#043;&#xff09;\u662f\u6700\u63a8\u8350\u7684&#xff0c;\u652f\u6301\u8868\u8fbe\u5f0f\u5d4c\u5165\u3001\u683c\u5f0f\u8bf4\u660e\u7b26\u548c\u8c03\u8bd5\u6a21\u5f0f&#xff1a;<\/p>\n<p>name <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Alice&#034;<\/span><br \/>\nage <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">25<\/span><br \/>\npi <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">3.1415926<\/span><\/p>\n<p><span class=\"token comment\"># \u65b9\u6cd51&#xff1a;f-string&#xff08;Python 3.6&#043;&#xff0c;\u63a8\u8350&#xff01;&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u6211\u53eb<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#xff0c;\u4eca\u5e74<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>age<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\u5c81&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u03c0 \u2248 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>pi<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 punctuation\">)<\/span>              <span class=\"token comment\"># \u03c0 \u2248 3.14<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>name<span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">&gt;10<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span>                  <span class=\"token comment\"># &#039;     Alice&#039;  \u53f3\u5bf9\u9f50&#xff0c;\u5bbd\u5ea610<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>name<span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">*^10<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span>                 <span class=\"token comment\"># &#039;**Alice***&#039;  \u5c45\u4e2d&#xff0c;* \u586b\u5145<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token number\">1000000<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">,<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span>                 <span class=\"token comment\"># 1,000,000  \u5343\u5206\u4f4d<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token number\">0.25<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.1%<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span>                 <span class=\"token comment\"># 25.0%  \u767e\u5206\u6bd4<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token number\">255<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">#x<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span>                   <span class=\"token comment\"># 0xff  \u5341\u516d\u8fdb\u5236<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>age<span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span>                     <span class=\"token comment\"># age&#061;25  (\u8c03\u8bd5\u6a21\u5f0f)<\/span><\/p>\n<p><span class=\"token comment\"># \u65b9\u6cd52&#xff1a;str.format()<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u6211\u53eb{}&#xff0c;\u4eca\u5e74{}\u5c81&#034;<\/span><span class=\"token punctuation\">.<\/span><span class=\"token builtin\">format<\/span><span class=\"token punctuation\">(<\/span>name<span class=\"token punctuation\">,<\/span> age<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u6211\u53eb{0}&#xff0c;\u4eca\u5e74{1}\u5c81&#xff0c;{0}\u6765\u81ea\u5317\u4eac&#034;<\/span><span class=\"token punctuation\">.<\/span><span class=\"token builtin\">format<\/span><span class=\"token punctuation\">(<\/span>name<span class=\"token punctuation\">,<\/span> age<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u6309\u7d22\u5f15<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u6211\u53eb{name}&#xff0c;\u4eca\u5e74{age}\u5c81&#034;<\/span><span class=\"token punctuation\">.<\/span><span class=\"token builtin\">format<\/span><span class=\"token punctuation\">(<\/span>name<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;Bob&#034;<\/span><span class=\"token punctuation\">,<\/span> age<span class=\"token operator\">&#061;<\/span><span class=\"token number\">30<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u6309\u540d\u79f0<\/span><\/p>\n<p><span class=\"token comment\"># \u65b9\u6cd53&#xff1a;% \u683c\u5f0f\u5316&#xff08;\u65e7\u5f0f&#xff0c;\u4e0d\u63a8\u8350&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u6211\u53eb%s&#xff0c;\u4eca\u5e74%d\u5c81&#034;<\/span> <span class=\"token operator\">%<\/span> <span class=\"token punctuation\">(<\/span>name<span class=\"token punctuation\">,<\/span> age<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u03c0 \u2248 %.2f&#034;<\/span> <span class=\"token operator\">%<\/span> pi<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u65b9\u6cd54&#xff1a;format() \u5185\u7f6e\u51fd\u6570<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">format<\/span><span class=\"token punctuation\">(<\/span>pi<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;.2f&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>     <span class=\"token comment\"># 3.14<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;f-string \u4e0d\u4ec5\u6700\u7b80\u6d01&#xff0c;\u800c\u4e14\u662f\u6548\u7387\u6700\u9ad8\u7684\u683c\u5f0f\u5316\u65b9\u5f0f\u3002{age&#061;} \u8c03\u8bd5\u6a21\u5f0f\u80fd\u6253\u5370\u53d8\u91cf\u540d\u548c\u503c&#xff0c;\u5728\u6392\u67e5\u95ee\u9898\u65f6\u975e\u5e38\u65b9\u4fbf\u3002<\/p>\n<h4>5.6 \u5b57\u7b26\u4e32\u4e0d\u53ef\u53d8\u6027<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5b57\u7b26\u4e32\u662f\u4e0d\u53ef\u53d8\u7c7b\u578b\u2014\u2014\u4e0d\u80fd\u901a\u8fc7\u7d22\u5f15\u76f4\u63a5\u4fee\u6539\u67d0\u4e2a\u5b57\u7b26\u3002\u6b63\u786e\u7684\u505a\u6cd5\u662f\u521b\u5efa\u65b0\u5b57\u7b26\u4e32&#xff1a;<\/p>\n<p>s <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Hello&#034;<\/span><br \/>\n<span class=\"token comment\"># s[0] &#061; &#034;h&#034;   # \u274c TypeError: &#039;str&#039; object does not support item assignment<\/span><\/p>\n<p><span class=\"token comment\"># \u6b63\u786e\u505a\u6cd5&#xff1a;\u521b\u5efa\u65b0\u5b57\u7b26\u4e32<\/span><br \/>\ns <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;h&#034;<\/span> <span class=\"token operator\">&#043;<\/span> s<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">:<\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># &#034;hello&#034;<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u7406\u89e3\u4e0d\u53ef\u53d8\u6027\u6709\u52a9\u4e8e\u7406\u89e3 Python \u7684\u5185\u5b58\u6a21\u578b&#xff1a;\u6bcf\u6b21\u4fee\u6539\u5b57\u7b26\u4e32\u5b9e\u9645\u90fd\u5728\u521b\u5efa\u65b0\u5bf9\u8c61&#xff0c;\u9891\u7e41\u62fc\u63a5\u65f6\u63a8\u8350\u7528 join() \u800c\u975e &#043; \u4ee5\u83b7\u5f97\u66f4\u597d\u6027\u80fd\u3002<\/p>\n<hr \/>\n<h3>6. \u5217\u8868&#xff08;List&#xff09;<\/h3>\n<p>\u5217\u8868\u662f Python \u4e2d\u6700\u5e38\u7528\u7684\u53ef\u53d8\u5e8f\u5217\u7c7b\u578b&#xff0c;\u5143\u7d20\u53ef\u91cd\u590d&#xff0c;\u7528 [] \u8868\u793a\u3002<\/p>\n<h4>6.1 \u521b\u5efa\u5217\u8868<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5217\u8868\u7528 [] \u6216 list() \u521b\u5efa&#xff0c;\u53ef\u4ee5\u5305\u542b\u4efb\u610f\u7c7b\u578b\u7684\u5143\u7d20&#xff0c;\u652f\u6301\u4e58\u6cd5\u91cd\u590d\u548c\u5d4c\u5957\u3002\u4f46\u8981\u6ce8\u610f\u5d4c\u5957\u5217\u8868\u4e58\u6cd5\u7684\u9677\u9631&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u591a\u79cd\u521b\u5efa\u65b9\u5f0f<\/span><br \/>\nempty <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><br \/>\nnums <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><br \/>\nmixed <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 string\">&#034;hello&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3.14<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token boolean\">True<\/span><span class=\"token punctuation\">,<\/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 punctuation\">]<\/span>  <span class=\"token comment\"># \u53ef\u4ee5\u5305\u542b\u4e0d\u540c\u7c7b\u578b<\/span><br \/>\nnested <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/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 punctuation\">,<\/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 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\"># \u5d4c\u5957\u5217\u8868<\/span><\/p>\n<p><span class=\"token comment\"># \u7528\u6784\u9020\u51fd\u6570\u521b\u5efa<\/span><br \/>\nchars <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;hello&#034;<\/span><span class=\"token punctuation\">)<\/span>          <span class=\"token comment\"># [&#039;h&#039;, &#039;e&#039;, &#039;l&#039;, &#039;l&#039;, &#039;o&#039;]<\/span><br \/>\nrange_list <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># [0, 1, 2, 3, 4]<\/span><\/p>\n<p><span class=\"token comment\"># \u5217\u8868\u4e58\u6cd5<\/span><br \/>\nzeros <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 operator\">*<\/span> <span class=\"token number\">5<\/span>                <span class=\"token comment\"># [0, 0, 0, 0, 0]<\/span><\/p>\n<p><span class=\"token comment\"># \u26a0\ufe0f \u9677\u9631&#xff1a;\u5d4c\u5957\u5217\u8868\u4e58\u6cd5<\/span><br \/>\ngrid <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">*<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">*<\/span> <span class=\"token number\">3<\/span>  <span class=\"token comment\"># \u770b\u8d77\u6765\u662f3&#215;3\u77e9\u9635<\/span><br \/>\ngrid<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>grid<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [[1, 0, 0], [1, 0, 0], [1, 0, 0]]  \u2190 \u4e09\u884c\u6307\u5411\u540c\u4e00\u4e2a\u5b50\u5217\u8868&#xff01;<\/span><\/p>\n<p><span class=\"token comment\"># \u2705 \u6b63\u786e\u505a\u6cd5<\/span><br \/>\ngrid <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">*<\/span> <span class=\"token number\">3<\/span> <span class=\"token keyword\">for<\/span> _ <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">]<\/span><br \/>\ngrid<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>grid<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [[1, 0, 0], [0, 0, 0], [0, 0, 0]]<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u5d4c\u5957\u5217\u8868\u4e58\u6cd5 [[0]*3]*3 \u4f1a\u521b\u5efa\u6307\u5411\u540c\u4e00\u5b50\u5217\u8868\u7684\u591a\u4e2a\u5f15\u7528\u2014\u2014\u8fd9\u662f\u4e00\u4e2a\u7ecf\u5178\u9677\u9631&#xff01;\u6b63\u786e\u7684\u505a\u6cd5\u662f\u4f7f\u7528\u5217\u8868\u63a8\u5bfc\u5f0f [[0]*3 for _ in range(3)]\u3002<\/p>\n<h4>6.2 \u8bbf\u95ee\u4e0e\u5207\u7247<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5217\u8868\u7684\u7d22\u5f15\u548c\u5207\u7247\u8bed\u6cd5\u4e0e\u5b57\u7b26\u4e32\u5b8c\u5168\u4e00\u81f4\u2014\u2014\u6b63\u5411\u4e0b\u6807\u4ece0\u5f00\u59cb&#xff0c;\u8d1f\u5411\u4e0b\u6807\u4ece-1\u5f00\u59cb&#xff1a;<\/p>\n<p>fruits <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;\u82f9\u679c&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u9999\u8549&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u6a59\u5b50&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u8461\u8404&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u897f\u74dc&#034;<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p><span class=\"token comment\"># \u7d22\u5f15<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>fruits<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>     <span class=\"token comment\"># \u82f9\u679c<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>fruits<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\"># \u897f\u74dc<\/span><\/p>\n<p><span class=\"token comment\"># \u5207\u7247&#xff08;\u548c\u5b57\u7b26\u4e32\u4e00\u6837&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>fruits<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">:<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># [&#039;\u9999\u8549&#039;, &#039;\u6a59\u5b50&#039;]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>fruits<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 punctuation\">)<\/span>   <span class=\"token comment\"># [&#039;\u82f9\u679c&#039;, &#039;\u6a59\u5b50&#039;, &#039;\u897f\u74dc&#039;]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>fruits<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 punctuation\">)<\/span>  <span class=\"token comment\"># [&#039;\u897f\u74dc&#039;, &#039;\u8461\u8404&#039;, &#039;\u6a59\u5b50&#039;, &#039;\u9999\u8549&#039;, &#039;\u82f9\u679c&#039;]  \u53cd\u8f6c<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u5217\u8868\u5207\u7247\u8fd4\u56de\u65b0\u5217\u8868&#xff0c;\u4e0d\u5f71\u54cd\u539f\u5217\u8868\u3002fruits[::-1] \u53ef\u4ee5\u5feb\u901f\u53cd\u8f6c\u5217\u8868&#xff0c;\u800c\u4e14\u5207\u7247\u8bed\u6cd5\u9002\u7528\u4e8e\u6240\u6709\u5e8f\u5217\u7c7b\u578b\u3002<\/p>\n<h4>6.3 \u4fee\u6539\u5217\u8868<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5217\u8868\u662f\u53ef\u53d8\u7684\u2014\u2014\u53ef\u4ee5\u4fee\u6539\u5355\u4e2a\u5143\u7d20\u3001\u7528\u5207\u7247\u6279\u91cf\u66ff\u6362\u3001\u5220\u9664\u5143\u7d20\u6216\u6e05\u7a7a\u6574\u4e2a\u5217\u8868&#xff1a;<\/p>\n<p>fruits <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;\u82f9\u679c&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u9999\u8549&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u6a59\u5b50&#034;<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p><span class=\"token comment\"># \u4fee\u6539\u5143\u7d20<\/span><br \/>\nfruits<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;\u8349\u8393&#034;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>fruits<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [&#039;\u82f9\u679c&#039;, &#039;\u8349\u8393&#039;, &#039;\u6a59\u5b50&#039;]<\/span><\/p>\n<p><span class=\"token comment\"># \u7528\u5207\u7247\u6279\u91cf\u4fee\u6539<\/span><br \/>\nfruits<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/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 string\">&#034;\u8292\u679c&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u8461\u8404&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>fruits<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [&#039;\u82f9\u679c&#039;, &#039;\u8292\u679c&#039;, &#039;\u8461\u8404&#039;]<\/span><\/p>\n<p><span class=\"token comment\"># \u5220\u9664\u5143\u7d20<\/span><br \/>\n<span class=\"token keyword\">del<\/span> fruits<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>fruits<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [&#039;\u8292\u679c&#039;, &#039;\u8461\u8404&#039;]<\/span><\/p>\n<p><span class=\"token comment\"># \u6e05\u7a7a\u5217\u8868<\/span><br \/>\nfruits<span class=\"token punctuation\">.<\/span>clear<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>fruits<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># []<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u5207\u7247\u8d4b\u503c fruits[1:3] &#061; [\u2026] \u53ef\u4ee5\u4e00\u6b21\u66ff\u6362\u591a\u4e2a\u5143\u7d20&#xff0c;\u66ff\u6362\u7684\u5143\u7d20\u6570\u91cf\u4e0d\u5fc5\u76f8\u7b49\u2014\u2014\u8fd9\u662f\u5217\u8868\u7684\u4e00\u5927\u7075\u6d3b\u6027\u3002<\/p>\n<h4>6.4 \u5217\u8868\u65b9\u6cd5<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5217\u8868\u63d0\u4f9b\u4e86\u4e30\u5bcc\u7684\u65b9\u6cd5\u7528\u4e8e\u6dfb\u52a0&#xff08;append\/extend\/insert&#xff09;\u3001\u5220\u9664&#xff08;remove\/pop&#xff09;\u3001\u67e5\u627e&#xff08;index\/count&#xff09;\u548c\u6392\u5e8f&#xff08;sort&#xff09;&#xff1a;<\/p>\n<p><span class=\"token comment\"># &#8212; \u6dfb\u52a0\u5143\u7d20 &#8212;<\/span><br \/>\nnums <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><\/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\"># [1, 2, 3, 4]  \u672b\u5c3e\u6dfb\u52a0\u4e00\u4e2a\u5143\u7d20<\/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 number\">7<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>      <span class=\"token comment\"># [1, 2, 3, 4, 5, 6, 7]  \u672b\u5c3e\u6dfb\u52a0\u591a\u4e2a\u5143\u7d20<\/span><br \/>\nnums<span class=\"token punctuation\">.<\/span>insert<span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span>           <span class=\"token comment\"># [0, 1, 2, 3, 4, 5, 6, 7]  \u5728\u6307\u5b9a\u4f4d\u7f6e\u63d2\u5165<\/span><\/p>\n<p><span class=\"token comment\"># append vs extend<\/span><br \/>\na <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><br \/>\na<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/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 punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [1, 2, [3, 4]]  \u2190 \u6574\u4e2a\u5217\u8868\u4f5c\u4e3a\u4e00\u4e2a\u5143\u7d20<\/span><br \/>\nb <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><br \/>\nb<span class=\"token punctuation\">.<\/span>extend<span class=\"token punctuation\">(<\/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 punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>b<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [1, 2, 3, 4]    \u2190 \u5143\u7d20\u9010\u4e2a\u52a0\u5165<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u5220\u9664\u5143\u7d20 &#8212;<\/span><br \/>\nnums <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\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">4<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p>nums<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\"># [1, 3, 2, 4]  \u5220\u9664\u7b2c\u4e00\u4e2a\u5339\u914d\u503c&#xff08;\u627e\u4e0d\u5230\u5219 ValueError&#xff09;<\/span><br \/>\npopped <span class=\"token operator\">&#061;<\/span> nums<span class=\"token punctuation\">.<\/span>pop<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u5f39\u51fa\u5e76\u8fd4\u56de\u6700\u540e\u4e00\u4e2a\u5143\u7d20 \u2192 4; nums &#061; [1, 3, 2]<\/span><br \/>\npopped <span class=\"token operator\">&#061;<\/span> nums<span class=\"token punctuation\">.<\/span>pop<span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token comment\"># \u5f39\u51fa\u5e76\u8fd4\u56de\u7d22\u5f151\u7684\u5143\u7d20 \u2192 3; nums &#061; [1, 2]<\/span><br \/>\n<span class=\"token comment\"># del nums[0]       # \u5220\u9664\u7d22\u5f150\u7684\u5143\u7d20<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u67e5\u627e\u4e0e\u7edf\u8ba1 &#8212;<\/span><br \/>\nnums <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\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">4<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>nums<span class=\"token punctuation\">.<\/span>index<span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>      <span class=\"token comment\"># 1  \u7b2c\u4e00\u4e2a\u51fa\u73b0\u7684\u7d22\u5f15&#xff08;\u627e\u4e0d\u5230\u5219 ValueError&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>nums<span class=\"token punctuation\">.<\/span>index<span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># 3  \u4ece\u7d22\u5f152\u5f00\u59cb\u67e5\u627e<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>nums<span class=\"token punctuation\">.<\/span>count<span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>      <span class=\"token comment\"># 3  \u7edf\u8ba1\u51fa\u73b0\u6b21\u6570<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>nums<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>          <span class=\"token comment\"># 6  \u5217\u8868\u957f\u5ea6<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u6392\u5e8f &#8212;<\/span><br \/>\nnums <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\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">4<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">9<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p>nums<span class=\"token punctuation\">.<\/span>sort<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>                    <span class=\"token comment\"># \u539f\u5730\u5347\u5e8f\u6392\u5e8f \u2192 [1, 1, 3, 4, 5, 9]<\/span><br \/>\nnums<span class=\"token punctuation\">.<\/span>sort<span class=\"token punctuation\">(<\/span>reverse<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">)<\/span>        <span class=\"token comment\"># \u539f\u5730\u964d\u5e8f\u6392\u5e8f \u2192 [9, 5, 4, 3, 1, 1]<\/span><\/p>\n<p><span class=\"token comment\"># sorted()&#xff1a;\u8fd4\u56de\u65b0\u5217\u8868&#xff0c;\u4e0d\u6539\u53d8\u539f\u5217\u8868<\/span><br \/>\noriginal <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\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">4<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">]<\/span><br \/>\nsorted_list <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">sorted<\/span><span class=\"token punctuation\">(<\/span>original<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [1, 1, 3, 4, 5]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>original<span class=\"token punctuation\">)<\/span>                 <span class=\"token comment\"># [3, 1, 4, 1, 5]  \u4e0d\u53d8<\/span><\/p>\n<p><span class=\"token comment\"># \u81ea\u5b9a\u4e49\u6392\u5e8f&#xff1a;\u6309\u5b57\u7b26\u4e32\u957f\u5ea6<\/span><br \/>\nwords <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;apple&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;kiwi&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;banana&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;pear&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\nwords<span class=\"token punctuation\">.<\/span>sort<span class=\"token punctuation\">(<\/span>key<span class=\"token operator\">&#061;<\/span><span class=\"token builtin\">len<\/span><span class=\"token punctuation\">)<\/span>            <span class=\"token comment\"># [&#039;kiwi&#039;, &#039;pear&#039;, &#039;apple&#039;, &#039;banana&#039;]<\/span><br \/>\nwords<span class=\"token punctuation\">.<\/span>sort<span class=\"token punctuation\">(<\/span>key<span class=\"token operator\">&#061;<\/span><span class=\"token keyword\">lambda<\/span> w<span class=\"token punctuation\">:<\/span> w<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\"># \u6309\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u6392\u5e8f<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u5176\u4ed6\u5e38\u7528\u65b9\u6cd5 &#8212;<\/span><br \/>\nnums <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><br \/>\nnums<span class=\"token punctuation\">.<\/span>reverse<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>           <span class=\"token comment\"># \u539f\u5730\u53cd\u8f6c \u2192 [3, 2, 1]<\/span><br \/>\n<span class=\"token comment\"># \u6216\u7528\u5207\u7247&#xff1a;reversed_list &#061; nums[::-1]<\/span><\/p>\n<p>nums_copy <span class=\"token operator\">&#061;<\/span> nums<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 \/>\n<span class=\"token comment\"># \u7b49\u4ef7\u4e8e nums_copy &#061; nums[:] \u6216 list(nums)<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u6ce8\u610f append \u548c extend \u7684\u5173\u952e\u533a\u522b&#xff1a;append \u628a\u53c2\u6570\u6574\u4f53\u4f5c\u4e3a\u4e00\u4e2a\u5143\u7d20\u52a0\u5165&#xff0c;extend \u5219\u9010\u4e2a\u52a0\u5165\u3002sort() \u539f\u5730\u6392\u5e8f&#xff0c;sorted() \u8fd4\u56de\u65b0\u5217\u8868\u3002<\/p>\n<h4>6.5 \u6d45\u62f7\u8d1d vs \u6df1\u62f7\u8d1d<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5d4c\u5957\u5217\u8868\u7684\u62f7\u8d1d\u9700\u8981\u7279\u522b\u6ce8\u610f\u2014\u2014\u6d45\u62f7\u8d1d\u53ea\u590d\u5236\u5916\u5c42\u5f15\u7528&#xff0c;\u6df1\u62f7\u8d1d\u624d\u4f1a\u9012\u5f52\u590d\u5236\u6240\u6709\u5c42\u7ea7&#xff1a;<\/p>\n<p><span class=\"token keyword\">import<\/span> copy<\/p>\n<p>original <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/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 punctuation\">,<\/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 punctuation\">]<\/span><\/p>\n<p><span class=\"token comment\"># \u6d45\u62f7\u8d1d&#xff1a;\u53ea\u590d\u5236\u5916\u5c42<\/span><br \/>\nshallow <span class=\"token operator\">&#061;<\/span> original<span class=\"token punctuation\">.<\/span>copy<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>      <span class=\"token comment\"># \u6216 original[:] \u6216 list(original)<\/span><br \/>\nshallow<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">99<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>original<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [[99, 2], [3, 4]]  \u2190 \u53d7\u5f71\u54cd&#xff01;<\/span><\/p>\n<p><span class=\"token comment\"># \u6df1\u62f7\u8d1d&#xff1a;\u9012\u5f52\u590d\u5236\u6240\u6709\u5c42\u7ea7<\/span><br \/>\ndeep <span class=\"token operator\">&#061;<\/span> copy<span class=\"token punctuation\">.<\/span>deepcopy<span class=\"token punctuation\">(<\/span>original<span class=\"token punctuation\">)<\/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 number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">100<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>original<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [[99, 2], [3, 4]]  \u2190 \u4e0d\u53d7\u5f71\u54cd<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u5bf9\u4e8e\u5d4c\u5957\u7ed3\u6784&#xff0c;\u4f7f\u7528 copy.deepcopy() \u624d\u80fd\u505a\u5230\u771f\u6b63\u72ec\u7acb\u7684\u590d\u5236\u3002\u4f46\u6df1\u62f7\u8d1d\u6027\u80fd\u5f00\u9500\u8f83\u5927&#xff0c;\u53ea\u5728\u786e\u5b9e\u9700\u8981\u65f6\u4f7f\u7528\u3002<\/p>\n<h4>6.6 enumerate \u4e0e zip<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;enumerate() \u540c\u65f6\u83b7\u53d6\u7d22\u5f15\u548c\u5143\u7d20\u503c&#xff0c;zip() \u5c06\u591a\u4e2a\u5217\u8868\u6253\u5305\u6210\u4e00\u5bf9\u5bf9\u5143\u7ec4&#xff0c;\u662f\u904d\u5386\u4e2d\u6700\u5e38\u7528\u7684\u4e24\u4e2a\u5185\u7f6e\u51fd\u6570&#xff1a;<\/p>\n<p>fruits <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;\u82f9\u679c&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u9999\u8549&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u6a59\u5b50&#034;<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p><span class=\"token comment\"># enumerate: \u540c\u65f6\u83b7\u53d6\u7d22\u5f15\u548c\u503c<\/span><br \/>\n<span class=\"token keyword\">for<\/span> i<span class=\"token punctuation\">,<\/span> fruit <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">enumerate<\/span><span class=\"token punctuation\">(<\/span>fruits<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>i<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>fruit<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token comment\"># 0: \u82f9\u679c<\/span><br \/>\n<span class=\"token comment\"># 1: \u9999\u8549<\/span><br \/>\n<span class=\"token comment\"># 2: \u6a59\u5b50<\/span><\/p>\n<p><span class=\"token keyword\">for<\/span> i<span class=\"token punctuation\">,<\/span> fruit <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">enumerate<\/span><span class=\"token punctuation\">(<\/span>fruits<span class=\"token punctuation\">,<\/span> start<span class=\"token operator\">&#061;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>i<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>fruit<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token comment\"># 1: \u82f9\u679c<\/span><br \/>\n<span class=\"token comment\"># 2: \u9999\u8549<\/span><br \/>\n<span class=\"token comment\"># 3: \u6a59\u5b50<\/span><\/p>\n<p><span class=\"token comment\"># zip: \u540c\u65f6\u904d\u5386\u591a\u4e2a\u5217\u8868<\/span><br \/>\nnames <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Bob&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Charlie&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\nages <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">25<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">30<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">35<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p><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><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u4eca\u5e74 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>age<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u5c81&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># zip \u4f1a\u5728\u6700\u77ed\u7684\u5217\u8868\u7ed3\u675f\u65f6\u505c\u6b62<\/span><br \/>\na <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><br \/>\nb <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;a&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;b&#039;<\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">zip<\/span><span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">,<\/span> b<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [(1, &#039;a&#039;), (2, &#039;b&#039;)]<\/span><\/p>\n<p><span class=\"token comment\"># \u9700\u8981\u4e25\u683c\u5339\u914d\u957f\u5ea6&#xff1f;\u7528 zip_longest<\/span><br \/>\n<span class=\"token keyword\">from<\/span> itertools <span class=\"token keyword\">import<\/span> zip_longest<br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span>zip_longest<span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">,<\/span> b<span class=\"token punctuation\">,<\/span> fillvalue<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">None<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token comment\"># [(1, &#039;a&#039;), (2, &#039;b&#039;), (3, None)]<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;enumerate(seq, start&#061;1) \u8ba9\u5e8f\u53f7\u4ece1\u5f00\u59cb&#xff0c;zip() \u6309\u6700\u77ed\u5217\u8868\u622a\u65ad&#xff0c;\u9700\u8981\u4e25\u683c\u5339\u914d\u65f6\u7528 zip_longest()\u3002<\/p>\n<hr \/>\n<h3>7. \u5143\u7ec4&#xff08;Tuple&#xff09;<\/h3>\n<p>\u5143\u7ec4\u662f\u4e0d\u53ef\u53d8\u5e8f\u5217\u7c7b\u578b&#xff0c;\u7528 () \u8868\u793a\u3002\u4e00\u65e6\u521b\u5efa&#xff0c;\u4e0d\u53ef\u4fee\u6539\u3002<\/p>\n<h4>7.1 \u521b\u5efa\u5143\u7ec4<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5143\u7ec4\u7528 () \u6216 tuple() \u521b\u5efa\u3002\u7279\u522b\u6ce8\u610f&#xff1a;\u5355\u5143\u7d20\u5143\u7ec4\u5fc5\u987b\u5728\u5143\u7d20\u540e\u52a0\u9017\u53f7&#xff0c;\u5426\u5219\u4f1a\u88ab\u5f53\u6210\u666e\u901a\u62ec\u53f7\u8868\u8fbe\u5f0f&#xff1a;<\/p>\n<p>t1 <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><br \/>\nt2 <span class=\"token operator\">&#061;<\/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 comment\"># \u9017\u53f7\u521b\u5efa&#xff0c;\u62ec\u53f7\u53ef\u7701\u7565&#xff08;\u4e0d\u63a8\u8350\u7701\u7565&#xff09;<\/span><br \/>\nt3 <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 punctuation\">)<\/span>             <span class=\"token comment\"># \u26a0\ufe0f \u5355\u5143\u7d20\u5143\u7ec4\u5fc5\u987b\u6709\u9017\u53f7&#xff01;<\/span><br \/>\nt4 <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 comment\"># \u8fd9\u4e0d\u662f\u5143\u7ec4&#xff0c;\u662f\u6574\u65701&#xff01;<\/span><br \/>\nt5 <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>               <span class=\"token comment\"># \u7a7a\u5143\u7ec4<\/span><br \/>\nt6 <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">tuple<\/span><span class=\"token punctuation\">(<\/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 punctuation\">)<\/span> <span class=\"token comment\"># \u4ece\u5176\u4ed6\u5e8f\u5217\u521b\u5efa<\/span><br \/>\nt7 <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">tuple<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;hello&#034;<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># (&#039;h&#039;, &#039;e&#039;, &#039;l&#039;, &#039;l&#039;, &#039;o&#039;)<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;(1,) \u662f\u5143\u7ec4&#xff0c;(1) \u53ea\u662f\u6574\u6570 1\u2014\u2014\u9017\u53f7\u624d\u662f\u5143\u7ec4\u7684\u771f\u6b63\u6807\u8bc6&#xff0c;\u62ec\u53f7\u5728\u5f88\u591a\u60c5\u51b5\u4e0b\u53ef\u4ee5\u7701\u7565\u3002<\/p>\n<h4>7.2 \u5143\u7ec4\u7684\u4e0d\u53ef\u53d8\u6027<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5143\u7ec4\u521b\u5efa\u540e\u4e0d\u80fd\u4fee\u6539\u2014\u2014\u4e0d\u80fd\u8d4b\u503c\u3001\u4e0d\u80fd\u6dfb\u52a0\u3001\u4e0d\u80fd\u5220\u9664\u3002\u4f46\u5982\u679c\u5143\u7ec4\u5305\u542b\u53ef\u53d8\u5bf9\u8c61&#xff08;\u5982\u5217\u8868&#xff09;&#xff0c;\u8be5\u53ef\u53d8\u5bf9\u8c61\u7684\u5185\u5bb9\u53ef\u4ee5\u6539\u53d8&#xff1a;<\/p>\n<p>t <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><br \/>\n<span class=\"token comment\"># t[0] &#061; 10          # \u274c TypeError: &#039;tuple&#039; object does not support item assignment<\/span><br \/>\n<span class=\"token comment\"># t.append(4)         # \u274c AttributeError: &#039;tuple&#039; object has no attribute &#039;append&#039;<\/span><\/p>\n<p><span class=\"token comment\"># \u3010\u6ce8\u610f\u3011\u5982\u679c\u5143\u7ec4\u5305\u542b\u53ef\u53d8\u5bf9\u8c61&#xff0c;\u53ef\u53d8\u5bf9\u8c61\u7684\u5185\u5bb9\u53ef\u4ee5\u6539&#xff01;<\/span><br \/>\nt <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/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 punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><br \/>\nt<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>t<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># ([1, 2, 3], 3)  \u5143\u7ec4\u672c\u8eab\u4e0d\u53d8&#xff0c;\u4f46\u5185\u90e8\u7684\u5217\u8868\u53d8\u4e86<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u5143\u7ec4\u7684\u4e0d\u53ef\u53d8\u6307\u7684\u662f\u5f15\u7528\u4e0d\u53ef\u53d8\u2014\u2014\u5143\u7ec4\u4e2d\u5b58\u50a8\u7684\u6bcf\u4e2a\u5143\u7d20\u7684\u5f15\u7528\u4e0d\u80fd\u6539\u53d8&#xff0c;\u4f46\u5982\u679c\u8fd9\u4e2a\u5f15\u7528\u6307\u5411\u4e00\u4e2a\u53ef\u53d8\u5bf9\u8c61&#xff0c;\u8be5\u5bf9\u8c61\u672c\u8eab\u8fd8\u662f\u53ef\u4ee5\u4fee\u6539\u7684\u3002<\/p>\n<h4>7.3 \u5143\u7ec4\u89e3\u5305<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5e8f\u5217\u89e3\u5305\u662f Python \u7684\u4e00\u5927\u7279\u8272&#xff0c;\u53ef\u4ee5\u4e00\u6b21\u6027\u5c06\u5143\u7ec4&#xff08;\u6216\u5217\u8868&#xff09;\u7684\u5143\u7d20\u8d4b\u503c\u7ed9\u591a\u4e2a\u53d8\u91cf\u3002* \u53ef\u4ee5\u6536\u96c6\u591a\u4f59\u5143\u7d20&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u5e8f\u5217\u89e3\u5305&#xff08;unpacking&#xff09;<\/span><br \/>\npoint <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><br \/>\nx<span class=\"token punctuation\">,<\/span> y <span class=\"token operator\">&#061;<\/span> point<br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>x<span class=\"token punctuation\">,<\/span> y<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 3 4<\/span><\/p>\n<p><span class=\"token comment\"># \u591a\u53d8\u91cf\u540c\u65f6\u8d4b\u503c&#xff08;\u672c\u8d28\u662f\u5143\u7ec4\u6253\u5305\u518d\u89e3\u5305&#xff09;<\/span><br \/>\na<span class=\"token punctuation\">,<\/span> b <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><\/p>\n<p><span class=\"token comment\"># \u4ea4\u6362\u53d8\u91cf&#xff08;Python \u7279\u6709\u5199\u6cd5&#xff09;<\/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\"># \u661f\u53f7\u8868\u8fbe\u5f0f&#xff1a;\u6536\u96c6\u591a\u4f59\u5143\u7d20<\/span><br \/>\nfirst<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">*<\/span>middle<span class=\"token punctuation\">,<\/span> last <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><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>first<span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># 1<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>middle<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [2, 3, 4]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>last<span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># 5<\/span><\/p>\n<p>head<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">*<\/span>tail <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><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>head<span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># 1<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>tail<span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># [2, 3]<\/span><\/p>\n<p><span class=\"token comment\"># \u5ffd\u7565\u4e0d\u9700\u8981\u7684\u503c&#xff08;_ \u4f5c\u4e3a\u5360\u4f4d\u7b26&#xff09;<\/span><br \/>\n_<span class=\"token punctuation\">,<\/span> _<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><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>z<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 3<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u89e3\u5305\u8ba9\u4ea4\u6362\u53d8\u91cf a, b &#061; b, a \u53d8\u5f97\u5f02\u5e38\u7b80\u6d01&#xff0c;*middle \u6536\u96c6\u4e2d\u95f4\u5143\u7d20\u3001_ \u5ffd\u7565\u4e0d\u5173\u5fc3\u7684\u503c\u2014\u2014\u8fd9\u4e9b\u90fd\u662f Pythonic \u7684\u7f16\u7801\u98ce\u683c\u3002<\/p>\n<h4>7.4 \u4e3a\u4ec0\u4e48\u4f7f\u7528\u5143\u7ec4&#xff1f;<\/h4>\n<li>\u4e0d\u53ef\u53d8\u6027\u4fdd\u8bc1\u6570\u636e\u4e0d\u4f1a\u88ab\u610f\u5916\u4fee\u6539<\/li>\n<li>\u4f5c\u4e3a\u5b57\u5178\u7684\u952e&#xff08;\u5217\u8868\u4e0d\u80fd&#xff09;<\/li>\n<li>\u6027\u80fd\u7565\u4f18\u4e8e\u5217\u8868<\/li>\n<li>\u8bed\u4e49\u8868\u8fbe&#xff1a;\u6697\u793a\u8fd9\u662f\u4e00\u7ec4\u4e0d\u5e94\u4fee\u6539\u7684\u6570\u636e&#xff08;\u5982\u5750\u6807\u3001RGB\u503c&#xff09;<\/li>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5143\u7ec4\u4e0d\u53ea\u662f\u300c\u4e0d\u53ef\u53d8\u7684\u5217\u8868\u300d\u2014\u2014\u5b83\u8fd8\u53ef\u4ee5\u4f5c\u4e3a\u5b57\u5178\u952e\u3001\u5229\u7528 namedtuple \u521b\u5efa\u8f7b\u91cf\u6570\u636e\u7c7b&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u5143\u7ec4\u4f5c\u4e3a\u5b57\u5178\u7684\u952e<\/span><br \/>\nscores <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Math&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">95<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;English&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">88<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>scores<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Math&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 95<\/span><\/p>\n<p><span class=\"token comment\"># namedtuple&#xff1a;\u5e26\u540d\u79f0\u7684\u5143\u7ec4<\/span><br \/>\n<span class=\"token keyword\">from<\/span> collections <span class=\"token keyword\">import<\/span> namedtuple<\/p>\n<p>Point <span class=\"token operator\">&#061;<\/span> namedtuple<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Point&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;x&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;y&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><br \/>\np <span class=\"token operator\">&#061;<\/span> Point<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><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>p<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">,<\/span> p<span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># 3 4<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>p<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> p<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token comment\"># 3 4&#xff08;\u4ecd\u652f\u6301\u7d22\u5f15\u8bbf\u95ee&#xff09;<\/span><br \/>\n<span class=\"token comment\"># p.x &#061; 5         # \u274c \u4e0d\u53ef\u4fee\u6539&#xff08;\u548c\u666e\u901a\u5143\u7ec4\u4e00\u6837&#xff09;<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u5f53\u4f60\u6709\u4e00\u7ec4\u4e0d\u5e94\u88ab\u4fee\u6539\u7684\u6570\u636e&#xff08;\u5982\u5750\u6807\u3001RGB\u503c\u3001\u6570\u636e\u5e93\u8bb0\u5f55&#xff09;\u65f6&#xff0c;\u5143\u7ec4\u901a\u8fc7\u4e0d\u53ef\u53d8\u6027\u4f20\u8fbe\u4e86\u4e00\u7ec4\u6570\u636e\u7684\u8bed\u4e49\u3002namedtuple \u5219\u662f\u8f7b\u91cf\u6570\u636e\u7c7b\u7684\u7edd\u4f73\u9009\u62e9\u3002<\/p>\n<hr \/>\n<h3>8. \u5b57\u5178&#xff08;Dictionary&#xff09;<\/h3>\n<p>\u5b57\u5178\u662f\u952e\u503c\u5bf9\u7684\u96c6\u5408&#xff0c;\u952e\u5fc5\u987b\u4e0d\u53ef\u53d8&#xff08;\u5b57\u7b26\u4e32\u3001\u6570\u5b57\u3001\u5143\u7ec4&#xff09;&#xff0c;{key: value} \u8868\u793a\u3002Python 3.7&#043; \u5b57\u5178\u4fdd\u6301\u63d2\u5165\u987a\u5e8f\u3002<\/p>\n<h4>8.1 \u521b\u5efa\u4e0e\u8bbf\u95ee<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5b57\u5178\u662f Python \u7684\u6838\u5fc3\u6570\u636e\u7ed3\u6784&#xff0c;\u7528 {} \u6216 dict() \u521b\u5efa&#xff0c;\u6709\u516d\u79cd\u521b\u5efa\u65b9\u5f0f\u3002\u8bbf\u95ee\u65f6\u63a8\u8350\u4f7f\u7528 get() \u800c\u975e\u76f4\u63a5\u7d22\u5f15&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u521b\u5efa\u5b57\u5178<\/span><br \/>\nd1 <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;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;age&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">25<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;city&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u5317\u4eac&#034;<\/span><span class=\"token punctuation\">}<\/span><br \/>\nd2 <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">(<\/span>name<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;Bob&#034;<\/span><span class=\"token punctuation\">,<\/span> age<span class=\"token operator\">&#061;<\/span><span class=\"token number\">30<\/span><span class=\"token punctuation\">)<\/span>           <span class=\"token comment\"># \u952e\u4e3a\u5b57\u7b26\u4e32\u65f6\u53ef\u7528<\/span><br \/>\nd3 <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">(<\/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;Charlie&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;age&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">35<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u4ece\u952e\u503c\u5bf9\u5e8f\u5217\u521b\u5efa<\/span><br \/>\nd4 <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">zip<\/span><span class=\"token punctuation\">(<\/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 string\">&#034;c&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/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 punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>     <span class=\"token comment\"># {&#039;a&#039;: 1, &#039;b&#039;: 2, &#039;c&#039;: 3}<\/span><br \/>\nd5 <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">.<\/span>fromkeys<span class=\"token punctuation\">(<\/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 string\">&#034;c&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span>         <span class=\"token comment\"># {&#039;a&#039;: 0, &#039;b&#039;: 0, &#039;c&#039;: 0}<\/span><br \/>\nd6 <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span>                            <span class=\"token comment\"># \u7a7a\u5b57\u5178<\/span><\/p>\n<p><span class=\"token comment\"># \u8bbf\u95ee\u503c<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>d1<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>                  <span class=\"token comment\"># Alice<\/span><br \/>\n<span class=\"token comment\"># print(d1[&#034;gender&#034;])              # \u274c KeyError&#xff08;\u952e\u4e0d\u5b58\u5728\u65f6&#xff09;<\/span><\/p>\n<p><span class=\"token comment\"># get()&#xff1a;\u952e\u4e0d\u5b58\u5728\u65f6\u8fd4\u56de\u9ed8\u8ba4\u503c&#xff08;\u63a8\u8350&#xff01;&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>d1<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>              <span class=\"token comment\"># Alice<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>d1<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;gender&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u672a\u77e5&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>     <span class=\"token comment\"># \u672a\u77e5&#xff08;\u952e\u4e0d\u5b58\u5728&#xff0c;\u8fd4\u56de\u9ed8\u8ba4\u503c&#xff09;<\/span><\/p>\n<p><span class=\"token comment\"># setdefault()&#xff1a;\u5982\u679c\u952e\u4e0d\u5b58\u5728&#xff0c;\u8bbe\u7f6e\u9ed8\u8ba4\u503c\u5e76\u8fd4\u56de<\/span><br \/>\nd1<span class=\"token punctuation\">.<\/span>setdefault<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;score&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span>          <span class=\"token comment\"># \u4e0d\u5b58\u5728\u5219\u8bbe\u7f6e\u4e3a 0<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>d1<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># {&#8230;, &#039;score&#039;: 0}<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;get(key, default) \u5728\u952e\u4e0d\u5b58\u5728\u65f6\u8fd4\u56de\u9ed8\u8ba4\u503c\u800c\u4e0d\u629b\u5f02\u5e38&#xff1b;setdefault() \u5219\u5728\u952e\u4e0d\u5b58\u5728\u65f6\u540c\u65f6\u8bbe\u7f6e\u9ed8\u8ba4\u503c\u2014\u2014\u4e24\u8005\u90fd\u80fd\u907f\u514d KeyError\u3002<\/p>\n<h4>8.2 \u4fee\u6539\u5b57\u5178<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5b57\u5178\u652f\u6301\u6dfb\u52a0\u3001\u4fee\u6539\u3001\u66f4\u65b0\u3001\u5220\u9664\u548c\u5408\u5e76\u64cd\u4f5c\u3002Python 3.9&#043; \u8fd8\u5f15\u5165\u4e86 | \u548c |&#061; \u5b57\u5178\u5408\u5e76\u8fd0\u7b97\u7b26&#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;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;age&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">25<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\"># \u6dfb\u52a0\/\u4fee\u6539<\/span><br \/>\nuser<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;city&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;\u4e0a\u6d77&#034;<\/span>      <span class=\"token comment\"># \u6dfb\u52a0\u65b0\u952e<\/span><br \/>\nuser<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;age&#034;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">26<\/span>           <span class=\"token comment\"># \u4fee\u6539\u5df2\u6709\u952e<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>user<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># {&#039;name&#039;: &#039;Alice&#039;, &#039;age&#039;: 26, &#039;city&#039;: &#039;\u4e0a\u6d77&#039;}<\/span><\/p>\n<p><span class=\"token comment\"># update()&#xff1a;\u6279\u91cf\u66f4\u65b0<\/span><br \/>\nuser<span class=\"token punctuation\">.<\/span>update<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;age&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">27<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;email&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;alice&#064;example.com&#034;<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>user<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># {&#039;name&#039;: &#039;Alice&#039;, &#039;age&#039;: 27, &#039;city&#039;: &#039;\u4e0a\u6d77&#039;, &#039;email&#039;: &#039;alice&#064;example.com&#039;}<\/span><br \/>\n<span class=\"token comment\"># \u4e5f\u53ef\u4ee5\u7528 update(key&#061;value, &#8230;)<\/span><br \/>\nuser<span class=\"token punctuation\">.<\/span>update<span class=\"token punctuation\">(<\/span>phone<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;123456&#034;<\/span><span class=\"token punctuation\">,<\/span> country<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;\u4e2d\u56fd&#034;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u5220\u9664<\/span><br \/>\n<span class=\"token keyword\">del<\/span> user<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;phone&#034;<\/span><span class=\"token punctuation\">]<\/span>              <span class=\"token comment\"># \u5220\u9664\u6307\u5b9a\u952e&#xff08;\u4e0d\u5b58\u5728\u5219 KeyError&#xff09;<\/span><br \/>\npopped <span class=\"token operator\">&#061;<\/span> user<span class=\"token punctuation\">.<\/span>pop<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;email&#034;<\/span><span class=\"token punctuation\">)<\/span>     <span class=\"token comment\"># \u5f39\u51fa\u5e76\u8fd4\u56de\u503c&#xff08;\u4e0d\u5b58\u5728\u5219 KeyError&#xff09;<\/span><br \/>\npopped <span class=\"token operator\">&#061;<\/span> user<span class=\"token punctuation\">.<\/span>pop<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;email&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u4e0d\u5b58\u5728\u65f6\u8fd4\u56de\u9ed8\u8ba4\u503c<\/span><br \/>\nlast <span class=\"token operator\">&#061;<\/span> user<span class=\"token punctuation\">.<\/span>popitem<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>          <span class=\"token comment\"># \u5f39\u51fa\u6700\u540e\u4e00\u4e2a\u952e\u503c\u5bf9&#xff08;Python 3.7&#043; LIFO&#xff09;<\/span><br \/>\nuser<span class=\"token punctuation\">.<\/span>clear<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>                   <span class=\"token comment\"># \u6e05\u7a7a<\/span><\/p>\n<p><span class=\"token comment\"># \u5b57\u5178\u5408\u5e76&#xff08;Python 3.9&#043;&#xff09;<\/span><br \/>\nd1 <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 number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;b&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">}<\/span><br \/>\nd2 <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;b&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;c&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">4<\/span><span class=\"token punctuation\">}<\/span><br \/>\nmerged <span class=\"token operator\">&#061;<\/span> d1 <span class=\"token operator\">|<\/span> d2               <span class=\"token comment\"># {&#039;a&#039;: 1, &#039;b&#039;: 3, &#039;c&#039;: 4}  \u540e\u8005\u8986\u76d6\u524d\u8005<\/span><br \/>\nd1 <span class=\"token operator\">|<\/span><span class=\"token operator\">&#061;<\/span> d2                       <span class=\"token comment\"># \u539f\u5730\u5408\u5e76<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;pop(key, default) \u6bd4 del \u66f4\u5b89\u5168\u3002d1 | d2 \u5408\u5e76\u5b57\u5178\u65f6&#xff0c;\u76f8\u540c\u952e\u7684\u503c\u4f1a\u88ab d2 \u8986\u76d6&#xff0c;\u975e\u5e38\u76f4\u89c2\u3002<\/p>\n<h4>8.3 \u904d\u5386\u5b57\u5178<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5b57\u5178\u652f\u6301\u904d\u5386\u952e(.keys())\u3001\u503c(.values())\u548c\u952e\u503c\u5bf9(.items())\u3002\u904d\u5386\u65f6\u4e0d\u8981\u76f4\u63a5\u4fee\u6539\u5b57\u5178\u5927\u5c0f&#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;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;age&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">25<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;city&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;\u5317\u4eac&#034;<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\"># \u904d\u5386\u952e<\/span><br \/>\n<span class=\"token keyword\">for<\/span> key <span class=\"token keyword\">in<\/span> user<span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>key<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>keys<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><\/p>\n<p><span class=\"token comment\"># \u904d\u5386\u503c<\/span><br \/>\n<span class=\"token keyword\">for<\/span> value <span class=\"token keyword\">in<\/span> user<span class=\"token punctuation\">.<\/span>values<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>value<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u904d\u5386\u952e\u503c\u5bf9<\/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><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>key<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>value<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u5b89\u5168\u904d\u5386\u5e76\u4fee\u6539&#xff1a;\u5148\u6536\u96c6\u518d\u4fee\u6539<\/span><br \/>\n<span class=\"token comment\"># \u274c \u4e0d\u8981\u5728\u904d\u5386\u65f6\u4fee\u6539\u5b57\u5178\u5927\u5c0f<\/span><br \/>\n<span class=\"token comment\"># for key in user:<\/span><br \/>\n<span class=\"token comment\">#     del user[key]  # RuntimeError!<\/span><\/p>\n<p><span class=\"token comment\"># \u2705 \u5148\u6536\u96c6\u8981\u5220\u9664\u7684\u952e<\/span><br \/>\nto_delete <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>key <span class=\"token keyword\">for<\/span> key <span class=\"token keyword\">in<\/span> user <span class=\"token keyword\">if<\/span> key<span class=\"token punctuation\">.<\/span>startswith<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;a&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">for<\/span> key <span class=\"token keyword\">in<\/span> to_delete<span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">del<\/span> user<span class=\"token punctuation\">[<\/span>key<span class=\"token punctuation\">]<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u904d\u5386\u5b57\u5178\u65f6\u4fee\u6539\u5176\u5927\u5c0f\u4f1a\u5f15\u53d1 RuntimeError\u3002\u6b63\u786e\u7684\u505a\u6cd5\u662f\u5148\u6536\u96c6\u8981\u5220\u9664\u7684\u952e&#xff0c;\u5faa\u73af\u7ed3\u675f\u540e\u518d\u6279\u91cf\u5220\u9664\u3002<\/p>\n<h4>8.4 \u5b57\u5178\u63a8\u5bfc\u5f0f<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5b57\u5178\u63a8\u5bfc\u5f0f\u7528 {key: value for \u2026} \u8bed\u6cd5\u5feb\u901f\u521b\u5efa\u6216\u53d8\u6362\u5b57\u5178&#xff0c;\u652f\u6301\u6761\u4ef6\u8fc7\u6ee4&#xff1a;<\/p>\n<p><span class=\"token comment\"># {key_expr: value_expr for item in iterable}<\/span><\/p>\n<p><span class=\"token comment\"># \u5e73\u65b9\u6570\u5b57\u5178<\/span><br \/>\nsquares <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span>x<span class=\"token punctuation\">:<\/span> x<span class=\"token operator\">**<\/span><span class=\"token number\">2<\/span> <span class=\"token keyword\">for<\/span> x <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>squares<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}<\/span><\/p>\n<p><span class=\"token comment\"># \u4ea4\u6362\u952e\u503c<\/span><br \/>\noriginal <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 number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;b&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;c&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">}<\/span><br \/>\nswapped <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span>v<span class=\"token punctuation\">:<\/span> k <span class=\"token keyword\">for<\/span> k<span class=\"token punctuation\">,<\/span> v <span class=\"token keyword\">in<\/span> original<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>swapped<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># {1: &#039;a&#039;, 2: &#039;b&#039;, 3: &#039;c&#039;}<\/span><\/p>\n<p><span class=\"token comment\"># \u6761\u4ef6\u8fc7\u6ee4<\/span><br \/>\neven_squares <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span>x<span class=\"token punctuation\">:<\/span> x<span class=\"token operator\">**<\/span><span class=\"token number\">2<\/span> <span class=\"token keyword\">for<\/span> x <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 keyword\">if<\/span> x <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><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>even_squares<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u5b57\u5178\u63a8\u5bfc\u5f0f\u6bd4\u4f20\u7edf\u7684 for \u5faa\u73af\u66f4\u7b80\u6d01&#xff0c;\u662f Pythonic \u98ce\u683c\u7684\u4f53\u73b0\u3002\u5e38\u89c1\u7528\u6cd5\u5305\u62ec\u521b\u5efa\u6620\u5c04\u8868\u3001\u4ea4\u6362\u952e\u503c\u3001\u8fc7\u6ee4\u7279\u5b9a\u9879\u7b49\u3002<\/p>\n<h4>8.5 defaultdict \u4e0e Counter<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;collections \u6a21\u5757\u7684 defaultdict \u548c Counter \u662f\u5b57\u5178\u7684\u5f3a\u529b\u6269\u5c55&#xff0c;\u80fd\u6781\u5927\u7b80\u5316\u5206\u7ec4\u548c\u7edf\u8ba1\u7c7b\u4ee3\u7801&#xff1a;<\/p>\n<p><span class=\"token comment\"># &#8212; defaultdict: \u5e26\u9ed8\u8ba4\u503c\u7684\u5b57\u5178 &#8212;<\/span><br \/>\n<span class=\"token keyword\">from<\/span> collections <span class=\"token keyword\">import<\/span> defaultdict<\/p>\n<p><span class=\"token comment\"># \u6309\u7c7b\u578b\u7edf\u8ba1&#xff08;\u65e0\u9700\u68c0\u67e5\u952e\u662f\u5426\u5b58\u5728&#xff09;<\/span><br \/>\nwords <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;apple&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;banana&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;apple&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;orange&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;banana&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;apple&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\nword_count <span class=\"token operator\">&#061;<\/span> defaultdict<span class=\"token punctuation\">(<\/span><span class=\"token builtin\">int<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># int() \u8fd4\u56de 0<\/span><br \/>\n<span class=\"token keyword\">for<\/span> word <span class=\"token keyword\">in<\/span> words<span class=\"token punctuation\">:<\/span><br \/>\n    word_count<span class=\"token punctuation\">[<\/span>word<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">1<\/span>  <span class=\"token comment\"># \u4e0d\u5b58\u5728\u81ea\u52a8\u521d\u59cb\u5316\u4e3a 0<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>word_count<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># defaultdict(&lt;class &#039;int&#039;&gt;, {&#039;apple&#039;: 3, &#039;banana&#039;: 2, &#039;orange&#039;: 1})<\/span><\/p>\n<p><span class=\"token comment\"># \u5206\u7ec4<\/span><br \/>\ngroups <span class=\"token operator\">&#061;<\/span> defaultdict<span class=\"token punctuation\">(<\/span><span class=\"token builtin\">list<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">for<\/span> word <span class=\"token keyword\">in<\/span> words<span class=\"token punctuation\">:<\/span><br \/>\n    groups<span class=\"token punctuation\">[<\/span><span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>word<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span>word<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>groups<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># defaultdict(&lt;class &#039;list&#039;&gt;, {5: [&#039;apple&#039;, &#039;apple&#039;], 6: [&#039;banana&#039;, &#039;orange&#039;, &#039;banana&#039;]})<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; Counter: \u8ba1\u6570\u5668 &#8212;<\/span><br \/>\n<span class=\"token keyword\">from<\/span> collections <span class=\"token keyword\">import<\/span> Counter<\/p>\n<p>cnt <span class=\"token operator\">&#061;<\/span> Counter<span class=\"token punctuation\">(<\/span>words<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>cnt<span class=\"token punctuation\">)<\/span>                   <span class=\"token comment\"># Counter({&#039;apple&#039;: 3, &#039;banana&#039;: 2, &#039;orange&#039;: 1})<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>cnt<span class=\"token punctuation\">.<\/span>most_common<span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># [(&#039;apple&#039;, 3), (&#039;banana&#039;, 2)]  \u524d2\u4e2a\u6700\u5e38\u89c1\u5143\u7d20<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>cnt<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;grape&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>          <span class=\"token comment\"># 0  (\u4e0d\u5b58\u5728\u7684\u952e\u8fd4\u56de 0)<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;defaultdict \u7701\u53bb\u4e86\u68c0\u67e5\u952e\u662f\u5426\u5b58\u5728\u7684\u6837\u677f\u4ee3\u7801&#xff1b;Counter \u8ba9\u9891\u7387\u7edf\u8ba1\u53d8\u4e3a\u4e00\u884c\u4ee3\u7801\u3002\u4e24\u8005\u90fd\u662f\u65e5\u5e38\u7f16\u7a0b\u4e2d\u7684\u9ad8\u9891\u5de5\u5177\u3002<\/p>\n<hr \/>\n<h3>9. \u96c6\u5408&#xff08;Set&#xff09;<\/h3>\n<p>\u96c6\u5408\u662f\u65e0\u5e8f\u3001\u4e0d\u91cd\u590d\u5143\u7d20\u7684\u96c6\u5408&#xff0c;\u7528 {} \u8868\u793a\u3002\u5143\u7d20\u5fc5\u987b\u4e0d\u53ef\u53d8\u3002<\/p>\n<h4>9.1 \u521b\u5efa\u96c6\u5408<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u96c6\u5408\u7528 {} \u6216 set() \u521b\u5efa&#xff0c;\u5143\u7d20\u81ea\u52a8\u53bb\u91cd\u4e14\u65e0\u5e8f\u3002\u6ce8\u610f&#xff1a;set() \u521b\u5efa\u7a7a\u96c6\u5408&#xff0c;{} \u521b\u5efa\u7684\u662f\u7a7a\u5b57\u5178&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u521b\u5efa\u96c6\u5408<\/span><br \/>\ns1 <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><br \/>\ns2 <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">set<\/span><span class=\"token punctuation\">(<\/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\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/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 punctuation\">)<\/span>  <span class=\"token comment\"># {1, 2, 3, 4}  \u81ea\u52a8\u53bb\u91cd<\/span><br \/>\ns3 <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">set<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;hello&#034;<\/span><span class=\"token punctuation\">)<\/span>               <span class=\"token comment\"># {&#039;h&#039;, &#039;e&#039;, &#039;l&#039;, &#039;o&#039;}  l\u53ea\u51fa\u73b0\u4e00\u6b21<\/span><br \/>\ns4 <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">set<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>                      <span class=\"token comment\"># \u7a7a\u96c6\u5408&#xff08;\u4e0d\u80fd\u7528 {}&#xff0c;\u90a3\u662f\u7a7a\u5b57\u5178&#xff09;<\/span><\/p>\n<p><span class=\"token comment\"># \u96c6\u5408\u63a8\u5bfc\u5f0f<\/span><br \/>\nsquares <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span>x<span class=\"token operator\">**<\/span><span class=\"token number\">2<\/span> <span class=\"token keyword\">for<\/span> x <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 punctuation\">}<\/span>  <span class=\"token comment\"># {0, 1, 4, 9, 16, 25, 36, 49, 64, 81}<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u96c6\u5408\u652f\u6301\u63a8\u5bfc\u5f0f&#xff0c;\u548c\u5217\u8868\u63a8\u5bfc\u5f0f\u8bed\u6cd5\u7c7b\u4f3c\u3002\u56e0\u4e3a\u5143\u7d20\u4e0d\u53ef\u53d8&#xff0c;\u96c6\u5408\u4e2d\u4e0d\u80fd\u5305\u542b\u5217\u8868\u6216\u5b57\u5178\u3002<\/p>\n<h4>9.2 \u96c6\u5408\u64cd\u4f5c<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u96c6\u5408\u652f\u6301\u6570\u5b66\u4e2d\u7684\u4ea4\u3001\u5e76\u3001\u5dee\u3001\u5bf9\u79f0\u5dee\u8fd0\u7b97&#xff0c;\u4ee5\u53ca\u5b50\u96c6\/\u8d85\u96c6\u5224\u65ad\u3002\u8fd0\u7b97\u7b26&#xff08;| &amp; &#8211; ^&#xff09;\u548c\u65b9\u6cd5\u6548\u679c\u76f8\u540c&#xff1a;<\/p>\n<p>a <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><br \/>\nb <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 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\"># &#8212; \u6570\u5b66\u96c6\u5408\u8fd0\u7b97 &#8212;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">|<\/span> b<span class=\"token punctuation\">)<\/span>         <span class=\"token comment\"># {1, 2, 3, 4, 5, 6}  \u5e76\u96c6&#xff08;a.union(b)&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">&amp;<\/span> b<span class=\"token punctuation\">)<\/span>         <span class=\"token comment\"># {3, 4}              \u4ea4\u96c6&#xff08;a.intersection(b)&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">&#8211;<\/span> b<span class=\"token punctuation\">)<\/span>         <span class=\"token comment\"># {1, 2}              \u5dee\u96c6&#xff08;a.difference(b)&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>b <span class=\"token operator\">&#8211;<\/span> a<span class=\"token punctuation\">)<\/span>         <span class=\"token comment\"># {5, 6}<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">^<\/span> b<span class=\"token punctuation\">)<\/span>         <span class=\"token comment\"># {1, 2, 5, 6}        \u5bf9\u79f0\u5dee\u96c6&#xff08;a.symmetric_difference(b)&#xff09;<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u96c6\u5408\u5173\u7cfb &#8212;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">&lt;&#061;<\/span> b<span class=\"token punctuation\">)<\/span>        <span class=\"token comment\"># False  a \u662f b \u7684\u5b50\u96c6&#xff1f;(a.issubset(b))<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a <span class=\"token operator\">&gt;&#061;<\/span> b<span class=\"token punctuation\">)<\/span>        <span class=\"token comment\"># False  a \u662f b \u7684\u8d85\u96c6&#xff1f;(a.issuperset(b))<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">.<\/span>isdisjoint<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><span class=\"token number\">7<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">8<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># True  \u6ca1\u6709\u4ea4\u96c6&#xff1f;<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u4fee\u6539\u65b9\u6cd5 &#8212;<\/span><br \/>\ns <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><br \/>\ns<span class=\"token punctuation\">.<\/span>add<span class=\"token punctuation\">(<\/span><span class=\"token number\">4<\/span><span class=\"token punctuation\">)<\/span>             <span class=\"token comment\"># {1, 2, 3, 4}  \u6dfb\u52a0\u5143\u7d20<\/span><br \/>\ns<span class=\"token punctuation\">.<\/span>update<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\"># {1, 2, 3, 4, 5, 6}  \u6279\u91cf\u6dfb\u52a0<\/span><br \/>\ns<span class=\"token punctuation\">.<\/span>remove<span class=\"token punctuation\">(<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span>          <span class=\"token comment\"># \u5220\u9664&#xff08;\u5143\u7d20\u4e0d\u5b58\u5728\u5219 KeyError&#xff09;<\/span><br \/>\ns<span class=\"token punctuation\">.<\/span>discard<span class=\"token punctuation\">(<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span>         <span class=\"token comment\"># \u5220\u9664&#xff08;\u5143\u7d20\u4e0d\u5b58\u5728\u4e5f\u4e0d\u62a5\u9519&#xff01;\u63a8\u8350&#xff09;<\/span><br \/>\ns<span class=\"token punctuation\">.<\/span>pop<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>              <span class=\"token comment\"># \u968f\u673a\u5f39\u51fa\u4e00\u4e2a\u5143\u7d20&#xff08;\u7a7a\u96c6\u5408\u5219 KeyError&#xff09;<\/span><br \/>\ns<span class=\"token punctuation\">.<\/span>clear<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>            <span class=\"token comment\"># \u6e05\u7a7a<\/span><\/p>\n<p><span class=\"token comment\"># \u96c6\u5408\u7684\u539f\u5730\u8fd0\u7b97&#xff08;\u4ee5 _update \u7ed3\u5c3e&#xff09;<\/span><br \/>\na <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><br \/>\na<span class=\"token punctuation\">.<\/span>intersection_update<span class=\"token punctuation\">(<\/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 punctuation\">)<\/span>  <span class=\"token comment\"># a \u53d8\u4e3a {2, 3}<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u539f\u5730\u8fd0\u7b97\u65b9\u6cd5&#xff08;\u5982 intersection_update()&#xff09;\u4ee5 _update \u7ed3\u5c3e&#xff0c;\u76f4\u63a5\u4fee\u6539\u539f\u96c6\u5408\u3002discard() \u6bd4 remove() \u66f4\u5b89\u5168\u2014\u2014\u5143\u7d20\u4e0d\u5b58\u5728\u65f6\u4e0d\u4f1a\u62a5\u9519\u3002<\/p>\n<h4>9.3 \u96c6\u5408\u7684\u5e94\u7528\u573a\u666f<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u96c6\u5408\u5728\u5b9e\u9645\u5e94\u7528\u4e2d\u6700\u5e38\u89c1\u7684\u4e09\u4e2a\u573a\u666f&#xff1a;\u53bb\u91cd\u3001\u5feb\u901f\u6210\u5458\u68c0\u67e5&#xff08;O(1)&#xff09;\u3001\u96c6\u5408\u8fd0\u7b97&#xff08;\u627e\u4ea4\u96c6\/\u5dee\u96c6&#xff09;\u3002frozenset \u662f\u4e0d\u53ef\u53d8\u7248\u672c&#xff0c;\u53ef\u4f5c\u4e3a\u5b57\u5178\u952e&#xff1a;<\/p>\n<p><span class=\"token comment\"># 1. \u53bb\u91cd<\/span><br \/>\nnumbers <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\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/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><br \/>\nunique <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">set<\/span><span class=\"token punctuation\">(<\/span>numbers<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [1, 2, 3, 4]&#xff08;\u987a\u5e8f\u4e0d\u4fdd\u8bc1&#xff09;<\/span><\/p>\n<p><span class=\"token comment\"># \u4fdd\u6301\u987a\u5e8f\u7684\u53bb\u91cd&#xff08;Python 3.7&#043;&#xff09;<\/span><br \/>\nunique_ordered <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">.<\/span>fromkeys<span class=\"token punctuation\">(<\/span>numbers<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [1, 2, 3, 4]<\/span><\/p>\n<p><span class=\"token comment\"># 2. \u6210\u5458\u68c0\u67e5&#xff08;O(1) \u6bd4\u5217\u8868\u7684 O(n) \u5feb&#xff09;<\/span><br \/>\nlarge_set <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">set<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1000000<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">500000<\/span> <span class=\"token keyword\">in<\/span> large_set<span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># \u975e\u5e38\u5feb<\/span><\/p>\n<p><span class=\"token comment\"># 3. \u627e\u5171\u540c\u5143\u7d20<\/span><br \/>\nlist1 <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><br \/>\nlist2 <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 number\">5<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">6<\/span><span class=\"token punctuation\">]<\/span><br \/>\ncommon <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">set<\/span><span class=\"token punctuation\">(<\/span>list1<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&amp;<\/span> <span class=\"token builtin\">set<\/span><span class=\"token punctuation\">(<\/span>list2<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># {3, 4}<\/span><\/p>\n<p><span class=\"token comment\"># 4. Frozen Set&#xff08;\u4e0d\u53ef\u53d8\u96c6\u5408&#xff0c;\u53ef\u4f5c\u4e3a\u5b57\u5178\u7684\u952e&#xff09;<\/span><br \/>\nfs <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">frozenset<\/span><span class=\"token punctuation\">(<\/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 punctuation\">)<\/span><br \/>\n<span class=\"token comment\"># fs.add(4)     # \u274c AttributeError<\/span><br \/>\nd <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span>fs<span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;frozen&#034;<\/span><span class=\"token punctuation\">}<\/span>  <span class=\"token comment\"># \u2705 \u53ef\u4ee5\u4f5c\u4e3a\u952e<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u5f53\u9700\u8981\u9891\u7e41\u5224\u65ad\u5143\u7d20\u662f\u5426\u5b58\u5728\u65f6&#xff0c;\u5c06\u5217\u8868\u8f6c\u4e3a\u96c6\u5408\u53ef\u4ee5\u5927\u5e45\u63d0\u5347\u6027\u80fd&#xff08;\u4ece O(n) \u964d\u5230 O(1)&#xff09;\u3002\u4fdd\u6301\u987a\u5e8f\u7684\u53bb\u91cd\u53ef\u4ee5\u7528 dict.fromkeys() \u5b9e\u73b0\u3002<\/p>\n<hr \/>\n<h3>10. \u6761\u4ef6\u5224\u65ad<\/h3>\n<h4>10.1 if \/ elif \/ else<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u6761\u4ef6\u5224\u65ad\u662f\u7a0b\u5e8f\u6d41\u7a0b\u63a7\u5236\u7684\u57fa\u7840\u3002Python \u4f7f\u7528 if-elif-else \u7ed3\u6784&#xff0c;\u6ce8\u610f\u6bcf\u4e2a\u6761\u4ef6\u540e\u5fc5\u987b\u6709\u5192\u53f7&#xff1a;<\/p>\n<p>score <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">85<\/span><\/p>\n<p><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\">elif<\/span> score <span class=\"token operator\">&gt;&#061;<\/span> <span class=\"token number\">70<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    grade <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;C&#034;<\/span><br \/>\n<span class=\"token keyword\">elif<\/span> score <span class=\"token operator\">&gt;&#061;<\/span> <span class=\"token number\">60<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    grade <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;D&#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;F&#034;<\/span><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u6210\u7ee9\u7b49\u7ea7: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>grade<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u6210\u7ee9\u7b49\u7ea7: B<\/span><\/p>\n<p><span class=\"token comment\"># \u7b80\u5199&#xff08;\u9002\u5408\u7b80\u5355\u60c5\u51b5&#xff09;<\/span><br \/>\nx <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">10<\/span><br \/>\nstatus <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;\u6b63\u6570&#034;<\/span> <span class=\"token keyword\">if<\/span> x <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">0<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token string\">&#034;\u975e\u6b63\u6570&#034;<\/span><br \/>\n<span class=\"token comment\"># \u7b49\u4ef7\u4e8e:<\/span><br \/>\n<span class=\"token comment\"># if x &gt; 0:<\/span><br \/>\n<span class=\"token comment\">#     status &#061; &#034;\u6b63\u6570&#034;<\/span><br \/>\n<span class=\"token comment\"># else:<\/span><br \/>\n<span class=\"token comment\">#     status &#061; &#034;\u975e\u6b63\u6570&#034;<\/span><\/p>\n<p><span class=\"token comment\"># \u5d4c\u5957\u7684\u4e09\u5143\u8fd0\u7b97\u7b26<\/span><br \/>\ny <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">5<\/span><br \/>\nresult <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;\u5927&#034;<\/span> <span class=\"token keyword\">if<\/span> y <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">10<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u5c0f&#034;<\/span> <span class=\"token keyword\">if<\/span> y <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">0<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token string\">&#034;\u96f6\u6216\u8d1f&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>result<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u5c0f<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u4e09\u5143\u8868\u8fbe\u5f0f a if condition else b \u9002\u5408\u7b80\u5355\u7684\u6761\u4ef6\u8d4b\u503c\u3002Python 3.10 \u4e4b\u524d\u7528 elif \u94fe\u66ff\u4ee3 switch-case\u3002<\/p>\n<h4>10.2 \u771f\u503c\u6d4b\u8bd5<\/h4>\n<p>Python \u4e2d\u4ee5\u4e0b\u503c\u88ab\u89c6\u4e3a False&#xff08;\u5047\u503c&#xff09;&#xff0c;\u5176\u4f59\u4e3a True&#xff1a;<\/p>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;Python \u4e2d\u4ee5\u4e0b\u503c\u88ab\u89c6\u4e3a\u5047&#xff1a;False\u3001None\u3001\u5404\u79cd\u96f6\u503c\u3001\u7a7a\u5e8f\u5217\u548c\u7a7a\u96c6\u5408\u3002\u5176\u4f59\u6240\u6709\u503c\u90fd\u662f\u771f\u3002\u81ea\u5b9a\u4e49\u7c7b\u7684\u771f\u503c\u7531 bool() \u6216 len() \u51b3\u5b9a&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u5047\u503c\u5217\u8868<\/span><br \/>\nfalsy <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n    <span class=\"token boolean\">False<\/span><span class=\"token punctuation\">,<\/span>      <span class=\"token comment\"># \u5e03\u5c14\u5047<\/span><br \/>\n    <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">,<\/span>       <span class=\"token comment\"># \u7a7a\u503c<\/span><br \/>\n    <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span>          <span class=\"token comment\"># \u6574\u6570\u96f6<\/span><br \/>\n    <span class=\"token number\">0.0<\/span><span class=\"token punctuation\">,<\/span>        <span class=\"token comment\"># \u6d6e\u70b9\u96f6<\/span><br \/>\n    <span class=\"token number\">0j<\/span><span class=\"token punctuation\">,<\/span>         <span class=\"token comment\"># \u590d\u6570\u96f6<\/span><br \/>\n    <span class=\"token string\">&#034;&#034;<\/span><span class=\"token punctuation\">,<\/span>         <span class=\"token comment\"># \u7a7a\u5b57\u7b26\u4e32<\/span><br \/>\n    <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>         <span class=\"token comment\"># \u7a7a\u5217\u8868<\/span><br \/>\n    <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>         <span class=\"token comment\"># \u7a7a\u5143\u7ec4<\/span><br \/>\n    <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>         <span class=\"token comment\"># \u7a7a\u5b57\u5178<\/span><br \/>\n    <span class=\"token builtin\">set<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>      <span class=\"token comment\"># \u7a7a\u96c6\u5408<\/span><br \/>\n    <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>   <span class=\"token comment\"># \u7a7a\u8303\u56f4<\/span><br \/>\n<span class=\"token punctuation\">]<\/span><\/p>\n<p><span class=\"token keyword\">for<\/span> value <span class=\"token keyword\">in<\/span> falsy<span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><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 conversion-option punctuation\">!r<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">10<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> -&gt; <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token builtin\">bool<\/span><span class=\"token punctuation\">(<\/span>value<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u771f\u503c\u6d4b\u8bd5\u5728\u6761\u4ef6\u5224\u65ad\u4e2d\u7684\u5e94\u7528<\/span><br \/>\nname <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;&#034;<\/span><br \/>\n<span class=\"token keyword\">if<\/span> name<span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u4f60\u597d&#xff0c;<\/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 punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">else<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u540d\u79f0\u4e3a\u7a7a&#034;<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u8f93\u51fa\u8fd9\u4e2a<\/span><\/p>\n<p><span class=\"token comment\"># \u81ea\u5b9a\u4e49\u7c7b\u7684\u771f\u503c&#xff1a;\u5b9e\u73b0 __bool__() \u6216 __len__() \u65b9\u6cd5<\/span><br \/>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">MyCollection<\/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> items<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>items <span class=\"token operator\">&#061;<\/span> items<\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__len__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>items<span class=\"token punctuation\">)<\/span><\/p>\n<p>c <span class=\"token operator\">&#061;<\/span> MyCollection<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\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">bool<\/span><span class=\"token punctuation\">(<\/span>c<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># False<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u5229\u7528\u771f\u503c\u6d4b\u8bd5\u53ef\u4ee5\u5199\u51fa\u7b80\u6d01\u7684\u4ee3\u7801&#xff1a;if name: \u4ee3\u66ff if name !&#061; \u2018\u2019&#xff0c;if items: \u4ee3\u66ff if len(items) &gt; 0\u3002\u8fd9\u662f Pythonic \u98ce\u683c\u7684\u4f53\u73b0\u3002<\/p>\n<h4>10.3 match \/ case&#xff08;Python 3.10&#043;&#xff09;<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;Python 3.10 \u5f15\u5165\u7684\u7ed3\u6784\u5316\u6a21\u5f0f\u5339\u914d match-case \u6bd4\u4f20\u7edf\u7684 if-elif \u66f4\u5f3a\u5927\u2014\u2014\u652f\u6301\u591a\u503c\u5339\u914d\u3001\u5e8f\u5217\u89e3\u6784\u3001\u5b57\u5178\u5339\u914d\u548c\u5b88\u536b\u6761\u4ef6&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u7c7b\u4f3c\u5176\u4ed6\u8bed\u8a00\u7684 switch<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">describe<\/span><span class=\"token punctuation\">(<\/span>status_code<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">match<\/span> status_code<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">case<\/span> <span class=\"token number\">200<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;\u6210\u529f&#034;<\/span><br \/>\n        <span class=\"token keyword\">case<\/span> <span class=\"token number\">301<\/span> <span class=\"token operator\">|<\/span> <span class=\"token number\">302<\/span><span class=\"token punctuation\">:<\/span>            <span class=\"token comment\"># \u591a\u4e2a\u503c<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;\u91cd\u5b9a\u5411&#034;<\/span><br \/>\n        <span class=\"token keyword\">case<\/span> <span class=\"token number\">404<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;\u672a\u627e\u5230&#034;<\/span><br \/>\n        <span class=\"token keyword\">case<\/span> <span class=\"token number\">500<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;\u670d\u52a1\u5668\u9519\u8bef&#034;<\/span><br \/>\n        <span class=\"token keyword\">case<\/span> <span class=\"token keyword\">_<\/span><span class=\"token punctuation\">:<\/span>                     <span class=\"token comment\"># \u9ed8\u8ba4&#xff08;\u901a\u914d\u7b26&#xff09;<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;\u672a\u77e5\u72b6\u6001&#034;<\/span><\/p>\n<p><span class=\"token comment\"># \u7ed3\u6784\u5339\u914d&#xff08;\u66f4\u5f3a\u5927\u7684\u7528\u6cd5&#xff09;<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">process_point<\/span><span class=\"token punctuation\">(<\/span>point<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">match<\/span> point<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">case<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;\u539f\u70b9&#034;<\/span><br \/>\n        <span class=\"token keyword\">case<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> y<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;Y \u8f74, y&#061;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>y<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>x<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><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;X \u8f74, x&#061;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>x<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>x<span class=\"token punctuation\">,<\/span> y<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">if<\/span> x <span class=\"token operator\">&#061;&#061;<\/span> y<span class=\"token punctuation\">:<\/span>     <span class=\"token comment\"># \u5e26\u5b88\u536b\u6761\u4ef6<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u5728\u7b2c\u4e00\/\u4e09\u8c61\u9650\u5bf9\u89d2\u7ebf\u4e0a&#034;<\/span><\/span><br \/>\n        <span class=\"token keyword\">case<\/span> <span class=\"token punctuation\">(<\/span>x<span class=\"token punctuation\">,<\/span> y<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;\u5750\u6807 (<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>x<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">, <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>y<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">)&#034;<\/span><\/span><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>process_point<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># \u539f\u70b9<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>process_point<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># Y \u8f74, y&#061;5<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>process_point<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># \u5728\u7b2c\u4e00\/\u4e09\u8c61\u9650\u5bf9\u89d2\u7ebf\u4e0a<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>process_point<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># \u5750\u6807 (2, 5)<\/span><\/p>\n<p><span class=\"token comment\"># \u5339\u914d\u5217\u8868\u7ed3\u6784<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">analyze_list<\/span><span class=\"token punctuation\">(<\/span>lst<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">match<\/span> lst<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">case<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;\u7a7a\u5217\u8868&#034;<\/span><br \/>\n        <span class=\"token keyword\">case<\/span> <span class=\"token punctuation\">[<\/span>first<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">*<\/span>rest<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;\u9996\u5143\u7d20: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>first<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">, \u5269\u4f59: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>rest<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>analyze_list<span class=\"token punctuation\">(<\/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 punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u9996\u5143\u7d20: 1, \u5269\u4f59: [2, 3]<\/span><\/p>\n<p><span class=\"token comment\"># \u5339\u914d\u5b57\u5178\u7ed3\u6784<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">analyze_dict<\/span><span class=\"token punctuation\">(<\/span>d<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">match<\/span> d<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">case<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">:<\/span> name<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;age&#034;<\/span><span class=\"token punctuation\">:<\/span> age<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;\u59d3\u540d: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">, \u5e74\u9f84: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>age<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;name&#034;<\/span><span class=\"token punctuation\">:<\/span> name<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;\u59d3\u540d: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">, \u5e74\u9f84\u672a\u77e5&#034;<\/span><\/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;\u672a\u77e5\u683c\u5f0f&#034;<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;match-case \u4e0d\u662f\u7b80\u5355\u7684 switch \u66ff\u4ee3\u54c1\u2014\u2014\u5b83\u662f\u771f\u6b63\u7684\u6a21\u5f0f\u5339\u914d&#xff0c;\u80fd\u540c\u65f6\u5339\u914d\u7ed3\u6784\u5e76\u7ed1\u5b9a\u53d8\u91cf\u3002\u7279\u522b\u9002\u5408\u89e3\u6790\u590d\u6742\u6570\u636e\u7ed3\u6784\u3001\u5b9e\u73b0\u72b6\u6001\u673a\u7b49\u573a\u666f\u3002<\/p>\n<hr \/>\n<h3>11. \u5faa\u73af\u8bed\u53e5<\/h3>\n<h4>11.1 for \u5faa\u73af<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;for \u5faa\u73af\u662f Python \u6700\u5e38\u7528\u7684\u5faa\u73af\u65b9\u5f0f&#xff0c;\u53ef\u4ee5\u904d\u5386\u5217\u8868\u3001\u5b57\u5178\u3001range \u5bf9\u8c61\u7b49\u4efb\u4f55\u53ef\u8fed\u4ee3\u5bf9\u8c61&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u904d\u5386\u5217\u8868<\/span><br \/>\nfruits <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;\u82f9\u679c&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u9999\u8549&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u6a59\u5b50&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">for<\/span> fruit <span class=\"token keyword\">in<\/span> fruits<span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>fruit<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u904d\u5386\u5b57\u5178<\/span><br \/>\nuser <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;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;age&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">25<\/span><span class=\"token punctuation\">}<\/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><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>key<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>value<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u904d\u5386\u8303\u56f4<\/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\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>        <span class=\"token comment\"># 0, 1, 2, 3, 4<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">)<\/span><\/p>\n<p><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\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">7<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>     <span class=\"token comment\"># 2, 3, 4, 5, 6  (start, stop)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">)<\/span><\/p>\n<p><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\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token comment\"># 0, 2, 4, 6, 8   (start, stop, step)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">)<\/span><\/p>\n<p><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\"># 10, 9, 8, &#8230;, 1  \u5012\u5e8f<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u7528 enumerate \u83b7\u53d6\u7d22\u5f15<\/span><br \/>\n<span class=\"token keyword\">for<\/span> i<span class=\"token punctuation\">,<\/span> fruit <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">enumerate<\/span><span class=\"token punctuation\">(<\/span>fruits<span class=\"token punctuation\">,<\/span> start<span class=\"token operator\">&#061;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>i<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">. <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>fruit<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;range(start, stop, step) \u751f\u6210\u6574\u6570\u5e8f\u5217&#xff0c;enumerate() \u540c\u65f6\u83b7\u53d6\u7d22\u5f15\u548c\u503c\u3002Python \u7684 for \u5faa\u73af\u7b80\u6d01\u800c\u5f3a\u5927\u3002<\/p>\n<h4>11.2 while \u5faa\u73af<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;while \u5faa\u73af\u5728\u6761\u4ef6\u4e3a\u771f\u65f6\u53cd\u590d\u6267\u884c\u3002\u9002\u5408\u4e0d\u77e5\u9053\u5faa\u73af\u6b21\u6570\u7684\u573a\u666f&#xff0c;\u6216\u8005\u5b9e\u73b0\u65e0\u9650\u5faa\u73af&#043;break \u7684\u6a21\u5f0f&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u57fa\u672c while \u5faa\u73af<\/span><br \/>\ncount <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><br \/>\n<span class=\"token keyword\">while<\/span> count <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>count<span class=\"token punctuation\">)<\/span><br \/>\n    count <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">1<\/span><\/p>\n<p><span class=\"token comment\"># \u4f7f\u7528\u6807\u5fd7\u7684 while \u5faa\u73af<\/span><br \/>\nrunning <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">True<\/span><br \/>\nattempts <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><br \/>\n<span class=\"token keyword\">while<\/span> running<span class=\"token punctuation\">:<\/span><br \/>\n    attempts <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">1<\/span><br \/>\n    <span class=\"token comment\"># &#8230; \u5904\u7406\u903b\u8f91 &#8230;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> attempts <span class=\"token operator\">&gt;&#061;<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        running <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">False<\/span><\/p>\n<p><span class=\"token comment\"># \u65e0\u9650\u5faa\u73af &#043; break<\/span><br \/>\n<span class=\"token keyword\">while<\/span> <span class=\"token boolean\">True<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    user_input <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">input<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u8f93\u5165 &#039;quit&#039; \u9000\u51fa: &#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> user_input <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token string\">&#034;quit&#034;<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">break<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u4f60\u8f93\u5165\u4e86: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>user_input<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u6ce8\u610f\u9632\u6b62\u65e0\u9650\u5faa\u73af\u2014\u2014\u786e\u4fdd\u5faa\u73af\u6761\u4ef6\u6700\u7ec8\u4f1a\u53d8\u4e3a False&#xff0c;\u6216\u8005\u5728\u5faa\u73af\u4f53\u5185\u4f7f\u7528 break \u9000\u51fa\u3002while True &#043; break \u662f\u4e00\u79cd\u5e38\u89c1\u7684\u4ea4\u4e92\u5f0f\u7a0b\u5e8f\u6a21\u5f0f\u3002<\/p>\n<h4>11.3 \u5faa\u73af\u63a7\u5236<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;break \u7acb\u5373\u9000\u51fa\u5faa\u73af&#xff0c;continue \u8df3\u8fc7\u5f53\u524d\u8fed\u4ee3&#xff0c;pass \u4ec0\u4e48\u90fd\u4e0d\u505a\u53ea\u4f5c\u5360\u4f4d\u3002for\u2026else \u5728\u5faa\u73af\u6b63\u5e38\u7ed3\u675f&#xff08;\u975e break \u9000\u51fa&#xff09;\u65f6\u6267\u884c&#xff1a;<\/p>\n<p><span class=\"token comment\"># break&#xff1a;\u7acb\u5373\u9000\u51fa\u6574\u4e2a\u5faa\u73af<\/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 punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> i <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">break<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">,<\/span> end<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034; &#034;<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 0 1 2 3 4<\/span><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u6362\u884c<\/span><\/p>\n<p><span class=\"token comment\"># continue&#xff1a;\u8df3\u8fc7\u5f53\u524d\u8fed\u4ee3&#xff0c;\u8fdb\u5165\u4e0b\u4e00\u6b21<\/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 punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> i <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><br \/>\n        <span class=\"token keyword\">continue<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">,<\/span> end<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034; &#034;<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 1 3 5 7 9<\/span><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># pass&#xff1a;\u5360\u4f4d\u7b26&#xff0c;\u4ec0\u4e48\u90fd\u4e0d\u505a<\/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\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> i <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">pass<\/span>  <span class=\"token comment\"># \u4ee5\u540e\u518d\u6765\u5904\u7406<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">,<\/span> end<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034; &#034;<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 0 1 2 3 4<\/span><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># for &#8230; else&#xff1a;\u5faa\u73af\u6b63\u5e38\u7ed3\u675f\u65f6\u6267\u884c else<\/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\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">else<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u5faa\u73af\u6b63\u5e38\u7ed3\u675f&#034;<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u4f1a\u6267\u884c<\/span><\/p>\n<p><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\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> i <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token number\">3<\/span><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\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u4e0d\u4f1a\u6267\u884c&#034;<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u2190 break \u540e\u4e0d\u6267\u884c else<\/span><\/p>\n<p><span class=\"token comment\"># while &#8230; else \u540c\u6837\u9002\u7528<\/span><br \/>\nn <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><br \/>\n<span class=\"token keyword\">while<\/span> n <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    n <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">1<\/span><br \/>\n<span class=\"token keyword\">else<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;while \u6b63\u5e38\u7ed3\u675f&#034;<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u6267\u884c<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;for\u2026else \u662f Python \u7279\u6709\u7684\u8bed\u6cd5&#xff0c;\u7279\u522b\u9002\u5408\u641c\u7d22-\u672a\u627e\u5230\u7684\u6a21\u5f0f&#xff1a;\u5728\u5faa\u73af\u4e2d\u627e\u5230\u76ee\u6807\u5c31 break&#xff0c;else \u5757\u5904\u7406\u672a\u627e\u5230\u7684\u60c5\u51b5\u3002<\/p>\n<h4>11.4 \u5faa\u73af\u6280\u5de7<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5229\u7528 zip() \u540c\u65f6\u904d\u5386\u591a\u4e2a\u5e8f\u5217\u3001reversed() \u53cd\u5411\u904d\u5386\u3001sorted() \u6309\u6392\u5e8f\u904d\u5386\u2014\u2014\u8fd9\u4e9b\u6280\u5de7\u8ba9\u4f60\u7684\u5faa\u73af\u4ee3\u7801\u66f4\u4f18\u96c5&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u904d\u5386\u4e24\u4e2a\u5e8f\u5217&#xff08;zip&#xff09;<\/span><br \/>\nnames <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Bob&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Charlie&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\nscores <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">95<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">87<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">92<\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">for<\/span> name<span class=\"token punctuation\">,<\/span> score <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">zip<\/span><span class=\"token punctuation\">(<\/span>names<span class=\"token punctuation\">,<\/span> scores<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>score<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\u5206&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u53cd\u5411\u904d\u5386<\/span><br \/>\n<span class=\"token keyword\">for<\/span> i <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">reversed<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">5<\/span><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>i<span class=\"token punctuation\">,<\/span> end<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034; &#034;<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 4 3 2 1 0<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u6392\u5e8f\u904d\u5386<\/span><br \/>\nnums <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\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">4<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">for<\/span> n <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">sorted<\/span><span class=\"token punctuation\">(<\/span>nums<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">,<\/span> end<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034; &#034;<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 1 1 3 4 5<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">for<\/span> n <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">sorted<\/span><span class=\"token punctuation\">(<\/span>nums<span class=\"token punctuation\">,<\/span> reverse<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">,<\/span> end<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034; &#034;<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 5 4 3 1 1<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u638c\u63e1\u8fd9\u4e9b\u5185\u7f6e\u51fd\u6570&#xff0c;\u53ef\u4ee5\u5927\u5e45\u51cf\u5c11\u5faa\u73af\u4e2d\u7684\u7d22\u5f15\u64cd\u4f5c&#xff0c;\u5199\u51fa\u66f4 Pythonic \u7684\u4ee3\u7801\u3002<\/p>\n<hr \/>\n<h3>12. \u51fd\u6570<\/h3>\n<h4>12.1 \u5b9a\u4e49\u4e0e\u8c03\u7528<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u4f7f\u7528 def \u5173\u952e\u5b57\u5b9a\u4e49\u51fd\u6570&#xff0c;return \u8fd4\u56de\u503c\u3002\u51fd\u6570\u6587\u6863\u5b57\u7b26\u4e32&#xff08;docstring&#xff09;\u7528\u4e09\u5f15\u53f7\u4e66\u5199&#xff0c;\u53ef\u901a\u8fc7 doc \u6216 help() \u67e5\u770b&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u57fa\u672c\u51fd\u6570<\/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 punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u5411\u6307\u5b9a\u7684\u4eba\u6253\u62db\u547c&#xff08;\u51fd\u6570\u6587\u6863\u5b57\u7b26\u4e32&#xff09;&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u4f60\u597d&#xff0c;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#xff01;&#034;<\/span><\/span><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>greet<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Alice&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u4f60\u597d&#xff0c;Alice&#xff01;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>greet<span class=\"token punctuation\">.<\/span>__doc__<span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># \u5411\u6307\u5b9a\u7684\u4eba\u6253\u62db\u547c&#xff08;\u51fd\u6570\u6587\u6863\u5b57\u7b26\u4e32&#xff09;<\/span><br \/>\n<span class=\"token builtin\">help<\/span><span class=\"token punctuation\">(<\/span>greet<span class=\"token punctuation\">)<\/span>            <span class=\"token comment\"># \u8fd4\u56de\u66f4\u8be6\u7ec6\u7684\u4fe1\u606f<\/span><\/p>\n<p><span class=\"token comment\"># \u591a\u4e2a\u53c2\u6570<\/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> b<span class=\"token punctuation\">)<\/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><span class=\"token comment\"># \u65e0\u8fd4\u56de\u503c&#xff1a;\u9ed8\u8ba4\u8fd4\u56de None<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">log_message<\/span><span class=\"token punctuation\">(<\/span>msg<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;[LOG] <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>msg<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token comment\"># \u9690\u5f0f return None<\/span><\/p>\n<p>result <span class=\"token operator\">&#061;<\/span> log_message<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;test&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>result<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># None<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;Python \u51fd\u6570\u5982\u679c\u6ca1\u6709\u663e\u5f0f return&#xff0c;\u9ed8\u8ba4\u8fd4\u56de None\u3002\u517b\u6210\u5199 docstring \u7684\u597d\u4e60\u60ef&#xff0c;\u5b83\u80fd\u88ab IDE \u548c help() \u8bc6\u522b\u3002<\/p>\n<h4>12.2 \u53c2\u6570\u7c7b\u578b<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;Python \u51fd\u6570\u652f\u6301\u56db\u79cd\u53c2\u6570\u7c7b\u578b&#xff1a;\u4f4d\u7f6e\u53c2\u6570\u3001\u9ed8\u8ba4\u53c2\u6570\u3001*args&#xff08;\u53ef\u53d8\u4f4d\u7f6e\u53c2\u6570&#xff09;\u3001**kwargs&#xff08;\u53ef\u53d8\u5173\u952e\u5b57\u53c2\u6570&#xff09;\u3002\u53c2\u6570\u987a\u5e8f\u5fc5\u987b\u4e25\u683c\u6309\u7167\u8fd9\u4e2a\u987a\u5e8f&#xff1a;<\/p>\n<p><span class=\"token comment\"># &#8212; \u4f4d\u7f6e\u53c2\u6570 &#8212;<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">power<\/span><span class=\"token punctuation\">(<\/span>base<span class=\"token punctuation\">,<\/span> exp<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> base <span class=\"token operator\">**<\/span> exp<\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>power<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 punctuation\">)<\/span>         <span class=\"token comment\"># 8&#xff08;\u4f4d\u7f6e\u53c2\u6570&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>power<span class=\"token punctuation\">(<\/span>exp<span class=\"token operator\">&#061;<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> base<span class=\"token operator\">&#061;<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token comment\"># 8&#xff08;\u5173\u952e\u5b57\u53c2\u6570&#xff09;<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u9ed8\u8ba4\u53c2\u6570 &#8212;<\/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> greeting<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;\u4f60\u597d&#034;<\/span><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;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>greeting<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#xff0c;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#xff01;&#034;<\/span><\/span><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>greet<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Alice&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>              <span class=\"token comment\"># \u4f60\u597d&#xff0c;Alice&#xff01;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>greet<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Bob&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u65e9\u4e0a\u597d&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># \u65e9\u4e0a\u597d&#xff0c;Bob&#xff01;<\/span><\/p>\n<p><span class=\"token comment\"># \u26a0\ufe0f \u9ed8\u8ba4\u53c2\u6570\u7684\u9677\u9631&#xff1a;\u4e0d\u8981\u7528\u53ef\u53d8\u5bf9\u8c61\u4f5c\u4e3a\u9ed8\u8ba4\u503c&#xff01;<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">bad_append<\/span><span class=\"token punctuation\">(<\/span>item<span class=\"token punctuation\">,<\/span> lst<span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    lst<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span>item<span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> lst<\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>bad_append<span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [1]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>bad_append<span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [1, 2]  \u2190 \u7d2f\u79ef\u4e86&#xff01;\u9ed8\u8ba4\u5217\u8868\u662f\u51fd\u6570\u5b9a\u4e49\u65f6\u521b\u5efa\u7684&#xff0c;\u6bcf\u6b21\u8c03\u7528\u5171\u4eab<\/span><\/p>\n<p><span class=\"token comment\"># \u2705 \u6b63\u786e\u505a\u6cd5<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">good_append<\/span><span class=\"token punctuation\">(<\/span>item<span class=\"token punctuation\">,<\/span> lst<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">None<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> lst <span class=\"token keyword\">is<\/span> <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        lst <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><br \/>\n    lst<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span>item<span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> lst<\/p>\n<p><span class=\"token comment\"># &#8212; \u53ef\u53d8\u53c2\u6570 *args&#xff08;\u4f4d\u7f6e\u53c2\u6570&#xff09; &#8212;<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">my_sum<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">*<\/span>args<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u63a5\u53d7\u4efb\u610f\u6570\u91cf\u7684\u4f4d\u7f6e\u53c2\u6570&#034;&#034;&#034;<\/span><br \/>\n    total <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> num <span class=\"token keyword\">in<\/span> args<span class=\"token punctuation\">:<\/span><br \/>\n        total <span class=\"token operator\">&#043;&#061;<\/span> num<br \/>\n    <span class=\"token keyword\">return<\/span> total<\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>my_sum<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 punctuation\">)<\/span>          <span class=\"token comment\"># 3<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>my_sum<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 punctuation\">)<\/span> <span class=\"token comment\"># 15<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>my_sum<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>               <span class=\"token comment\"># 0<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u53ef\u53d8\u53c2\u6570 **kwargs&#xff08;\u5173\u952e\u5b57\u53c2\u6570&#xff09; &#8212;<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">print_info<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">**<\/span>kwargs<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u63a5\u53d7\u4efb\u610f\u6570\u91cf\u7684\u5173\u952e\u5b57\u53c2\u6570&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> key<span class=\"token punctuation\">,<\/span> value <span class=\"token keyword\">in<\/span> kwargs<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><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>key<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>value<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>print_info<span class=\"token punctuation\">(<\/span>name<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> age<span class=\"token operator\">&#061;<\/span><span class=\"token number\">25<\/span><span class=\"token punctuation\">,<\/span> city<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;\u5317\u4eac&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token comment\"># name: Alice<\/span><br \/>\n<span class=\"token comment\"># age: 25<\/span><br \/>\n<span class=\"token comment\"># city: \u5317\u4eac<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u6240\u6709\u53c2\u6570\u7c7b\u578b\u7ec4\u5408 &#8212;<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">all_params<\/span><span class=\"token punctuation\">(<\/span>pos1<span class=\"token punctuation\">,<\/span> pos2<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">*<\/span>args<span class=\"token punctuation\">,<\/span> default<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;\u9ed8\u8ba4\u503c&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token operator\">**<\/span>kwargs<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    \u53c2\u6570\u987a\u5e8f&#xff08;\u5fc5\u987b\u4e25\u683c\u9075\u5b88&#xff09;&#xff1a;<br \/>\n    1. \u4f4d\u7f6e\u53c2\u6570&#xff08;\u5fc5\u586b&#xff09;<br \/>\n    2. *args&#xff08;\u53ef\u53d8\u4f4d\u7f6e&#xff09;<br \/>\n    3. \u9ed8\u8ba4\u53c2\u6570&#xff08;\u5173\u952e\u5b57\u53c2\u6570&#xff09;<br \/>\n    4. **kwargs&#xff08;\u53ef\u53d8\u5173\u952e\u5b57&#xff09;<br \/>\n    &#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;pos1: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>pos1<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;pos2: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>pos2<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;args: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>args<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;default: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>default<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;kwargs: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>kwargs<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>all_params<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> default<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;\u81ea\u5b9a\u4e49&#034;<\/span><span class=\"token punctuation\">,<\/span> name<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> age<span class=\"token operator\">&#061;<\/span><span class=\"token number\">25<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u6700\u5e38\u89c1\u7684\u9677\u9631\u662f\u53ef\u53d8\u9ed8\u8ba4\u53c2\u6570&#xff08;\u5982 def f(lst&#061;[])&#xff09;\u2014\u2014\u9ed8\u8ba4\u503c\u5728\u51fd\u6570\u5b9a\u4e49\u65f6\u53ea\u521b\u5efa\u4e00\u6b21&#xff0c;\u591a\u6b21\u8c03\u7528\u4f1a\u5171\u4eab&#xff01;\u6b63\u786e\u505a\u6cd5\u662f\u7528 None \u4f5c\u9ed8\u8ba4\u503c&#xff0c;\u51fd\u6570\u5185\u518d\u521d\u59cb\u5316\u3002<\/p>\n<h4>12.3 \u4ec5\u9650\u5173\u952e\u5b57\u53c2\u6570<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5728\u53c2\u6570\u5217\u8868\u4e2d\u4f7f\u7528 * \u53ef\u4ee5\u5f3a\u5236\u540e\u9762\u7684\u53c2\u6570\u5fc5\u987b\u4ee5\u5173\u952e\u5b57\u5f62\u5f0f\u4f20\u9012&#xff0c;\u63d0\u9ad8\u4ee3\u7801\u53ef\u8bfb\u6027\u3002\/ \u5219\u76f8\u53cd&#xff0c;\u5f3a\u5236\u524d\u9762\u7684\u53c2\u6570\u53ea\u80fd\u6309\u4f4d\u7f6e\u4f20\u9012&#xff1a;<\/p>\n<p><span class=\"token comment\"># * \u4e4b\u540e\u7684\u53c2\u6570\u5fc5\u987b\u4ee5\u5173\u952e\u5b57\u5f62\u5f0f\u4f20\u9012<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">config<\/span><span class=\"token punctuation\">(<\/span>host<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">*<\/span><span class=\"token punctuation\">,<\/span> port<span class=\"token operator\">&#061;<\/span><span class=\"token number\">8080<\/span><span class=\"token punctuation\">,<\/span> debug<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">False<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;host&#061;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>host<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">, port&#061;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>port<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">, debug&#061;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>debug<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>config<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;localhost&#034;<\/span><span class=\"token punctuation\">)<\/span>                  <span class=\"token comment\"># host&#061;localhost, port&#061;8080, debug&#061;False<\/span><br \/>\nconfig<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;localhost&#034;<\/span><span class=\"token punctuation\">,<\/span> port<span class=\"token operator\">&#061;<\/span><span class=\"token number\">3000<\/span><span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># \u2705<\/span><br \/>\nconfig<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;localhost&#034;<\/span><span class=\"token punctuation\">,<\/span> debug<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">)<\/span>      <span class=\"token comment\"># \u2705<\/span><br \/>\n<span class=\"token comment\"># config(&#034;localhost&#034;, 3000)          # \u274c TypeError: \u4f4d\u7f6e\u53c2\u6570\u592a\u591a\u4e86<\/span><\/p>\n<p><span class=\"token comment\"># \u4ec5\u9650\u4f4d\u7f6e\u53c2\u6570&#xff08;Python 3.8&#043;&#xff09;\/ \u4e4b\u524d\u7684\u53c2\u6570\u53ea\u80fd\u6309\u4f4d\u7f6e\u4f20\u9012<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">func<\/span><span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">,<\/span> b<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">\/<\/span><span class=\"token punctuation\">,<\/span> c<span class=\"token punctuation\">,<\/span> d<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    a, b: \u4ec5\u9650\u4f4d\u7f6e\u53c2\u6570&#xff08;\u4e0d\u80fd\u4ee5\u5173\u952e\u5b57\u5f62\u5f0f\u4f20\u9012&#xff09;<br \/>\n    c, d: \u53ef\u4ee5\u662f\u4f4d\u7f6e\u6216\u5173\u952e\u5b57<br \/>\n    &#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;a&#061;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>a<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">, b&#061;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>b<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">, c&#061;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>c<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">, d&#061;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>d<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>func<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\"># \u2705<\/span><br \/>\nfunc<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> c<span class=\"token operator\">&#061;<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> d<span class=\"token operator\">&#061;<\/span><span class=\"token number\">4<\/span><span class=\"token punctuation\">)<\/span>      <span class=\"token comment\"># \u2705<\/span><br \/>\n<span class=\"token comment\"># func(a&#061;1, b&#061;2, c&#061;3, d&#061;4)  # \u274c TypeError: a \u548c b \u4ec5\u9650\u4f4d\u7f6e<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u4ec5\u9650\u5173\u952e\u5b57\u53c2\u6570\u8ba9 API \u8bbe\u8ba1\u66f4\u6e05\u6670\u2014\u2014\u8c03\u7528\u8005\u5fc5\u987b\u663e\u5f0f\u5199\u51fa\u53c2\u6570\u540d&#xff0c;\u51cf\u5c11\u53c2\u6570\u987a\u5e8f\u51fa\u9519\u7684\u53ef\u80fd\u3002<\/p>\n<h4>12.4 \u53c2\u6570\u89e3\u5305<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;* \u5c06\u5217\u8868\/\u5143\u7ec4\u89e3\u5305\u4e3a\u4f4d\u7f6e\u53c2\u6570&#xff0c;** \u5c06\u5b57\u5178\u89e3\u5305\u4e3a\u5173\u952e\u5b57\u53c2\u6570\u3002\u4e24\u79cd\u89e3\u5305\u53ef\u4ee5\u7ec4\u5408\u4f7f\u7528&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u5217\u8868\/\u5143\u7ec4\u89e3\u5305\u4e3a\u4f4d\u7f6e\u53c2\u6570<\/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> b<span class=\"token punctuation\">,<\/span> c<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> a <span class=\"token operator\">&#043;<\/span> b <span class=\"token operator\">&#043;<\/span> c<\/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><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>add<span class=\"token punctuation\">(<\/span><span class=\"token operator\">*<\/span>nums<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># 6  \u7b49\u4ef7\u4e8e add(1, 2, 3)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>add<span class=\"token punctuation\">(<\/span><span class=\"token operator\">*<\/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><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 15<\/span><\/p>\n<p><span class=\"token comment\"># \u5b57\u5178\u89e3\u5305\u4e3a\u5173\u952e\u5b57\u53c2\u6570<\/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> age<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;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u4eca\u5e74 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>age<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u5c81&#034;<\/span><\/span><\/p>\n<p>info <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;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;age&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">25<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>greet<span class=\"token punctuation\">(<\/span><span class=\"token operator\">**<\/span>info<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># Alice \u4eca\u5e74 25 \u5c81<\/span><\/p>\n<p><span class=\"token comment\"># \u7ec4\u5408\u4f7f\u7528<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">full_func<\/span><span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">,<\/span> b<span class=\"token punctuation\">,<\/span> c<span class=\"token punctuation\">,<\/span> d<span class=\"token punctuation\">,<\/span> e<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> a <span class=\"token operator\">&#043;<\/span> b <span class=\"token operator\">&#043;<\/span> c <span class=\"token operator\">&#043;<\/span> d <span class=\"token operator\">&#043;<\/span> e<\/p>\n<p>nums1 <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><br \/>\nnums2 <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;d&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">4<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;e&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>full_func<span class=\"token punctuation\">(<\/span><span class=\"token operator\">*<\/span>nums1<span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token operator\">**<\/span>nums2<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 15<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u53c2\u6570\u89e3\u5305\u8ba9\u4f60\u80fd\u52a8\u6001\u5730\u6784\u5efa\u51fd\u6570\u8c03\u7528&#xff0c;\u5728\u7f16\u5199\u901a\u7528\u5de5\u5177\u51fd\u6570\u548c\u8f6c\u53d1\u8c03\u7528\u65f6\u7279\u522b\u6709\u7528\u3002<\/p>\n<h4>12.5 \u4f5c\u7528\u57df\u4e0e global \/ nonlocal<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;Python \u53d8\u91cf\u9075\u5faa LEGB \u67e5\u627e\u89c4\u5219&#xff08;Local -&gt; Enclosing -&gt; Global -&gt; Built-in&#xff09;\u3002\u4f7f\u7528 global \u5728\u51fd\u6570\u5185\u4fee\u6539\u5168\u5c40\u53d8\u91cf&#xff0c;nonlocal \u4fee\u6539\u5916\u5c42\u51fd\u6570\u7684\u53d8\u91cf&#xff1a;<\/p>\n<p><span class=\"token comment\"># &#8212; LEGB \u89c4\u5219&#xff08;\u53d8\u91cf\u67e5\u627e\u987a\u5e8f&#xff09;&#8212;<\/span><br \/>\n<span class=\"token comment\"># L: Local      \u2014 \u51fd\u6570\u5185\u90e8<\/span><br \/>\n<span class=\"token comment\"># E: Enclosing  \u2014 \u5916\u5c42\u51fd\u6570\u5185\u90e8<\/span><br \/>\n<span class=\"token comment\"># G: Global     \u2014 \u6a21\u5757\u7ea7\u522b<\/span><br \/>\n<span class=\"token comment\"># B: Built-in   \u2014 \u5185\u7f6e\u547d\u540d\u7a7a\u95f4<\/span><\/p>\n<p>x <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;global&#034;<\/span>      <span class=\"token comment\"># \u5168\u5c40\u53d8\u91cf<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">outer<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    x <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;enclosing&#034;<\/span>  <span class=\"token comment\"># \u95ed\u5305\u53d8\u91cf<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">inner<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        x <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;local&#034;<\/span>  <span class=\"token comment\"># \u5c40\u90e8\u53d8\u91cf<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;inner: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>x<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># local<\/span><\/p>\n<p>    inner<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;outer: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>x<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># enclosing<\/span><\/p>\n<p>outer<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;global: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>x<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># global<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; global \u5173\u952e\u5b57&#xff1a;\u5728\u51fd\u6570\u5185\u4fee\u6539\u5168\u5c40\u53d8\u91cf &#8212;<\/span><br \/>\ncount <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">increment<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">global<\/span> count<br \/>\n    count <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">1<\/span><\/p>\n<p>increment<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>count<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 1<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; nonlocal \u5173\u952e\u5b57&#xff1a;\u4fee\u6539\u5916\u5c42\u51fd\u6570\u7684\u53d8\u91cf &#8212;<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">make_counter<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    count <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">counter<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">nonlocal<\/span> count  <span class=\"token comment\"># \u4f7f\u7528\u5916\u5c42\u7684 count<\/span><br \/>\n        count <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">1<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> count<\/p>\n<p>    <span class=\"token keyword\">return<\/span> counter<\/p>\n<p>c <span class=\"token operator\">&#061;<\/span> make_counter<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>c<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 1<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>c<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 2<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>c<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 3<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u5c3d\u91cf\u907f\u514d\u6ee5\u7528 global\u2014\u2014\u5b83\u4f1a\u8ba9\u4ee3\u7801\u96be\u4ee5\u7406\u89e3\u548c\u6d4b\u8bd5\u3002nonlocal \u5728\u95ed\u5305\u4e2d\u5f88\u6709\u7528&#xff0c;\u80fd\u8ba9\u5185\u90e8\u51fd\u6570\u4fee\u6539\u5916\u5c42\u51fd\u6570\u7684\u5c40\u90e8\u53d8\u91cf\u3002<\/p>\n<h4>12.6 \u95ed\u5305<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u95ed\u5305\u662f\u51fd\u6570\u5f0f\u7f16\u7a0b\u7684\u6838\u5fc3\u6982\u5ff5\u2014\u2014\u5185\u90e8\u51fd\u6570\u8bb0\u4f4f\u5e76\u8bbf\u95ee\u5176\u521b\u5efa\u65f6\u7684\u5916\u5c42\u53d8\u91cf&#xff0c;\u5373\u4f7f\u5916\u5c42\u51fd\u6570\u5df2\u7ecf\u8fd4\u56de&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u95ed\u5305&#xff1a;\u5185\u90e8\u51fd\u6570\u8bb0\u4f4f\u4e86\u5176\u521b\u5efa\u65f6\u7684\u73af\u5883<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">make_multiplier<\/span><span class=\"token punctuation\">(<\/span>factor<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">multiplier<\/span><span class=\"token punctuation\">(<\/span>x<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> x <span class=\"token operator\">*<\/span> factor  <span class=\"token comment\"># factor \u88ab&#034;\u8bb0\u4f4f&#034;\u4e86<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> multiplier<\/p>\n<p>double <span class=\"token operator\">&#061;<\/span> make_multiplier<span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><br \/>\ntriple <span class=\"token operator\">&#061;<\/span> make_multiplier<span class=\"token punctuation\">(<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>double<span class=\"token punctuation\">(<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 10<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>triple<span class=\"token punctuation\">(<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 15<\/span><\/p>\n<p><span class=\"token comment\"># \u67e5\u770b\u95ed\u5305\u53d8\u91cf<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>double<span class=\"token punctuation\">.<\/span>__closure__<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>cell_contents<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 2<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u95ed\u5305\u662f\u5b9e\u73b0\u88c5\u9970\u5668\u3001\u5de5\u5382\u51fd\u6570\u548c\u56de\u8c03\u7684\u57fa\u7840\u3002closure \u5c5e\u6027\u53ef\u4ee5\u67e5\u770b\u95ed\u5305\u6355\u83b7\u7684\u53d8\u91cf&#xff0c;\u6709\u52a9\u4e8e\u8c03\u8bd5\u3002<\/p>\n<hr \/>\n<h3>13. Lambda \u8868\u8fbe\u5f0f<\/h3>\n<p>Lambda \u662f\u521b\u5efa\u5c0f\u578b\u533f\u540d\u51fd\u6570\u7684\u8bed\u6cd5&#xff0c;\u53ea\u80fd\u5305\u542b\u5355\u4e2a\u8868\u8fbe\u5f0f\u3002<\/p>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u95ed\u5305\u662f\u51fd\u6570\u5f0f\u7f16\u7a0b\u7684\u6838\u5fc3\u6982\u5ff5\u2014\u2014\u5185\u90e8\u51fd\u6570\u8bb0\u4f4f\u5e76\u8bbf\u95ee\u5176\u521b\u5efa\u65f6\u7684\u5916\u5c42\u53d8\u91cf&#xff0c;\u5373\u4f7f\u5916\u5c42\u51fd\u6570\u5df2\u7ecf\u8fd4\u56de&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u8bed\u6cd5: lambda \u53c2\u6570: \u8868\u8fbe\u5f0f<\/span><\/p>\n<p><span class=\"token comment\"># \u57fa\u672c\u7528\u6cd5<\/span><br \/>\nadd <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">lambda<\/span> a<span class=\"token punctuation\">,<\/span> b<span class=\"token punctuation\">:<\/span> a <span class=\"token operator\">&#043;<\/span> b<br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>add<span class=\"token punctuation\">(<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 8<\/span><\/p>\n<p><span class=\"token comment\"># \u7b49\u4ef7\u4e8e<\/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> b<span class=\"token punctuation\">)<\/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><span class=\"token comment\"># &#8212; \u5e38\u89c1\u4f7f\u7528\u573a\u666f &#8212;<\/span><br \/>\n<span class=\"token comment\"># 1. sort() \u7684 key \u53c2\u6570<\/span><br \/>\nstudents <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n    <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;score&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">85<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;Bob&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;score&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">92<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#034;Charlie&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;score&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">78<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n<span class=\"token punctuation\">]<\/span><br \/>\nstudents<span class=\"token punctuation\">.<\/span>sort<span class=\"token punctuation\">(<\/span>key<span class=\"token operator\">&#061;<\/span><span class=\"token keyword\">lambda<\/span> s<span class=\"token punctuation\">:<\/span> s<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;score&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> reverse<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>students<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token comment\"># [{&#039;name&#039;: &#039;Bob&#039;, &#039;score&#039;: 92}, {&#039;name&#039;: &#039;Alice&#039;, &#039;score&#039;: 85}, {&#039;name&#039;: &#039;Charlie&#039;, &#039;score&#039;: 78}]<\/span><\/p>\n<p><span class=\"token comment\"># 2. filter()&#xff1a;\u8fc7\u6ee4\u5e8f\u5217<\/span><br \/>\nnums <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> <span class=\"token number\">7<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">8<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">9<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">]<\/span><br \/>\neven <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">filter<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">lambda<\/span> x<span class=\"token punctuation\">:<\/span> x <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> nums<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>even<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [2, 4, 6, 8, 10]<\/span><\/p>\n<p><span class=\"token comment\"># 3. map()&#xff1a;\u6620\u5c04\u5e8f\u5217<\/span><br \/>\nsquared <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">map<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">lambda<\/span> x<span class=\"token punctuation\">:<\/span> x <span class=\"token operator\">**<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> nums<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>squared<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]<\/span><\/p>\n<p><span class=\"token comment\"># 4. reduce()&#xff1a;\u7d2f\u79ef&#xff08;\u9700\u8981\u5bfc\u5165&#xff09;<\/span><br \/>\n<span class=\"token keyword\">from<\/span> functools <span class=\"token keyword\">import<\/span> <span class=\"token builtin\">reduce<\/span><br \/>\ntotal <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">reduce<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">lambda<\/span> acc<span class=\"token punctuation\">,<\/span> x<span class=\"token punctuation\">:<\/span> acc <span class=\"token operator\">&#043;<\/span> x<span class=\"token punctuation\">,<\/span> nums<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>total<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 55<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; Lambda vs \u5217\u8868\u63a8\u5bfc\u5f0f &#8212;<\/span><br \/>\n<span class=\"token comment\"># \u5927\u90e8\u5206\u60c5\u51b5\u4e0b\u5217\u8868\u63a8\u5bfc\u5f0f\u66f4 Pythonic&#xff1a;<\/span><\/p>\n<p><span class=\"token comment\"># \u7528 filter &#043; lambda<\/span><br \/>\neven1 <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">filter<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">lambda<\/span> x<span class=\"token punctuation\">:<\/span> x <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> nums<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u7528\u5217\u8868\u63a8\u5bfc\u5f0f&#xff08;\u63a8\u8350&#xff01;&#xff09;<\/span><br \/>\neven2 <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>x <span class=\"token keyword\">for<\/span> x <span class=\"token keyword\">in<\/span> nums <span class=\"token keyword\">if<\/span> x <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><\/p>\n<p><span class=\"token comment\"># \u7528 map &#043; lambda<\/span><br \/>\nsquared1 <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">map<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">lambda<\/span> x<span class=\"token punctuation\">:<\/span> x <span class=\"token operator\">**<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> nums<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u7528\u5217\u8868\u63a8\u5bfc\u5f0f&#xff08;\u63a8\u8350&#xff01;&#xff09;<\/span><br \/>\nsquared2 <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>x <span class=\"token operator\">**<\/span> <span class=\"token number\">2<\/span> <span class=\"token keyword\">for<\/span> x <span class=\"token keyword\">in<\/span> nums<span class=\"token punctuation\">]<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u95ed\u5305\u662f\u5b9e\u73b0\u88c5\u9970\u5668\u3001\u5de5\u5382\u51fd\u6570\u548c\u56de\u8c03\u7684\u57fa\u7840\u3002closure \u5c5e\u6027\u53ef\u4ee5\u67e5\u770b\u95ed\u5305\u6355\u83b7\u7684\u53d8\u91cf&#xff0c;\u6709\u52a9\u4e8e\u8c03\u8bd5\u3002<\/p>\n<hr \/>\n<h3>14. \u5217\u8868\u63a8\u5bfc\u5f0f\u4e0e\u751f\u6210\u5668\u8868\u8fbe\u5f0f<\/h3>\n<h4>14.1 \u5217\u8868\u63a8\u5bfc\u5f0f<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5217\u8868\u63a8\u5bfc\u5f0f\u662f Python \u7684\u6807\u5fd7\u6027\u7279\u6027&#xff0c;\u7528 [expression for item in iterable if condition] \u8bed\u6cd5\u5728\u4e00\u884c\u5185\u5b8c\u6210\u6620\u5c04\u548c\u8fc7\u6ee4&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u57fa\u672c\u8bed\u6cd5: [expression for item in iterable if condition]<\/span><\/p>\n<p>nums <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/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 punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u57fa\u672c<\/span><br \/>\nsquares <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>x <span class=\"token operator\">**<\/span> <span class=\"token number\">2<\/span> <span class=\"token keyword\">for<\/span> x <span class=\"token keyword\">in<\/span> nums<span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>squares<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]<\/span><\/p>\n<p><span class=\"token comment\"># \u5e26\u6761\u4ef6\u8fc7\u6ee4<\/span><br \/>\neven_squares <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>x <span class=\"token operator\">**<\/span> <span class=\"token number\">2<\/span> <span class=\"token keyword\">for<\/span> x <span class=\"token keyword\">in<\/span> nums <span class=\"token keyword\">if<\/span> x <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><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>even_squares<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [0, 4, 16, 36, 64]<\/span><\/p>\n<p><span class=\"token comment\"># if-else \u8868\u8fbe\u5f0f&#xff08;\u6ce8\u610f\u4f4d\u7f6e&#xff09;<\/span><br \/>\nparity <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;even&#034;<\/span> <span class=\"token keyword\">if<\/span> x <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 keyword\">else<\/span> <span class=\"token string\">&#034;odd&#034;<\/span> <span class=\"token keyword\">for<\/span> x <span class=\"token keyword\">in<\/span> nums<span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>parity<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [&#039;even&#039;, &#039;odd&#039;, &#039;even&#039;, &#039;odd&#039;, &#039;even&#039;, &#039;odd&#039;, &#039;even&#039;, &#039;odd&#039;, &#039;even&#039;, &#039;odd&#039;]<\/span><\/p>\n<p><span class=\"token comment\"># \u5d4c\u5957\u63a8\u5bfc\u5f0f<\/span><br \/>\n<span class=\"token comment\"># \u5c55\u5e73\u4e8c\u7ef4\u5217\u8868<\/span><br \/>\nmatrix <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/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 punctuation\">,<\/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><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">7<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">8<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">9<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">]<\/span><br \/>\nflattened <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>num <span class=\"token keyword\">for<\/span> row <span class=\"token keyword\">in<\/span> matrix <span class=\"token keyword\">for<\/span> num <span class=\"token keyword\">in<\/span> row<span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>flattened<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [1, 2, 3, 4, 5, 6, 7, 8, 9]<\/span><\/p>\n<p><span class=\"token comment\"># \u7b49\u4ef7\u4e8e<\/span><br \/>\nflattened <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">for<\/span> row <span class=\"token keyword\">in<\/span> matrix<span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> num <span class=\"token keyword\">in<\/span> row<span class=\"token punctuation\">:<\/span><br \/>\n        flattened<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span>num<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u7b1b\u5361\u5c14\u79ef<\/span><br \/>\npairs <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">(<\/span>x<span class=\"token punctuation\">,<\/span> y<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">for<\/span> x <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">for<\/span> y <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>pairs<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token comment\"># [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u5217\u8868\u63a8\u5bfc\u5f0f\u6bd4\u4f20\u7edf\u7684 for&#043;append \u66f4\u7b80\u6d01\u9ad8\u6548&#xff08;\u5e95\u5c42\u662f C \u5b9e\u73b0\u7684&#xff09;\u3002\u4f46\u4e0d\u8981\u8fc7\u5ea6\u5d4c\u5957\u2014\u2014\u8d85\u8fc7\u4e24\u5c42\u7684\u63a8\u5bfc\u5f0f\u4f1a\u727a\u7272\u53ef\u8bfb\u6027\u3002<\/p>\n<h4>14.2 \u751f\u6210\u5668\u8868\u8fbe\u5f0f<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u751f\u6210\u5668\u8868\u8fbe\u5f0f\u8bed\u6cd5\u548c\u5217\u8868\u63a8\u5bfc\u5f0f\u4e00\u6837&#xff0c;\u53ea\u662f\u7528 () \u66ff\u4ee3 []\u3002\u5b83\u60f0\u6027\u6c42\u503c&#xff0c;\u9002\u5408\u5904\u7406\u6d77\u91cf\u6570\u636e&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u8bed\u6cd5\u548c\u5217\u8868\u63a8\u5bfc\u5f0f\u4e00\u6837&#xff0c;\u53ea\u662f\u7528 () \u800c\u4e0d\u662f []<\/span><br \/>\n<span class=\"token comment\"># \u4f18\u52bf&#xff1a;\u60f0\u6027\u6c42\u503c&#xff0c;\u8282\u7701\u5185\u5b58&#xff08;\u9002\u5408\u6d77\u91cf\u6570\u636e&#xff09;<\/span><\/p>\n<p><span class=\"token comment\"># \u5217\u8868\u63a8\u5bfc\u5f0f&#xff1a;\u7acb\u5373\u751f\u6210\u6240\u6709\u6570\u636e\u5230\u5185\u5b58<\/span><br \/>\nsquares_list <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span>x <span class=\"token operator\">**<\/span> <span class=\"token number\">2<\/span> <span class=\"token keyword\">for<\/span> x <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1000000<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">]<\/span>  <span class=\"token comment\"># \u5360\u7528\u5927\u91cf\u5185\u5b58<\/span><\/p>\n<p><span class=\"token comment\"># \u751f\u6210\u5668\u8868\u8fbe\u5f0f&#xff1a;\u6309\u9700\u751f\u6210&#xff0c;\u51e0\u4e4e\u4e0d\u5360\u5185\u5b58<\/span><br \/>\nsquares_gen <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span>x <span class=\"token operator\">**<\/span> <span class=\"token number\">2<\/span> <span class=\"token keyword\">for<\/span> x <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1000000<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># \u8f7b\u91cf\u7ea7<\/span><\/p>\n<p><span class=\"token comment\"># \u8fed\u4ee3\u751f\u6210\u5668<\/span><br \/>\n<span class=\"token keyword\">for<\/span> i <span class=\"token keyword\">in<\/span> squares_gen<span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> i <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">50<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">break<\/span>  <span class=\"token comment\"># \u53ea\u8ba1\u7b97\u9700\u8981\u7684\u90e8\u5206<\/span><\/p>\n<p><span class=\"token comment\"># sum\/max\/min \u7b49\u53ef\u4ee5\u76f4\u63a5\u63a5\u53d7\u751f\u6210\u5668\u8868\u8fbe\u5f0f<\/span><br \/>\ntotal <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">sum<\/span><span class=\"token punctuation\">(<\/span>x <span class=\"token operator\">**<\/span> <span class=\"token number\">2<\/span> <span class=\"token keyword\">for<\/span> x <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1000000<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u4e0d\u9700\u8981\u518d\u5199\u4e00\u5c42\u62ec\u53f7<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>total<span class=\"token punctuation\">)<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u5f53\u6570\u636e\u91cf\u5f88\u5927&#xff08;\u767e\u4e07\u7ea7&#xff09;\u65f6&#xff0c;\u751f\u6210\u5668\u8868\u8fbe\u5f0f\u51e0\u4e4e\u4e0d\u5360\u5185\u5b58\u3002\u4f20\u9012\u7ed9 sum()\u3001max() \u7b49\u51fd\u6570\u65f6&#xff0c;\u53ef\u4ee5\u7701\u7565\u989d\u5916\u7684\u62ec\u53f7\u3002<\/p>\n<h4>14.3 \u5b57\u5178\u63a8\u5bfc\u5f0f<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5b57\u5178\u63a8\u5bfc\u5f0f {key: value for \u2026} \u5feb\u901f\u521b\u5efa\u6216\u53d8\u6362\u5b57\u5178&#xff0c;\u662f\u4ece\u4e24\u4e2a\u5217\u8868\u521b\u5efa\u6620\u5c04\u8868\u7684\u7edd\u4f73\u65b9\u5f0f&#xff1a;<\/p>\n<p><span class=\"token comment\"># {key_expr: value_expr for item in iterable if condition}<\/span><\/p>\n<p><span class=\"token comment\"># \u57fa\u672c<\/span><br \/>\nsquares <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span>x<span class=\"token punctuation\">:<\/span> x<span class=\"token operator\">**<\/span><span class=\"token number\">2<\/span> <span class=\"token keyword\">for<\/span> x <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>squares<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}<\/span><\/p>\n<p><span class=\"token comment\"># \u8fc7\u6ee4<\/span><br \/>\neven_squares <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span>x<span class=\"token punctuation\">:<\/span> x<span class=\"token operator\">**<\/span><span class=\"token number\">2<\/span> <span class=\"token keyword\">for<\/span> x <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 keyword\">if<\/span> x <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><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>even_squares<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}<\/span><\/p>\n<p><span class=\"token comment\"># \u4ece\u4e24\u4e2a\u5217\u8868\u521b\u5efa\u5b57\u5178<\/span><br \/>\nkeys <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;age&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;city&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\nvalues <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">25<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u5317\u4eac&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\ninfo <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span>k<span class=\"token punctuation\">:<\/span> v <span class=\"token keyword\">for<\/span> k<span class=\"token punctuation\">,<\/span> v <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">zip<\/span><span class=\"token punctuation\">(<\/span>keys<span class=\"token punctuation\">,<\/span> values<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>info<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># {&#039;name&#039;: &#039;Alice&#039;, &#039;age&#039;: 25, &#039;city&#039;: &#039;\u5317\u4eac&#039;}<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u7ed3\u5408 zip() \u4f7f\u7528\u5b57\u5178\u63a8\u5bfc\u5f0f&#xff0c;\u53ef\u4ee5\u4e00\u884c\u4ee3\u7801\u5c06\u4e24\u4e2a\u5217\u8868\u53d8\u4e3a\u5b57\u5178\u3002\u652f\u6301\u6761\u4ef6\u8fc7\u6ee4&#xff0c;\u8bed\u6cd5\u4e0e\u5217\u8868\u63a8\u5bfc\u5f0f\u4e00\u81f4\u3002<\/p>\n<h4>14.4 \u96c6\u5408\u63a8\u5bfc\u5f0f<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u96c6\u5408\u63a8\u5bfc\u5f0f {expr for \u2026} \u81ea\u52a8\u53bb\u91cd&#xff0c;\u672c\u8d28\u4e0a\u5c31\u662f\u82b1\u62ec\u53f7\u5305\u88f9\u7684\u5217\u8868\u63a8\u5bfc\u5f0f&#xff1a;<\/p>\n<p><span class=\"token comment\"># {expression for item in iterable if condition}<\/span><\/p>\n<p><span class=\"token comment\"># \u57fa\u672c<\/span><br \/>\nsquares_set <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span>x<span class=\"token operator\">**<\/span><span class=\"token number\">2<\/span> <span class=\"token keyword\">for<\/span> x <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">&#8211;<\/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><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>squares_set<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># {0, 1, 4, 9, 16, 25}  \u81ea\u52a8\u53bb\u91cd<\/span><\/p>\n<p><span class=\"token comment\"># \u5b57\u7b26\u4e32\u53bb\u91cd\u5e76\u4fdd\u6301\u987a\u5e8f&#xff08;\u7528\u5b57\u5178\u63a8\u5bfc\u5f0f&#xff09;<\/span><br \/>\ntext <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;abracadabra&#034;<\/span><br \/>\nunique_chars <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;&#034;<\/span><span class=\"token punctuation\">.<\/span>join<span class=\"token punctuation\">(<\/span><span class=\"token builtin\">dict<\/span><span class=\"token punctuation\">.<\/span>fromkeys<span class=\"token punctuation\">(<\/span>text<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>unique_chars<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># &#034;abrcd&#034;<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u96c6\u5408\u63a8\u5bfc\u5f0f\u5728\u9700\u8981\u53bb\u91cd\u7684\u540c\u65f6\u505a\u53d8\u6362\u65f6\u975e\u5e38\u6709\u7528&#xff0c;\u6bd4\u5148\u5efa\u5217\u8868\u518d\u8f6c\u96c6\u5408\u66f4\u9ad8\u6548\u3002<\/p>\n<hr \/>\n<h3>15. \u8fed\u4ee3\u5668\u4e0e\u751f\u6210\u5668<\/h3>\n<h4>15.1 \u53ef\u8fed\u4ee3\u5bf9\u8c61 vs \u8fed\u4ee3\u5668<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u53ef\u8fed\u4ee3\u5bf9\u8c61&#xff08;Iterable&#xff09;\u53ef\u4ee5\u653e\u8fdb for \u5faa\u73af&#xff0c;\u8fed\u4ee3\u5668&#xff08;Iterator&#xff09;\u5219\u662f\u8bb0\u4f4f\u904d\u5386\u4f4d\u7f6e\u7684\u61d2\u52a0\u8f7d\u5bf9\u8c61\u3002\u7528 iter() \u4ece\u53ef\u8fed\u4ee3\u5bf9\u8c61\u83b7\u53d6\u8fed\u4ee3\u5668&#xff0c;next() \u9010\u4e2a\u53d6\u503c&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u53ef\u8fed\u4ee3\u5bf9\u8c61 (Iterable)&#xff1a;\u5b9e\u73b0\u4e86 __iter__() \u65b9\u6cd5<\/span><br \/>\n<span class=\"token comment\"># \u8fed\u4ee3\u5668 (Iterator)&#xff1a;\u5b9e\u73b0\u4e86 __iter__() \u548c __next__() \u65b9\u6cd5<\/span><\/p>\n<p><span class=\"token comment\"># \u5224\u65ad\u7c7b\u578b<\/span><br \/>\n<span class=\"token keyword\">from<\/span> collections<span class=\"token punctuation\">.<\/span>abc <span class=\"token keyword\">import<\/span> Iterable<span class=\"token punctuation\">,<\/span> Iterator<\/p>\n<p>lst <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><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">isinstance<\/span><span class=\"token punctuation\">(<\/span>lst<span class=\"token punctuation\">,<\/span> Iterable<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># True  &#xff08;\u5217\u8868\u662f\u53ef\u8fed\u4ee3\u5bf9\u8c61&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">isinstance<\/span><span class=\"token punctuation\">(<\/span>lst<span class=\"token punctuation\">,<\/span> Iterator<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># False &#xff08;\u5217\u8868\u4e0d\u662f\u8fed\u4ee3\u5668&#xff09;<\/span><\/p>\n<p>it <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">iter<\/span><span class=\"token punctuation\">(<\/span>lst<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">isinstance<\/span><span class=\"token punctuation\">(<\/span>it<span class=\"token punctuation\">,<\/span> Iterator<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>     <span class=\"token comment\"># True<\/span><\/p>\n<p><span class=\"token comment\"># iter() \u548c next()<\/span><br \/>\nit <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">iter<\/span><span class=\"token punctuation\">(<\/span>lst<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">next<\/span><span class=\"token punctuation\">(<\/span>it<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 1<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">next<\/span><span class=\"token punctuation\">(<\/span>it<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 2<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">next<\/span><span class=\"token punctuation\">(<\/span>it<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 3<\/span><br \/>\n<span class=\"token comment\"># print(next(it))  # StopIteration \u5f02\u5e38<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u8fed\u4ee3\u5668\u53ea\u80fd\u524d\u8fdb\u4e0d\u80fd\u540e\u9000&#xff0c;\u904d\u5386\u7ed3\u675f\u540e\u518d\u8c03\u7528 next() \u4f1a\u629b\u51fa StopIteration\u3002\u8fd9\u79cd\u4e00\u6b21\u6027\u7684\u7279\u6027\u8ba9\u8fed\u4ee3\u5668\u975e\u5e38\u8282\u7701\u5185\u5b58\u3002<\/p>\n<h4>15.2 \u751f\u6210\u5668\u51fd\u6570&#xff08;yield&#xff09;<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u4f7f\u7528 yield \u5173\u952e\u5b57\u7684\u51fd\u6570\u662f\u751f\u6210\u5668\u2014\u2014\u6bcf\u6b21 yield \u6682\u505c\u5e76\u8fd4\u56de\u503c&#xff0c;\u4e0b\u6b21\u8c03\u7528 next() \u65f6\u4ece\u6682\u505c\u5904\u7ee7\u7eed\u3002yield from \u53ef\u4ee5\u59d4\u6258\u7ed9\u5b50\u751f\u6210\u5668&#xff1a;<\/p>\n<p><span class=\"token comment\"># yield&#xff1a;\u6682\u505c\u51fd\u6570&#xff0c;\u8fd4\u56de\u503c&#xff0c;\u4e0b\u6b21\u4ece\u6682\u505c\u5904\u7ee7\u7eed<\/span><\/p>\n<p><span class=\"token comment\"># \u57fa\u672c\u751f\u6210\u5668<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">countdown<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u5f00\u59cb\u5012\u8ba1\u65f6: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>n<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">while<\/span> n <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">yield<\/span> n<br \/>\n        n <span class=\"token operator\">-&#061;<\/span> <span class=\"token number\">1<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u7ed3\u675f&#xff01;&#034;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">for<\/span> num <span class=\"token keyword\">in<\/span> countdown<span class=\"token punctuation\">(<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u5012\u8ba1\u65f6: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>num<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token comment\"># \u5f00\u59cb\u5012\u8ba1\u65f6: 3<\/span><br \/>\n<span class=\"token comment\"># \u5012\u8ba1\u65f6: 3<\/span><br \/>\n<span class=\"token comment\"># \u5012\u8ba1\u65f6: 2<\/span><br \/>\n<span class=\"token comment\"># \u5012\u8ba1\u65f6: 1<\/span><br \/>\n<span class=\"token comment\"># \u7ed3\u675f&#xff01;<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u65e0\u9650\u5e8f\u5217\u751f\u6210\u5668 &#8212;<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">fibonacci<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u751f\u6210\u65e0\u9650\u7684\u6590\u6ce2\u90a3\u5951\u6570\u5217&#034;&#034;&#034;<\/span><br \/>\n    a<span class=\"token punctuation\">,<\/span> b <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><br \/>\n    <span class=\"token keyword\">while<\/span> <span class=\"token boolean\">True<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">yield<\/span> a<br \/>\n        a<span class=\"token punctuation\">,<\/span> b <span class=\"token operator\">&#061;<\/span> b<span class=\"token punctuation\">,<\/span> a <span class=\"token operator\">&#043;<\/span> b<\/p>\n<p>fib <span class=\"token operator\">&#061;<\/span> fibonacci<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token builtin\">next<\/span><span class=\"token punctuation\">(<\/span>fib<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">for<\/span> _ <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 punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token comment\"># [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; yield from: \u59d4\u6258\u7ed9\u5b50\u751f\u6210\u5668 &#8212;<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">flat_list<\/span><span class=\"token punctuation\">(<\/span>nested<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u9012\u5f52\u5c55\u5e73\u4efb\u610f\u5d4c\u5957\u7684\u5217\u8868&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> item <span class=\"token keyword\">in<\/span> nested<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token builtin\">isinstance<\/span><span class=\"token punctuation\">(<\/span>item<span class=\"token punctuation\">,<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">yield<\/span> <span class=\"token keyword\">from<\/span> flat_list<span class=\"token punctuation\">(<\/span>item<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># Python 3.3&#043;<\/span><br \/>\n        <span class=\"token keyword\">else<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">yield<\/span> item<\/p>\n<p>nested <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 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 punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">4<\/span><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 punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span>flat_list<span class=\"token punctuation\">(<\/span>nested<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [1, 2, 3, 4, 5, 6]<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u7ba1\u9053\u751f\u6210\u5668 &#8212;<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">read_lines<\/span><span class=\"token punctuation\">(<\/span>filename<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u9010\u884c\u8bfb\u53d6\u6587\u4ef6&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span>filename<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;r&#034;<\/span><span class=\"token punctuation\">,<\/span> encoding<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;utf-8&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> f<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> line <span class=\"token keyword\">in<\/span> f<span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">yield<\/span> line<span class=\"token punctuation\">.<\/span>strip<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">filter_comments<\/span><span class=\"token punctuation\">(<\/span>lines<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u8fc7\u6ee4\u6ce8\u91ca\u884c&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> line <span class=\"token keyword\">in<\/span> lines<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token keyword\">not<\/span> line<span class=\"token punctuation\">.<\/span>startswith<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;#&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">yield<\/span> line<\/p>\n<p><span class=\"token comment\"># \u4f7f\u7528<\/span><br \/>\n<span class=\"token comment\"># valid_lines &#061; filter_comments(read_lines(&#034;config.txt&#034;))<\/span><br \/>\n<span class=\"token comment\"># for line in valid_lines:<\/span><br \/>\n<span class=\"token comment\">#     print(line)<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u751f\u6210\u5668\u662f\u5b9e\u73b0\u6d41\u5f0f\u5904\u7406\u3001\u60f0\u6027\u8ba1\u7b97\u7684\u5229\u5668\u3002yield from \u5728\u9700\u8981\u9012\u5f52\u5904\u7406\u5d4c\u5957\u7ed3\u6784\u65f6\u7279\u522b\u6709\u7528&#xff0c;\u6bd4\u5982\u5c55\u5e73\u4efb\u610f\u6df1\u5ea6\u7684\u5d4c\u5957\u5217\u8868\u3002<\/p>\n<h4>15.3 send() \u4e0e\u53cc\u5411\u901a\u4fe1<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u751f\u6210\u5668\u4e0d\u4ec5\u53ef\u4ee5\u901a\u8fc7 yield \u5411\u5916\u4ea7\u51fa\u503c&#xff0c;\u8fd8\u53ef\u4ee5\u901a\u8fc7 send() \u63a5\u6536\u5916\u90e8\u4f20\u5165\u7684\u503c&#xff0c;\u5b9e\u73b0\u53cc\u5411\u901a\u4fe1&#xff08;\u534f\u7a0b\u7684\u57fa\u7840&#xff09;&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u751f\u6210\u5668\u4e0d\u4ec5\u53ef\u4ee5\u4ea7\u51fa\u503c&#xff0c;\u8fd8\u53ef\u4ee5\u901a\u8fc7 send() \u63a5\u6536\u503c<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">running_average<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u7ef4\u6301\u8fd0\u884c\u5e73\u5747\u503c\u7684\u534f\u7a0b&#034;&#034;&#034;<\/span><br \/>\n    total <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><br \/>\n    count <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><br \/>\n    average <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">None<\/span><br \/>\n    <span class=\"token keyword\">while<\/span> <span class=\"token boolean\">True<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token comment\"># yield \u7684\u8fd4\u56de\u503c\u662f\u901a\u8fc7 send() \u4f20\u5165\u7684\u503c<\/span><br \/>\n        x <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">yield<\/span> average<br \/>\n        <span class=\"token keyword\">if<\/span> x <span class=\"token keyword\">is<\/span> <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">break<\/span><br \/>\n        total <span class=\"token operator\">&#043;&#061;<\/span> x<br \/>\n        count <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">1<\/span><br \/>\n        average <span class=\"token operator\">&#061;<\/span> total <span class=\"token operator\">\/<\/span> count<\/p>\n<p>avg <span class=\"token operator\">&#061;<\/span> running_average<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token builtin\">next<\/span><span class=\"token punctuation\">(<\/span>avg<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u542f\u52a8\u751f\u6210\u5668&#xff08;\u63a8\u8fdb\u5230\u7b2c\u4e00\u4e2a yield&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>avg<span class=\"token punctuation\">.<\/span>send<span class=\"token punctuation\">(<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 10.0<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>avg<span class=\"token punctuation\">.<\/span>send<span class=\"token punctuation\">(<\/span><span class=\"token number\">20<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 15.0<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>avg<span class=\"token punctuation\">.<\/span>send<span class=\"token punctuation\">(<\/span><span class=\"token number\">30<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 20.0<\/span><br \/>\navg<span class=\"token punctuation\">.<\/span>close<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u5173\u95ed\u751f\u6210\u5668<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;send() \u8ba9\u751f\u6210\u5668\u5347\u7ea7\u4e3a\u534f\u7a0b\u3002\u9996\u6b21\u8c03\u7528\u5fc5\u987b\u7528 next() \u6216 send(None) \u542f\u52a8\u3002\u7528\u5b8c\u540e\u8c03\u7528 close() \u5173\u95ed\u751f\u6210\u5668\u91ca\u653e\u8d44\u6e90\u3002<\/p>\n<hr \/>\n<h3>16. \u88c5\u9970\u5668<\/h3>\n<p>\u88c5\u9970\u5668\u662f\u4e00\u79cd\u5728\u4e0d\u4fee\u6539\u539f\u51fd\u6570\u4ee3\u7801\u7684\u60c5\u51b5\u4e0b\u589e\u5f3a\u5176\u529f\u80fd\u7684\u8bbe\u8ba1\u6a21\u5f0f\u3002<\/p>\n<h4>16.1 \u51fd\u6570\u662f\u4e00\u7b49\u516c\u6c11<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5728 Python \u4e2d&#xff0c;\u51fd\u6570\u662f\u4e00\u7b49\u516c\u6c11\u2014\u2014\u53ef\u4ee5\u8d4b\u503c\u7ed9\u53d8\u91cf\u3001\u4f5c\u4e3a\u53c2\u6570\u4f20\u9012\u3001\u4f5c\u4e3a\u8fd4\u56de\u503c\u8fd4\u56de\u3002\u8fd9\u662f\u7406\u89e3\u88c5\u9970\u5668\u7684\u57fa\u7840&#xff1a;<\/p>\n<p><span class=\"token comment\"># Python \u4e2d\u51fd\u6570\u662f\u5bf9\u8c61&#xff0c;\u53ef\u4ee5\u8d4b\u7ed9\u53d8\u91cf\u3001\u4f5c\u4e3a\u53c2\u6570\u3001\u4f5c\u4e3a\u8fd4\u56de\u503c<\/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 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><span class=\"token comment\"># \u8d4b\u503c\u7ed9\u53d8\u91cf<\/span><br \/>\nsay_hello <span class=\"token operator\">&#061;<\/span> greet<br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>say_hello<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Alice&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># Hello, Alice<\/span><\/p>\n<p><span class=\"token comment\"># \u4f5c\u4e3a\u53c2\u6570\u4f20\u9012<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">call_twice<\/span><span class=\"token punctuation\">(<\/span>func<span class=\"token punctuation\">,<\/span> arg<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> func<span class=\"token punctuation\">(<\/span>arg<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> func<span class=\"token punctuation\">(<\/span>arg<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>call_twice<span class=\"token punctuation\">(<\/span>greet<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Bob&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># (&#039;Hello, Bob&#039;, &#039;Hello, Bob&#039;)<\/span><\/p>\n<p><span class=\"token comment\"># \u4f5c\u4e3a\u8fd4\u56de\u503c&#xff08;\u5185\u90e8\u51fd\u6570\/\u95ed\u5305&#xff09;<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">make_greeting<\/span><span class=\"token punctuation\">(<\/span>prefix<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">greeting<\/span><span class=\"token punctuation\">(<\/span>name<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;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>prefix<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">, <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><br \/>\n    <span class=\"token keyword\">return<\/span> greeting<\/p>\n<p>hello <span class=\"token operator\">&#061;<\/span> make_greeting<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Hello&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>hello<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Charlie&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># Hello, Charlie<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u6b63\u56e0\u4e3a\u51fd\u6570\u662f\u4e00\u7b49\u516c\u6c11&#xff0c;Python \u624d\u80fd\u4f18\u96c5\u5730\u5b9e\u73b0\u88c5\u9970\u5668\u3001\u56de\u8c03\u3001\u9ad8\u9636\u51fd\u6570\u7b49\u51fd\u6570\u5f0f\u7f16\u7a0b\u6a21\u5f0f\u3002<\/p>\n<h4>16.2 \u57fa\u672c\u88c5\u9970\u5668<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u88c5\u9970\u5668\u672c\u8d28\u4e0a\u662f\u4e00\u4e2a\u63a5\u53d7\u51fd\u6570\u3001\u8fd4\u56de\u65b0\u51fd\u6570\u7684\u5305\u88c5\u5668\u3002\u4f7f\u7528 &#064;decorator \u8bed\u6cd5\u7cd6&#xff0c;&#064;functools.wraps \u4fdd\u7559\u539f\u51fd\u6570\u7684\u5143\u4fe1\u606f&#xff1a;<\/p>\n<p><span class=\"token keyword\">import<\/span> functools<br \/>\n<span class=\"token keyword\">import<\/span> time<\/p>\n<p><span class=\"token comment\"># &#8212; \u88c5\u9970\u5668\u6a21\u5f0f &#8212;<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">timer<\/span><span class=\"token punctuation\">(<\/span>func<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u8bb0\u5f55\u51fd\u6570\u6267\u884c\u65f6\u95f4\u7684\u88c5\u9970\u5668&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token decorator annotation punctuation\">&#064;functools<span class=\"token punctuation\">.<\/span>wraps<\/span><span class=\"token punctuation\">(<\/span>func<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u4fdd\u7559\u539f\u51fd\u6570\u7684\u5143\u4fe1\u606f<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">wrapper<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">*<\/span>args<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">**<\/span>kwargs<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        start <span class=\"token operator\">&#061;<\/span> time<span class=\"token punctuation\">.<\/span>perf_counter<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        result <span class=\"token operator\">&#061;<\/span> func<span class=\"token punctuation\">(<\/span><span class=\"token operator\">*<\/span>args<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">**<\/span>kwargs<span class=\"token punctuation\">)<\/span><br \/>\n        elapsed <span class=\"token operator\">&#061;<\/span> time<span class=\"token punctuation\">.<\/span>perf_counter<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span> start<br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>func<span class=\"token punctuation\">.<\/span>__name__<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u6267\u884c\u8017\u65f6: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>elapsed<span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.4f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u79d2&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> result<br \/>\n    <span class=\"token keyword\">return<\/span> wrapper<\/p>\n<p><span class=\"token comment\"># \u4f7f\u7528\u88c5\u9970\u5668&#xff08;\u8bed\u6cd5\u7cd6&#xff09;<\/span><br \/>\n<span class=\"token decorator annotation punctuation\">&#064;timer<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">slow_function<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u4e00\u4e2a\u8017\u65f6\u7684\u51fd\u6570&#034;&#034;&#034;<\/span><br \/>\n    total <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">sum<\/span><span class=\"token punctuation\">(<\/span>i <span class=\"token operator\">**<\/span> <span class=\"token number\">2<\/span> <span class=\"token keyword\">for<\/span> i <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> total<\/p>\n<p><span class=\"token comment\"># \u7b49\u4ef7\u4e8e: slow_function &#061; timer(slow_function)<\/span><br \/>\nslow_function<span class=\"token punctuation\">(<\/span><span class=\"token number\">1000000<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># slow_function \u6267\u884c\u8017\u65f6: 0.1234 \u79d2<\/span><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>slow_function<span class=\"token punctuation\">.<\/span>__name__<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># slow_function&#xff08;\u88ab &#064;wraps \u4fdd\u7559\u4e86&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>slow_function<span class=\"token punctuation\">.<\/span>__doc__<span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># \u4e00\u4e2a\u8017\u65f6\u7684\u51fd\u6570<\/span><\/p>\n<p><span class=\"token comment\"># \u4e0d\u5e26 &#064;wraps \u7684\u8bdd __name__ \u4f1a\u53d8\u6210 &#034;wrapper&#034;<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;&#064;functools.wraps(func) \u81f3\u5173\u91cd\u8981\u2014\u2014\u6ca1\u6709\u5b83&#xff0c;\u88ab\u88c5\u9970\u51fd\u6570\u7684 name \u548c doc \u4f1a\u53d8\u6210 wrapper \u7684\u4fe1\u606f\u3002\u8fd9\u662f\u88c5\u9970\u5668\u6700\u5e38\u89c1\u4e5f\u6700\u5bb9\u6613\u5fd8\u8bb0\u7684\u7ec6\u8282\u3002<\/p>\n<h4>16.3 \u5e26\u53c2\u6570\u7684\u88c5\u9970\u5668<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5e26\u53c2\u6570\u7684\u88c5\u9970\u5668\u672c\u8d28\u4e0a\u662f\u88c5\u9970\u5668\u5de5\u5382\u2014\u2014\u5916\u5c42\u51fd\u6570\u63a5\u6536\u53c2\u6570&#xff0c;\u8fd4\u56de\u771f\u6b63\u7684\u88c5\u9970\u5668&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u88c5\u9970\u5668\u5de5\u5382&#xff1a;\u8fd4\u56de\u88c5\u9970\u5668\u7684\u51fd\u6570<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">retry<\/span><span class=\"token punctuation\">(<\/span>max_attempts<span class=\"token operator\">&#061;<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> delay<span class=\"token operator\">&#061;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u91cd\u8bd5\u88c5\u9970\u5668&#xff1a;\u51fd\u6570\u5931\u8d25\u540e\u81ea\u52a8\u91cd\u8bd5&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">decorator<\/span><span class=\"token punctuation\">(<\/span>func<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token decorator annotation punctuation\">&#064;functools<span class=\"token punctuation\">.<\/span>wraps<\/span><span class=\"token punctuation\">(<\/span>func<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">def<\/span> <span class=\"token function\">wrapper<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">*<\/span>args<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">**<\/span>kwargs<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">for<\/span> attempt <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> max_attempts <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                <span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                    <span class=\"token keyword\">return<\/span> func<span class=\"token punctuation\">(<\/span><span class=\"token operator\">*<\/span>args<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">**<\/span>kwargs<span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token keyword\">except<\/span> Exception <span class=\"token keyword\">as<\/span> e<span class=\"token punctuation\">:<\/span><br \/>\n                    <span class=\"token keyword\">if<\/span> attempt <span class=\"token operator\">&#061;&#061;<\/span> max_attempts<span class=\"token punctuation\">:<\/span><br \/>\n                        <span class=\"token keyword\">raise<\/span>  <span class=\"token comment\"># \u6700\u540e\u4e00\u6b21\u5c1d\u8bd5\u4ecd\u7136\u5931\u8d25\u5219\u629b\u51fa\u5f02\u5e38<\/span><br \/>\n                    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;[\u91cd\u8bd5 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>attempt<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\/<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>max_attempts<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">] <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>e<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n                    time<span class=\"token punctuation\">.<\/span>sleep<span class=\"token punctuation\">(<\/span>delay<span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> <span class=\"token boolean\">None<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> wrapper<br \/>\n    <span class=\"token keyword\">return<\/span> decorator<\/p>\n<p><span class=\"token decorator annotation punctuation\">&#064;retry<\/span><span class=\"token punctuation\">(<\/span>max_attempts<span class=\"token operator\">&#061;<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> delay<span class=\"token operator\">&#061;<\/span><span class=\"token number\">0.5<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">unstable_network_call<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">import<\/span> random<br \/>\n    <span class=\"token keyword\">if<\/span> random<span class=\"token punctuation\">.<\/span>random<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">0.7<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">raise<\/span> ConnectionError<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u7f51\u7edc\u8fde\u63a5\u5931\u8d25&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;\u6210\u529f&#034;<\/span><\/p>\n<p><span class=\"token comment\"># \u5c1d\u8bd5\u8c03\u7528<\/span><br \/>\n<span class=\"token comment\"># result &#061; unstable_network_call()<\/span><br \/>\n<span class=\"token comment\"># print(result)<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u88c5\u9970\u5668\u5de5\u5382\u6bd4\u57fa\u672c\u88c5\u9970\u5668\u591a\u4e00\u5c42\u5d4c\u5957\u3002\u7406\u89e3\u88c5\u9970\u5668\u672c\u8d28\u4e0a\u662f\u51fd\u6570\u8c03\u7528\u8fd9\u4e00\u70b9&#xff0c;\u5c31\u4e0d\u4f1a\u5bf9\u4e09\u5c42\u5d4c\u5957\u611f\u5230\u56f0\u60d1\u3002<\/p>\n<h4>16.4 \u5e38\u7528\u88c5\u9970\u5668<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;Python \u5185\u7f6e\u4e86\u4e09\u4e2a\u5e38\u7528\u88c5\u9970\u5668&#xff1a;&#064;staticmethod&#xff08;\u9759\u6001\u65b9\u6cd5&#xff09;\u3001&#064;classmethod&#xff08;\u7c7b\u65b9\u6cd5&#xff09;\u548c &#064;property&#xff08;\u5c5e\u6027\u8bbf\u95ee\u63a7\u5236&#xff09;\u3002&#064;property \u8ba9\u4f60\u80fd\u7528\u5c5e\u6027\u8bed\u6cd5\u8c03\u7528\u65b9\u6cd5&#xff0c;\u540c\u65f6\u4fdd\u7559\u9a8c\u8bc1\u903b\u8f91&#xff1a;<\/p>\n<p><span class=\"token comment\"># &#8212; &#064;staticmethod: \u9759\u6001\u65b9\u6cd5 &#8212;<\/span><br \/>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">MyClass<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token decorator annotation punctuation\">&#064;staticmethod<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">helper<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u4e0d\u9700\u8981\u8bbf\u95ee self \u6216 cls&#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;I&#039;m a static method&#034;<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; &#064;classmethod: \u7c7b\u65b9\u6cd5 &#8212;<\/span><br \/>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Person<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    species <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Homo sapiens&#034;<\/span><\/p>\n<p>    <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 punctuation\">:<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>name <span class=\"token operator\">&#061;<\/span> name<\/p>\n<p>    <span class=\"token decorator annotation punctuation\">&#064;classmethod<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">from_birth_year<\/span><span class=\"token punctuation\">(<\/span>cls<span class=\"token punctuation\">,<\/span> name<span class=\"token punctuation\">,<\/span> birth_year<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u5de5\u5382\u65b9\u6cd5&#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> cls<span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> (<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token number\">2026<\/span> <span class=\"token operator\">&#8211;<\/span> birth_year<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\u5c81)&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token decorator annotation punctuation\">&#064;classmethod<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">get_species<\/span><span class=\"token punctuation\">(<\/span>cls<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> cls<span class=\"token punctuation\">.<\/span>species<\/p>\n<p><span class=\"token comment\"># &#8212; &#064;property: \u5c5e\u6027\u88c5\u9970\u5668 &#8212;<\/span><br \/>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Circle<\/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> radius<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>_radius <span class=\"token operator\">&#061;<\/span> radius<\/p>\n<p>    <span class=\"token decorator annotation punctuation\">&#064;property<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">radius<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;getter&#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> self<span class=\"token punctuation\">.<\/span>_radius<\/p>\n<p>    <span class=\"token decorator annotation punctuation\">&#064;radius<span class=\"token punctuation\">.<\/span>setter<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">radius<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> value<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;setter: \u8bbe\u7f6e\u65f6\u6dfb\u52a0\u9a8c\u8bc1&#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> value <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">raise<\/span> ValueError<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u534a\u5f84\u4e0d\u80fd\u4e3a\u8d1f\u6570&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>_radius <span class=\"token operator\">&#061;<\/span> value<\/p>\n<p>    <span class=\"token decorator annotation punctuation\">&#064;radius<span class=\"token punctuation\">.<\/span>deleter<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">radius<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;deleter&#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">del<\/span> self<span class=\"token punctuation\">.<\/span>_radius<\/p>\n<p>    <span class=\"token decorator annotation punctuation\">&#064;property<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">area<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u53ea\u8bfb\u8ba1\u7b97\u5c5e\u6027&#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token number\">3.14159<\/span> <span class=\"token operator\">*<\/span> self<span class=\"token punctuation\">.<\/span>_radius <span class=\"token operator\">**<\/span> <span class=\"token number\">2<\/span><\/p>\n<p>c <span class=\"token operator\">&#061;<\/span> Circle<span class=\"token punctuation\">(<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>c<span class=\"token punctuation\">.<\/span>radius<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 5&#xff08;\u8c03\u7528 getter&#xff0c;\u4e0d\u9700\u8981 c.radius()&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>c<span class=\"token punctuation\">.<\/span>area<span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># 78.53975<\/span><br \/>\nc<span class=\"token punctuation\">.<\/span>radius <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">10<\/span>    <span class=\"token comment\"># \u8c03\u7528 setter&#xff08;\u5e26\u9a8c\u8bc1&#xff09;<\/span><br \/>\n<span class=\"token comment\"># c.radius &#061; -1 # \u629b\u51fa ValueError<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;&#064;property \u662f Python \u5b9e\u73b0 getter\/setter \u7684\u4f18\u96c5\u65b9\u5f0f\u2014\u2014\u5916\u90e8\u4ee3\u7801\u7528 obj.attr \u8bbf\u95ee&#xff0c;\u5185\u90e8\u81ea\u52a8\u8c03\u7528\u76f8\u5e94\u65b9\u6cd5\u3002&#064;classmethod \u5e38\u7528\u4e8e\u5b9e\u73b0\u5de5\u5382\u65b9\u6cd5\u3002<\/p>\n<hr \/>\n<h3>17. \u6a21\u5757\u4e0e\u5305<\/h3>\n<h4>17.1 \u6a21\u5757\u5bfc\u5165<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;Python \u7684\u6a21\u5757\u7cfb\u7edf\u901a\u8fc7 import \u5bfc\u5165\u5916\u90e8\u4ee3\u7801&#xff0c;\u652f\u6301\u591a\u79cd\u5bfc\u5165\u65b9\u5f0f\u548c\u6761\u4ef6\u5bfc\u5165&#xff1a;<\/p>\n<p><span class=\"token comment\"># &#8212; \u5bfc\u5165\u65b9\u5f0f &#8212;<\/span><br \/>\n<span class=\"token comment\"># 1. \u5bfc\u5165\u6574\u4e2a\u6a21\u5757<\/span><br \/>\n<span class=\"token keyword\">import<\/span> math<br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>math<span class=\"token punctuation\">.<\/span>sqrt<span class=\"token punctuation\">(<\/span><span class=\"token number\">16<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 4.0<\/span><\/p>\n<p><span class=\"token comment\"># 2. \u5bfc\u5165\u6a21\u5757\u5e76\u8d77\u522b\u540d<\/span><br \/>\n<span class=\"token keyword\">import<\/span> numpy <span class=\"token keyword\">as<\/span> np<br \/>\n<span class=\"token comment\"># arr &#061; np.array([1, 2, 3])<\/span><\/p>\n<p><span class=\"token comment\"># 3. \u4ece\u6a21\u5757\u5bfc\u5165\u7279\u5b9a\u51fd\u6570\/\u7c7b<\/span><br \/>\n<span class=\"token keyword\">from<\/span> math <span class=\"token keyword\">import<\/span> sqrt<span class=\"token punctuation\">,<\/span> pi<br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>sqrt<span class=\"token punctuation\">(<\/span><span class=\"token number\">25<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># 5.0<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>pi<span class=\"token punctuation\">)<\/span>         <span class=\"token comment\"># 3.141592&#8230;<\/span><\/p>\n<p><span class=\"token comment\"># 4. \u4ece\u6a21\u5757\u5bfc\u5165\u5168\u90e8&#xff08;\u4e0d\u63a8\u8350&#xff0c;\u4f1a\u6c61\u67d3\u547d\u540d\u7a7a\u95f4&#xff09;<\/span><br \/>\n<span class=\"token comment\"># from math import *<\/span><\/p>\n<p><span class=\"token comment\"># 5. \u6761\u4ef6\u5bfc\u5165<\/span><br \/>\n<span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">import<\/span> ujson <span class=\"token keyword\">as<\/span> json  <span class=\"token comment\"># \u5982\u679c\u88c5\u4e86\u66f4\u5feb\u7684\u7248\u672c<\/span><br \/>\n<span class=\"token keyword\">except<\/span> ImportError<span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">import<\/span> json            <span class=\"token comment\"># \u4f7f\u7528\u6807\u51c6\u5e93<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u6a21\u5757\u641c\u7d22\u8def\u5f84 &#8212;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> sys<br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>sys<span class=\"token punctuation\">.<\/span>path<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u6a21\u5757\u641c\u7d22\u8def\u5f84\u5217\u8868<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u67e5\u770b\u6a21\u5757\u5185\u5bb9 &#8212;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> math<br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">dir<\/span><span class=\"token punctuation\">(<\/span>math<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>     <span class=\"token comment\"># \u5217\u51fa\u6a21\u5757\u6240\u6709\u5c5e\u6027\u548c\u65b9\u6cd5<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>math<span class=\"token punctuation\">.<\/span>__doc__<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u6a21\u5757\u6587\u6863<\/span><br \/>\n<span class=\"token comment\"># help(math)         # \u5728 REPL \u4e2d\u67e5\u770b\u5e2e\u52a9<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u63a8\u8350\u7528 import module \u6216 from module import specific_item&#xff0c;\u907f\u514d from module import *&#xff08;\u4f1a\u6c61\u67d3\u547d\u540d\u7a7a\u95f4&#xff09;\u3002\u6761\u4ef6\u5bfc\u5165\u8ba9\u4ee3\u7801\u5728\u4e0d\u540c\u73af\u5883\u4e0b\u81ea\u52a8\u9002\u914d\u3002<\/p>\n<h4>17.2 \u5305\u7684\u7ed3\u6784<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5305\u662f\u5305\u542b init.py \u7684\u76ee\u5f55&#xff0c;\u7528\u4e8e\u7ec4\u7ec7\u591a\u4e2a\u6a21\u5757\u3002init.py \u4e2d\u53ef\u4ee5\u5b9a\u4e49 all \u63a7\u5236\u5bfc\u51fa\u3001\u5bfc\u5165\u5b50\u6a21\u5757\u65b9\u4fbf\u7528\u6237\u4f7f\u7528&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u5305\u662f\u4e00\u4e2a\u5305\u542b __init__.py \u6587\u4ef6\u7684\u76ee\u5f55<\/span><\/p>\n<p><span class=\"token comment\"># \u5178\u578b\u5305\u7ed3\u6784:<\/span><br \/>\n<span class=\"token comment\"># my_package\/<\/span><br \/>\n<span class=\"token comment\"># \u251c\u2500\u2500 __init__.py          # \u5305\u7684\u521d\u59cb\u5316\u6587\u4ef6<\/span><br \/>\n<span class=\"token comment\"># \u251c\u2500\u2500 core.py              # \u6838\u5fc3\u6a21\u5757<\/span><br \/>\n<span class=\"token comment\"># \u251c\u2500\u2500 utils\/<\/span><br \/>\n<span class=\"token comment\"># \u2502   \u251c\u2500\u2500 __init__.py<\/span><br \/>\n<span class=\"token comment\"># \u2502   \u251c\u2500\u2500 helpers.py<\/span><br \/>\n<span class=\"token comment\"># \u2502   \u2514\u2500\u2500 validators.py<\/span><br \/>\n<span class=\"token comment\"># \u2514\u2500\u2500 tests\/<\/span><br \/>\n<span class=\"token comment\">#     \u251c\u2500\u2500 __init__.py<\/span><br \/>\n<span class=\"token comment\">#     \u2514\u2500\u2500 test_core.py<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; __init__.py \u793a\u4f8b &#8212;<\/span><br \/>\n<span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\nmy_package \u5305\u521d\u59cb\u5316<br \/>\n&#034;&#034;&#034;<\/span><br \/>\n<span class=\"token comment\"># \u63a7\u5236 from my_package import * \u5bfc\u51fa\u7684\u5185\u5bb9<\/span><br \/>\n__all__ <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;core_func&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;utils&#034;<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p><span class=\"token comment\"># \u53ef\u5728\u6b64\u5904\u5bfc\u5165\u5b50\u6a21\u5757&#xff0c;\u65b9\u4fbf\u7528\u6237<\/span><br \/>\n<span class=\"token keyword\">from<\/span> <span class=\"token punctuation\">.<\/span>core <span class=\"token keyword\">import<\/span> core_func<br \/>\n<span class=\"token keyword\">from<\/span> <span class=\"token punctuation\">.<\/span> <span class=\"token keyword\">import<\/span> utils<\/p>\n<p><span class=\"token comment\"># \u5305\u7684\u7248\u672c<\/span><br \/>\n__version__ <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;1.0.0&#034;<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u5373\u4f7f init.py \u4e3a\u7a7a\u6587\u4ef6\u4e5f\u6ca1\u5173\u7cfb&#xff0c;\u5b83\u7684\u5b58\u5728\u6807\u5fd7\u7740\u8be5\u76ee\u5f55\u662f\u4e00\u4e2a Python \u5305&#xff08;Python 3.3&#043; \u7684\u9690\u5f0f\u547d\u540d\u7a7a\u95f4\u5305\u9664\u5916&#xff09;\u3002<\/p>\n<h4>17.3 \u76f8\u5bf9\u5bfc\u5165\u4e0e\u7edd\u5bf9\u5bfc\u5165<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5728\u5305\u5185\u90e8&#xff0c;\u4f7f\u7528 .&#xff08;\u5f53\u524d\u76ee\u5f55&#xff09;\u548c \u2026&#xff08;\u4e0a\u7ea7\u76ee\u5f55&#xff09;\u8fdb\u884c\u76f8\u5bf9\u5bfc\u5165\u3002\u7edd\u5bf9\u5bfc\u5165\u4ece\u9879\u76ee\u6839\u76ee\u5f55\u5f00\u59cb&#xff1a;<\/p>\n<p><span class=\"token comment\"># &#8212; \u5728\u5305\u5185\u90e8&#xff0c;\u4f7f\u7528\u76f8\u5bf9\u5bfc\u5165 &#8212;<\/span><br \/>\n<span class=\"token comment\"># \u6587\u4ef6: my_package\/utils\/helpers.py<\/span><\/p>\n<p><span class=\"token comment\"># \u76f8\u5bf9\u5bfc\u5165: . \u8868\u793a\u5f53\u524d\u76ee\u5f55&#xff0c;.. \u8868\u793a\u4e0a\u7ea7\u76ee\u5f55<\/span><br \/>\n<span class=\"token comment\"># from . import validators         # \u540c\u76ee\u5f55<\/span><br \/>\n<span class=\"token comment\"># from ..core import core_func     # \u4e0a\u7ea7\u76ee\u5f55\u7684 core \u6a21\u5757<\/span><\/p>\n<p><span class=\"token comment\"># \u7edd\u5bf9\u5bfc\u5165: \u4ece\u9876\u5c42\u5f00\u59cb<\/span><br \/>\n<span class=\"token comment\"># from my_package.core import core_func<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u5305\u5185\u90e8\u63a8\u8350\u4f7f\u7528\u76f8\u5bf9\u5bfc\u5165&#xff08;\u66f4\u7075\u6d3b\u3001\u4e0d\u4f9d\u8d56\u9879\u76ee\u540d&#xff09;&#xff0c;\u5bf9\u5916\u516c\u5f00\u7684 API \u4f7f\u7528\u7edd\u5bf9\u5bfc\u5165\u3002<\/p>\n<h4>17.4 \u5e38\u7528\u6807\u51c6\u5e93\u6a21\u5757<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;Python \u6807\u51c6\u5e93\u6781\u5176\u4e30\u5bcc&#xff0c;\u8986\u76d6\u4e86\u64cd\u4f5c\u7cfb\u7edf\u63a5\u53e3\u3001\u65e5\u671f\u65f6\u95f4\u3001JSON \u5904\u7406\u3001\u6b63\u5219\u8868\u8fbe\u5f0f\u3001\u9ad8\u7ea7\u96c6\u5408\u7c7b\u548c\u8fed\u4ee3\u5de5\u5177\u7b49&#xff1a;<\/p>\n<p><span class=\"token comment\"># &#8212; os: \u64cd\u4f5c\u7cfb\u7edf\u63a5\u53e3 &#8212;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> os<br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>os<span class=\"token punctuation\">.<\/span>name<span class=\"token punctuation\">)<\/span>              <span class=\"token comment\"># &#039;nt&#039; (Windows) \u6216 &#039;posix&#039; (Linux\/Mac)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>os<span class=\"token punctuation\">.<\/span>getcwd<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>          <span class=\"token comment\"># \u5f53\u524d\u5de5\u4f5c\u76ee\u5f55<\/span><br \/>\n<span class=\"token comment\"># os.listdir(&#034;.&#034;)           # \u5217\u51fa\u76ee\u5f55\u5185\u5bb9<\/span><br \/>\n<span class=\"token comment\"># os.mkdir(&#034;new_dir&#034;)      # \u521b\u5efa\u76ee\u5f55<\/span><br \/>\n<span class=\"token comment\"># os.remove(&#034;file.txt&#034;)    # \u5220\u9664\u6587\u4ef6<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>os<span class=\"token punctuation\">.<\/span>path<span class=\"token punctuation\">.<\/span>join<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;dir&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;subdir&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;file.txt&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u8de8\u5e73\u53f0\u8def\u5f84\u62fc\u63a5<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>os<span class=\"token punctuation\">.<\/span>path<span class=\"token punctuation\">.<\/span>exists<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;some_file.txt&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>            <span class=\"token comment\"># \u6587\u4ef6\u662f\u5426\u5b58\u5728<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>os<span class=\"token punctuation\">.<\/span>path<span class=\"token punctuation\">.<\/span>dirname<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\/path\/to\/file.txt&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># \/path\/to<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>os<span class=\"token punctuation\">.<\/span>path<span class=\"token punctuation\">.<\/span>basename<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\/path\/to\/file.txt&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>      <span class=\"token comment\"># file.txt<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; sys: \u7cfb\u7edf\u76f8\u5173 &#8212;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> sys<br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>sys<span class=\"token punctuation\">.<\/span>version<span class=\"token punctuation\">)<\/span>          <span class=\"token comment\"># Python \u7248\u672c<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>sys<span class=\"token punctuation\">.<\/span>argv<span class=\"token punctuation\">)<\/span>             <span class=\"token comment\"># \u547d\u4ee4\u884c\u53c2\u6570<\/span><br \/>\n<span class=\"token comment\"># sys.exit(0)               # \u9000\u51fa\u7a0b\u5e8f<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; random: \u968f\u673a\u6570 &#8212;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> random<br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>random<span class=\"token punctuation\">.<\/span>random<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>            <span class=\"token comment\"># [0.0, 1.0) \u7684\u968f\u673a\u6d6e\u70b9\u6570<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>random<span class=\"token punctuation\">.<\/span>randint<span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>      <span class=\"token comment\"># [1, 10] \u7684\u968f\u673a\u6574\u6570<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>random<span class=\"token punctuation\">.<\/span>choice<span class=\"token punctuation\">(<\/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 punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># \u968f\u673a\u9009\u62e9\u4e00\u4e2a\u5143\u7d20<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>random<span class=\"token punctuation\">.<\/span>sample<span class=\"token punctuation\">(<\/span><span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">100<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u968f\u673a\u9009\u62e95\u4e2a\u4e0d\u91cd\u590d\u7684\u5143\u7d20<\/span><br \/>\nrandom<span class=\"token punctuation\">.<\/span>shuffle<span class=\"token punctuation\">(<\/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 punctuation\">)<\/span>     <span class=\"token comment\"># \u539f\u5730\u6253\u4e71\u5217\u8868<\/span><br \/>\nrandom<span class=\"token punctuation\">.<\/span>seed<span class=\"token punctuation\">(<\/span><span class=\"token number\">42<\/span><span class=\"token punctuation\">)<\/span>                      <span class=\"token comment\"># \u8bbe\u7f6e\u968f\u673a\u79cd\u5b50&#xff08;\u53ef\u590d\u73b0&#xff09;<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; datetime: \u65e5\u671f\u65f6\u95f4 &#8212;<\/span><br \/>\n<span class=\"token keyword\">from<\/span> datetime <span class=\"token keyword\">import<\/span> datetime<span class=\"token punctuation\">,<\/span> timedelta<span class=\"token punctuation\">,<\/span> date<\/p>\n<p>now <span class=\"token operator\">&#061;<\/span> datetime<span class=\"token punctuation\">.<\/span>now<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>now<span class=\"token punctuation\">)<\/span>                          <span class=\"token comment\"># 2026-07-21 14:30:00.123456<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>now<span class=\"token punctuation\">.<\/span>strftime<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;%Y-%m-%d %H:%M:%S&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 2026-07-21 14:30:00<\/span><br \/>\nparsed <span class=\"token operator\">&#061;<\/span> datetime<span class=\"token punctuation\">.<\/span>strptime<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;2026-07-21&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;%Y-%m-%d&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>parsed<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 2026-07-21 00:00:00<\/span><\/p>\n<p>tomorrow <span class=\"token operator\">&#061;<\/span> now <span class=\"token operator\">&#043;<\/span> timedelta<span class=\"token punctuation\">(<\/span>days<span class=\"token operator\">&#061;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><br \/>\nlast_week <span class=\"token operator\">&#061;<\/span> now <span class=\"token operator\">&#8211;<\/span> timedelta<span class=\"token punctuation\">(<\/span>weeks<span class=\"token operator\">&#061;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>tomorrow<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>last_week<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; json: JSON \u5904\u7406 &#8212;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> json<\/p>\n<p>data <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;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;age&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">25<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;skills&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;Python&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;JavaScript&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><br \/>\njson_str <span class=\"token operator\">&#061;<\/span> json<span class=\"token punctuation\">.<\/span>dumps<span class=\"token punctuation\">(<\/span>data<span class=\"token punctuation\">,<\/span> indent<span class=\"token operator\">&#061;<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> ensure_ascii<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">False<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>json_str<span class=\"token punctuation\">)<\/span><br \/>\nparsed <span class=\"token operator\">&#061;<\/span> json<span class=\"token punctuation\">.<\/span>loads<span class=\"token punctuation\">(<\/span>json_str<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>parsed<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># Alice<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; re: \u6b63\u5219\u8868\u8fbe\u5f0f &#8212;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> re<\/p>\n<p>text <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;\u8054\u7cfb\u65b9\u5f0f: alice&#064;example.com, bob_123&#064;gmail.com&#034;<\/span><br \/>\nemails <span class=\"token operator\">&#061;<\/span> re<span class=\"token punctuation\">.<\/span>findall<span class=\"token punctuation\">(<\/span><span class=\"token string\">r&#039;[\\\\w.&#043;-]&#043;&#064;[\\\\w-]&#043;\\\\.[\\\\w.-]&#043;&#039;<\/span><span class=\"token punctuation\">,<\/span> text<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>emails<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [&#039;alice&#064;example.com&#039;, &#039;bob_123&#064;gmail.com&#039;]<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; collections: \u66f4\u591a\u96c6\u5408\u7c7b\u578b &#8212;<\/span><br \/>\n<span class=\"token keyword\">from<\/span> collections <span class=\"token keyword\">import<\/span> Counter<span class=\"token punctuation\">,<\/span> defaultdict<span class=\"token punctuation\">,<\/span> OrderedDict<span class=\"token punctuation\">,<\/span> deque<br \/>\n<span class=\"token comment\"># Counter \/ defaultdict \u5df2\u5728\u524d\u9762\u4ecb\u7ecd<\/span><\/p>\n<p><span class=\"token comment\"># deque: \u53cc\u7aef\u961f\u5217&#xff08;\u9ad8\u6548\u7684\u4e24\u7aef\u64cd\u4f5c&#xff09;<\/span><br \/>\ndq <span class=\"token operator\">&#061;<\/span> deque<span class=\"token punctuation\">(<\/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 punctuation\">)<\/span><br \/>\ndq<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\"># \u53f3\u8fb9\u6dfb\u52a0 \u2192 deque([1, 2, 3, 4])<\/span><br \/>\ndq<span class=\"token punctuation\">.<\/span>appendleft<span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># \u5de6\u8fb9\u6dfb\u52a0 \u2192 deque([0, 1, 2, 3, 4])<\/span><br \/>\ndq<span class=\"token punctuation\">.<\/span>pop<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>           <span class=\"token comment\"># \u53f3\u8fb9\u5f39\u51fa \u2192 4<\/span><br \/>\ndq<span class=\"token punctuation\">.<\/span>popleft<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># \u5de6\u8fb9\u5f39\u51fa \u2192 0<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; itertools: \u8fed\u4ee3\u5668\u5de5\u5177 &#8212;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> itertools<\/p>\n<p><span class=\"token comment\"># \u65e0\u9650\u8fed\u4ee3\u5668<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span>itertools<span class=\"token punctuation\">.<\/span>islice<span class=\"token punctuation\">(<\/span>itertools<span class=\"token punctuation\">.<\/span>count<span class=\"token punctuation\">(<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [10, 12, 14, 16, 18]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span>itertools<span class=\"token punctuation\">.<\/span>islice<span class=\"token punctuation\">(<\/span>itertools<span class=\"token punctuation\">.<\/span>cycle<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;ABC&#034;<\/span><span class=\"token punctuation\">)<\/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 punctuation\">)<\/span>  <span class=\"token comment\"># [&#039;A&#039;, &#039;B&#039;, &#039;C&#039;, &#039;A&#039;, &#039;B&#039;, &#039;C&#039;]<\/span><\/p>\n<p><span class=\"token comment\"># \u7ec4\u5408\u8fed\u4ee3\u5668<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span>itertools<span class=\"token punctuation\">.<\/span>product<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;AB&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;12&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>     <span class=\"token comment\"># [(&#039;A&#039;, &#039;1&#039;), (&#039;A&#039;, &#039;2&#039;), (&#039;B&#039;, &#039;1&#039;), (&#039;B&#039;, &#039;2&#039;)]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span>itertools<span class=\"token punctuation\">.<\/span>permutations<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;ABC&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u6392\u5217: 6\u79cd<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span>itertools<span class=\"token punctuation\">.<\/span>combinations<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;ABC&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u7ec4\u5408: 3\u79cd<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span>itertools<span class=\"token punctuation\">.<\/span>combinations_with_replacement<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;ABC&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u6709\u653e\u56de\u7ec4\u5408<\/span><\/p>\n<p><span class=\"token comment\"># \u8fc7\u6ee4\u8fed\u4ee3\u5668<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span>itertools<span class=\"token punctuation\">.<\/span>compress<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;ABCD&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/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\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [&#039;A&#039;, &#039;C&#039;]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span>itertools<span class=\"token punctuation\">.<\/span>dropwhile<span class=\"token punctuation\">(<\/span><span class=\"token keyword\">lambda<\/span> x<span class=\"token punctuation\">:<\/span> x <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/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\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [3, 4, 1, 2]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span>itertools<span class=\"token punctuation\">.<\/span>takewhile<span class=\"token punctuation\">(<\/span><span class=\"token keyword\">lambda<\/span> x<span class=\"token punctuation\">:<\/span> x <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/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\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [1, 2]<\/span><\/p>\n<p><span class=\"token comment\"># \u5206\u7ec4<\/span><br \/>\ndata <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;a&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;a&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;b&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;b&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">4<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">for<\/span> key<span class=\"token punctuation\">,<\/span> group <span class=\"token keyword\">in<\/span> itertools<span class=\"token punctuation\">.<\/span>groupby<span class=\"token punctuation\">(<\/span>data<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">lambda<\/span> x<span class=\"token punctuation\">:<\/span> x<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><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> <span class=\"token string\">&#034;-&gt;&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span>group<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token comment\"># a -&gt; [(&#039;a&#039;, 1), (&#039;a&#039;, 2)]<\/span><br \/>\n<span class=\"token comment\"># b -&gt; [(&#039;b&#039;, 3), (&#039;b&#039;, 4)]<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; functools: \u9ad8\u9636\u51fd\u6570 &#8212;<\/span><br \/>\n<span class=\"token keyword\">from<\/span> functools <span class=\"token keyword\">import<\/span> <span class=\"token builtin\">reduce<\/span><span class=\"token punctuation\">,<\/span> partial<span class=\"token punctuation\">,<\/span> lru_cache<\/p>\n<p><span class=\"token comment\"># partial: \u56fa\u5b9a\u90e8\u5206\u53c2\u6570<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">power<\/span><span class=\"token punctuation\">(<\/span>base<span class=\"token punctuation\">,<\/span> exp<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> base <span class=\"token operator\">**<\/span> exp<\/p>\n<p>square <span class=\"token operator\">&#061;<\/span> partial<span class=\"token punctuation\">(<\/span>power<span class=\"token punctuation\">,<\/span> exp<span class=\"token operator\">&#061;<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u56fa\u5b9a exp&#061;2<\/span><br \/>\ncube <span class=\"token operator\">&#061;<\/span> partial<span class=\"token punctuation\">(<\/span>power<span class=\"token punctuation\">,<\/span> exp<span class=\"token operator\">&#061;<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># \u56fa\u5b9a exp&#061;3<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>square<span class=\"token punctuation\">(<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 25<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>cube<span class=\"token punctuation\">(<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># 125<\/span><\/p>\n<p><span class=\"token comment\"># lru_cache: \u7f13\u5b58\u51fd\u6570\u7ed3\u679c&#xff08;\u8bb0\u5fc6\u5316&#xff09;<\/span><br \/>\n<span class=\"token decorator annotation punctuation\">&#064;lru_cache<\/span><span class=\"token punctuation\">(<\/span>maxsize<span class=\"token operator\">&#061;<\/span><span class=\"token number\">128<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">fibonacci<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u8ba1\u7b97\u6590\u6ce2\u90a3\u5951\u6570&#xff08;\u5e26\u7f13\u5b58&#xff09;&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> n <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> n<br \/>\n    <span class=\"token keyword\">return<\/span> fibonacci<span class=\"token punctuation\">(<\/span>n <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#043;<\/span> fibonacci<span class=\"token punctuation\">(<\/span>n <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>fibonacci<span class=\"token punctuation\">(<\/span><span class=\"token number\">100<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># 354224848179261915075&#xff08;\u77ac\u95f4\u8ba1\u7b97&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>fibonacci<span class=\"token punctuation\">.<\/span>cache_info<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># CacheInfo(hits&#061;98, misses&#061;101, maxsize&#061;128, currsize&#061;101)<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u6807\u51c6\u5e93\u662f Python \u7684\u4e00\u5927\u4f18\u52bf\u2014\u2014\u81ea\u5e26\u7535\u6c60\u3002itertools \u548c collections \u662f\u63d0\u9ad8\u4ee3\u7801\u6548\u7387\u7684\u4e24\u5927\u5229\u5668&#xff0c;pathlib \u662f\u5904\u7406\u6587\u4ef6\u8def\u5f84\u7684\u73b0\u4ee3\u5316\u9009\u62e9&#xff0c;\u5efa\u8bae\u4f18\u5148\u4f7f\u7528\u3002<\/p>\n<hr \/>\n<h3>18. \u6587\u4ef6\u64cd\u4f5c<\/h3>\n<h4>18.1 \u57fa\u672c\u8bfb\u5199<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u4f7f\u7528 open() \u6253\u5f00\u6587\u4ef6&#xff0c;\u914d\u5408 with \u8bed\u53e5\u786e\u4fdd\u81ea\u52a8\u5173\u95ed\u3002\u652f\u6301\u591a\u79cd\u8bfb\u53d6\u65b9\u5f0f&#xff08;\u5168\u90e8\u3001\u5206\u5757\u3001\u5355\u884c\u3001\u6240\u6709\u884c\u3001\u9010\u884c\u8fed\u4ee3&#xff09;\u548c\u6587\u4ef6\u6a21\u5f0f&#xff1a;<\/p>\n<p><span class=\"token comment\"># &#8212; \u5199\u5165\u6587\u4ef6 &#8212;<\/span><br \/>\n<span class=\"token comment\"># \u6a21\u5f0f: &#039;w&#039; (\u5199), &#039;a&#039; (\u8ffd\u52a0), &#039;x&#039; (\u6392\u4ed6\u521b\u5efa)<\/span><br \/>\n<span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;example.txt&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;w&#034;<\/span><span class=\"token punctuation\">,<\/span> encoding<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;utf-8&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> f<span class=\"token punctuation\">:<\/span><br \/>\n    f<span class=\"token punctuation\">.<\/span>write<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Hello, World!\\\\n&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    f<span class=\"token punctuation\">.<\/span>write<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u8fd9\u662f\u7b2c\u4e8c\u884c\u3002\\\\n&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    f<span class=\"token punctuation\">.<\/span>writelines<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;\u7b2c\u4e09\u884c\\\\n&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u7b2c\u56db\u884c\\\\n&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u8bfb\u53d6\u6587\u4ef6 &#8212;<\/span><br \/>\n<span class=\"token comment\"># \u6a21\u5f0f: &#039;r&#039; (\u8bfb&#xff0c;\u9ed8\u8ba4)<\/span><br \/>\n<span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;example.txt&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;r&#034;<\/span><span class=\"token punctuation\">,<\/span> encoding<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;utf-8&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> f<span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token comment\"># \u65b9\u5f0f1: \u8bfb\u53d6\u5168\u90e8<\/span><br \/>\n    content <span class=\"token operator\">&#061;<\/span> f<span class=\"token punctuation\">.<\/span>read<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>content<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;example.txt&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;r&#034;<\/span><span class=\"token punctuation\">,<\/span> encoding<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;utf-8&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> f<span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token comment\"># \u65b9\u5f0f2: \u8bfb\u53d6\u6307\u5b9a\u5b57\u7b26\u6570<\/span><br \/>\n    chunk <span class=\"token operator\">&#061;<\/span> f<span class=\"token punctuation\">.<\/span>read<span class=\"token punctuation\">(<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>chunk<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># Hello, Wor<\/span><\/p>\n<p><span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;example.txt&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;r&#034;<\/span><span class=\"token punctuation\">,<\/span> encoding<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;utf-8&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> f<span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token comment\"># \u65b9\u5f0f3: \u8bfb\u53d6\u5355\u884c<\/span><br \/>\n    line <span class=\"token operator\">&#061;<\/span> f<span class=\"token punctuation\">.<\/span>readline<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>line<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># Hello, World!<\/span><\/p>\n<p><span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;example.txt&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;r&#034;<\/span><span class=\"token punctuation\">,<\/span> encoding<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;utf-8&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> f<span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token comment\"># \u65b9\u5f0f4: \u8bfb\u53d6\u6240\u6709\u884c\u5230\u5217\u8868<\/span><br \/>\n    lines <span class=\"token operator\">&#061;<\/span> f<span class=\"token punctuation\">.<\/span>readlines<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>lines<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [&#039;Hello, World!\\\\n&#039;, &#039;\u8fd9\u662f\u7b2c\u4e8c\u884c\u3002\\\\n&#039;, &#8230;]<\/span><\/p>\n<p><span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;example.txt&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;r&#034;<\/span><span class=\"token punctuation\">,<\/span> encoding<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;utf-8&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> f<span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token comment\"># \u65b9\u5f0f5: \u9010\u884c\u8fed\u4ee3&#xff08;\u63a8\u8350&#xff0c;\u5185\u5b58\u53cb\u597d&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> line <span class=\"token keyword\">in<\/span> f<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>line<span class=\"token punctuation\">.<\/span>strip<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u6587\u4ef6\u6a21\u5f0f &#8212;<\/span><br \/>\n<span class=\"token comment\"># &#039;r&#039;  &#8211; \u53ea\u8bfb&#xff08;\u6587\u4ef6\u5fc5\u987b\u5b58\u5728&#xff09;<\/span><br \/>\n<span class=\"token comment\"># &#039;w&#039;  &#8211; \u53ea\u5199&#xff08;\u6587\u4ef6\u5b58\u5728\u5219\u6e05\u7a7a&#xff0c;\u4e0d\u5b58\u5728\u5219\u521b\u5efa&#xff09;<\/span><br \/>\n<span class=\"token comment\"># &#039;a&#039;  &#8211; \u8ffd\u52a0&#xff08;\u6587\u4ef6\u5b58\u5728\u5219\u5728\u672b\u5c3e\u6dfb\u52a0&#xff09;<\/span><br \/>\n<span class=\"token comment\"># &#039;x&#039;  &#8211; \u6392\u4ed6\u521b\u5efa&#xff08;\u6587\u4ef6\u5df2\u5b58\u5728\u5219\u5931\u8d25&#xff09;<\/span><br \/>\n<span class=\"token comment\"># &#039;r&#043;&#039; &#8211; \u8bfb\u5199<\/span><br \/>\n<span class=\"token comment\"># &#039;b&#039;  &#8211; \u4e8c\u8fdb\u5236\u6a21\u5f0f&#xff08;\u5982 &#039;rb&#039;, &#039;wb&#039;&#xff09;<\/span><br \/>\n<span class=\"token comment\"># &#039;t&#039;  &#8211; \u6587\u672c\u6a21\u5f0f&#xff08;\u9ed8\u8ba4&#xff0c;\u5982 &#039;rt&#039;, &#039;wt&#039;&#xff09;<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u9010\u884c\u8fed\u4ee3&#xff08;for line in f&#xff09;\u662f\u6700\u63a8\u8350\u7684\u5927\u6587\u4ef6\u8bfb\u53d6\u65b9\u5f0f\u2014\u2014\u4e0d\u4f1a\u4e00\u6b21\u6027\u5c06\u6574\u4e2a\u6587\u4ef6\u52a0\u8f7d\u5230\u5185\u5b58\u3002\u59cb\u7ec8\u4f7f\u7528 encoding&#061;\u2018utf-8\u2019 \u907f\u514d\u7f16\u7801\u95ee\u9898\u3002<\/p>\n<h4>18.2 \u4e0a\u4e0b\u6587\u7ba1\u7406\u5668&#xff08;with \u8bed\u53e5&#xff09;<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;with \u8bed\u53e5\u786e\u4fdd\u8d44\u6e90&#xff08;\u5982\u6587\u4ef6&#xff09;\u5728\u4f7f\u7528\u540e\u81ea\u52a8\u91ca\u653e&#xff0c;\u5373\u4f7f\u53d1\u751f\u5f02\u5e38\u4e5f\u4e0d\u4f1a\u6cc4\u6f0f\u3002\u5b83\u7b49\u4ef7\u4e8e try\/finally \u7684\u8bed\u6cd5\u7cd6&#xff1a;<\/p>\n<p><span class=\"token comment\"># with \u8bed\u53e5\u786e\u4fdd\u6587\u4ef6\u6b63\u786e\u5173\u95ed&#xff0c;\u5373\u4f7f\u53d1\u751f\u5f02\u5e38<\/span><br \/>\n<span class=\"token comment\"># \u7b49\u4ef7\u4e8e:<\/span><br \/>\n<span class=\"token comment\"># f &#061; open(&#034;file.txt&#034;)<\/span><br \/>\n<span class=\"token comment\"># try:<\/span><br \/>\n<span class=\"token comment\">#     data &#061; f.read()<\/span><br \/>\n<span class=\"token comment\"># finally:<\/span><br \/>\n<span class=\"token comment\">#     f.close()<\/span><\/p>\n<p><span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;example.txt&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;r&#034;<\/span><span class=\"token punctuation\">,<\/span> encoding<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;utf-8&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> f<span class=\"token punctuation\">:<\/span><br \/>\n    data <span class=\"token operator\">&#061;<\/span> f<span class=\"token punctuation\">.<\/span>read<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token comment\"># \u6587\u4ef6\u5728\u8fd9\u91cc\u81ea\u52a8\u5173\u95ed&#xff08;\u79bb\u5f00 with \u5757\u65f6&#xff09;<\/span><\/p>\n<p><span class=\"token comment\"># \u540c\u65f6\u64cd\u4f5c\u591a\u4e2a\u6587\u4ef6<\/span><br \/>\n<span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;source.txt&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;r&#034;<\/span><span class=\"token punctuation\">,<\/span> encoding<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;utf-8&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> src<span class=\"token punctuation\">,<\/span> \\\\<br \/>\n     <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;dest.txt&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;w&#034;<\/span><span class=\"token punctuation\">,<\/span> encoding<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;utf-8&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> dst<span class=\"token punctuation\">:<\/span><br \/>\n    dst<span class=\"token punctuation\">.<\/span>write<span class=\"token punctuation\">(<\/span>src<span class=\"token punctuation\">.<\/span>read<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u4efb\u4f55\u9700\u8981\u83b7\u53d6-\u4f7f\u7528-\u91ca\u653e\u6a21\u5f0f\u7684\u8d44\u6e90&#xff08;\u6587\u4ef6\u3001\u9501\u3001\u8fde\u63a5&#xff09;\u90fd\u5e94\u4f7f\u7528 with \u8bed\u53e5&#xff0c;\u8fd9\u662f Python \u8d44\u6e90\u7ba1\u7406\u7684\u6700\u4f73\u5b9e\u8df5\u3002<\/p>\n<h4>18.3 \u6587\u4ef6\u4e0e\u76ee\u5f55\u64cd\u4f5c<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;os \u548c shutil \u6a21\u5757\u63d0\u4f9b\u4e86\u6587\u4ef6\u548c\u76ee\u5f55\u7684\u589e\u5220\u6539\u67e5\u64cd\u4f5c\u3002Python 3.4&#043; \u7684 pathlib.Path \u63d0\u4f9b\u4e86\u66f4\u9762\u5411\u5bf9\u8c61\u7684\u8def\u5f84\u64cd\u4f5c\u65b9\u5f0f&#xff1a;<\/p>\n<p><span class=\"token keyword\">import<\/span> os<br \/>\n<span class=\"token keyword\">import<\/span> shutil<\/p>\n<p><span class=\"token comment\"># &#8212; \u6587\u4ef6\u64cd\u4f5c &#8212;<\/span><br \/>\n<span class=\"token comment\"># \u68c0\u67e5\u662f\u5426\u5b58\u5728<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>os<span class=\"token punctuation\">.<\/span>path<span class=\"token punctuation\">.<\/span>exists<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;example.txt&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># True\/False<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>os<span class=\"token punctuation\">.<\/span>path<span class=\"token punctuation\">.<\/span>isfile<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;example.txt&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># \u662f\u6587\u4ef6&#xff1f;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>os<span class=\"token punctuation\">.<\/span>path<span class=\"token punctuation\">.<\/span>isdir<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;some_dir&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># \u662f\u76ee\u5f55&#xff1f;<\/span><\/p>\n<p><span class=\"token comment\"># \u83b7\u53d6\u6587\u4ef6\u4fe1\u606f<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>os<span class=\"token punctuation\">.<\/span>path<span class=\"token punctuation\">.<\/span>getsize<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;example.txt&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u6587\u4ef6\u5927\u5c0f&#xff08;\u5b57\u8282&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>os<span class=\"token punctuation\">.<\/span>path<span class=\"token punctuation\">.<\/span>getmtime<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;example.txt&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token comment\"># \u6700\u540e\u4fee\u6539\u65f6\u95f4\u6233<\/span><\/p>\n<p><span class=\"token comment\"># \u91cd\u547d\u540d\/\u79fb\u52a8<\/span><br \/>\nos<span class=\"token punctuation\">.<\/span>rename<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;old_name.txt&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;new_name.txt&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token comment\"># shutil.move(&#034;source.txt&#034;, &#034;destination\/&#034;)<\/span><\/p>\n<p><span class=\"token comment\"># \u590d\u5236\u6587\u4ef6<\/span><br \/>\n<span class=\"token comment\"># shutil.copy(&#034;source.txt&#034;, &#034;destination\/&#034;)<\/span><\/p>\n<p><span class=\"token comment\"># \u5220\u9664\u6587\u4ef6<\/span><br \/>\nos<span class=\"token punctuation\">.<\/span>remove<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;example.txt&#034;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u76ee\u5f55\u64cd\u4f5c &#8212;<\/span><br \/>\n<span class=\"token comment\"># \u521b\u5efa\u76ee\u5f55<\/span><br \/>\nos<span class=\"token punctuation\">.<\/span>mkdir<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;single_dir&#034;<\/span><span class=\"token punctuation\">)<\/span>                       <span class=\"token comment\"># \u521b\u5efa\u5355\u5c42\u76ee\u5f55&#xff08;\u7236\u76ee\u5f55\u5fc5\u987b\u5b58\u5728&#xff09;<\/span><br \/>\nos<span class=\"token punctuation\">.<\/span>makedirs<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;parent\/child\/grandchild&#034;<\/span><span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># \u9012\u5f52\u521b\u5efa\u591a\u5c42\u76ee\u5f55<\/span><\/p>\n<p><span class=\"token comment\"># \u5217\u51fa\u76ee\u5f55\u5185\u5bb9<\/span><br \/>\nentries <span class=\"token operator\">&#061;<\/span> os<span class=\"token punctuation\">.<\/span>listdir<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;.&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">for<\/span> entry <span class=\"token keyword\">in<\/span> entries<span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>entry<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u9012\u5f52\u904d\u5386<\/span><br \/>\n<span class=\"token keyword\">for<\/span> root<span class=\"token punctuation\">,<\/span> dirs<span class=\"token punctuation\">,<\/span> files <span class=\"token keyword\">in<\/span> os<span class=\"token punctuation\">.<\/span>walk<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;.&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token builtin\">file<\/span> <span class=\"token keyword\">in<\/span> files<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>os<span class=\"token punctuation\">.<\/span>path<span class=\"token punctuation\">.<\/span>join<span class=\"token punctuation\">(<\/span>root<span class=\"token punctuation\">,<\/span> <span class=\"token builtin\">file<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u5220\u9664\u76ee\u5f55<\/span><br \/>\n<span class=\"token comment\"># os.rmdir(&#034;empty_dir&#034;)         # \u53ea\u80fd\u5220\u9664\u7a7a\u76ee\u5f55<\/span><br \/>\n<span class=\"token comment\"># shutil.rmtree(&#034;dir_path&#034;)     # \u9012\u5f52\u5220\u9664\u6574\u4e2a\u76ee\u5f55\u6811<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; pathlib&#xff08;Python 3.4&#043;&#xff0c;\u9762\u5411\u5bf9\u8c61\u7684\u8def\u5f84\u64cd\u4f5c&#xff0c;\u63a8\u8350&#xff01;&#xff09;&#8212;<\/span><br \/>\n<span class=\"token keyword\">from<\/span> pathlib <span class=\"token keyword\">import<\/span> Path<\/p>\n<p>p <span class=\"token operator\">&#061;<\/span> Path<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;data&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token string\">&#034;subdir&#034;<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token string\">&#034;file.txt&#034;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>p<span class=\"token punctuation\">)<\/span>                            <span class=\"token comment\"># data\\\\subdir\\\\file.txt  (Windows)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>p<span class=\"token punctuation\">.<\/span>name<span class=\"token punctuation\">)<\/span>                       <span class=\"token comment\"># file.txt<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>p<span class=\"token punctuation\">.<\/span>stem<span class=\"token punctuation\">)<\/span>                       <span class=\"token comment\"># file<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>p<span class=\"token punctuation\">.<\/span>suffix<span class=\"token punctuation\">)<\/span>                     <span class=\"token comment\"># .txt<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>p<span class=\"token punctuation\">.<\/span>parent<span class=\"token punctuation\">)<\/span>                     <span class=\"token comment\"># data\\\\subdir<\/span><\/p>\n<p><span class=\"token comment\"># \u521b\u5efa\u76ee\u5f55<\/span><br \/>\nPath<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;my_folder&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>mkdir<span class=\"token punctuation\">(<\/span>exist_ok<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">)<\/span><br \/>\nPath<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;nested\/deep\/folder&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>mkdir<span class=\"token punctuation\">(<\/span>parents<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">,<\/span> exist_ok<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u8bfb\u5199&#xff08;Python 3.5&#043;&#xff09;<\/span><br \/>\n<span class=\"token comment\"># text &#061; Path(&#034;file.txt&#034;).read_text(encoding&#061;&#034;utf-8&#034;)<\/span><br \/>\n<span class=\"token comment\"># Path(&#034;output.txt&#034;).write_text(&#034;Hello&#034;, encoding&#061;&#034;utf-8&#034;)<\/span><\/p>\n<p><span class=\"token comment\"># \u904d\u5386\u76ee\u5f55<\/span><br \/>\n<span class=\"token comment\"># for file in Path(&#034;.&#034;).glob(&#034;*.py&#034;):<\/span><br \/>\n<span class=\"token comment\">#     print(file)<\/span><br \/>\n<span class=\"token comment\"># for file in Path(&#034;.&#034;).rglob(&#034;*.py&#034;):  # \u9012\u5f52<\/span><br \/>\n<span class=\"token comment\">#     print(file)<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;pathlib \u6bd4\u4f20\u7edf\u7684 os.path \u66f4\u76f4\u89c2\u2014\u2014\u7528 \/ \u62fc\u63a5\u8def\u5f84\u3001.read_text() \u4e00\u884c\u8bfb\u53d6\u6587\u4ef6\u3002\u5efa\u8bae\u5728\u65b0\u9879\u76ee\u4e2d\u4f7f\u7528 pathlib \u66ff\u4ee3\u5b57\u7b26\u4e32\u8def\u5f84\u64cd\u4f5c\u3002<\/p>\n<h4>18.4 CSV \u4e0e JSON \u6587\u4ef6<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;Python \u5185\u7f6e\u7684 csv \u548c json \u6a21\u5757\u8ba9\u7ed3\u6784\u5316\u6570\u636e\u7684\u8bfb\u5199\u53d8\u5f97\u7b80\u5355\u3002csv.DictReader \u7528\u5217\u540d\u8bbf\u95ee\u6570\u636e&#xff0c;json.dump\/load \u5904\u7406 JSON&#xff1a;<\/p>\n<p><span class=\"token keyword\">import<\/span> csv<br \/>\n<span class=\"token keyword\">import<\/span> json<\/p>\n<p><span class=\"token comment\"># &#8212; CSV \u8bfb\u53d6 &#8212;<\/span><br \/>\n<span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;data.csv&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;r&#034;<\/span><span class=\"token punctuation\">,<\/span> encoding<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;utf-8&#034;<\/span><span class=\"token punctuation\">,<\/span> newline<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> f<span class=\"token punctuation\">:<\/span><br \/>\n    reader <span class=\"token operator\">&#061;<\/span> csv<span class=\"token punctuation\">.<\/span>reader<span class=\"token punctuation\">(<\/span>f<span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> row <span class=\"token keyword\">in<\/span> reader<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>row<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># CSV \u5199\u5165<\/span><br \/>\n<span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;output.csv&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;w&#034;<\/span><span class=\"token punctuation\">,<\/span> encoding<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;utf-8&#034;<\/span><span class=\"token punctuation\">,<\/span> newline<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> f<span class=\"token punctuation\">:<\/span><br \/>\n    writer <span class=\"token operator\">&#061;<\/span> csv<span class=\"token punctuation\">.<\/span>writer<span class=\"token punctuation\">(<\/span>f<span class=\"token punctuation\">)<\/span><br \/>\n    writer<span class=\"token punctuation\">.<\/span>writerow<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;\u59d3\u540d&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u5e74\u9f84&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u57ce\u5e02&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>     <span class=\"token comment\"># \u6807\u9898\u884c<\/span><br \/>\n    writer<span class=\"token punctuation\">.<\/span>writerows<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span>                          <span class=\"token comment\"># \u591a\u884c\u6570\u636e<\/span><br \/>\n        <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">25<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u5317\u4eac&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;Bob&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">30<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u4e0a\u6d77&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># DictReader \/ DictWriter&#xff08;\u4f7f\u7528\u5217\u540d&#xff09;<\/span><br \/>\n<span class=\"token comment\"># with open(&#034;data.csv&#034;, &#034;r&#034;, encoding&#061;&#034;utf-8&#034;) as f:<\/span><br \/>\n<span class=\"token comment\">#     reader &#061; csv.DictReader(f)<\/span><br \/>\n<span class=\"token comment\">#     for row in reader:<\/span><br \/>\n<span class=\"token comment\">#         print(row[&#034;\u59d3\u540d&#034;])<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; JSON \u8bfb\u5199 &#8212;<\/span><br \/>\ndata <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;users&#034;<\/span><span class=\"token punctuation\">:<\/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;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;age&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">25<\/span><span class=\"token punctuation\">}<\/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;Bob&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;age&#034;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token number\">30<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\"># \u5199\u5165<\/span><br \/>\n<span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;data.json&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;w&#034;<\/span><span class=\"token punctuation\">,<\/span> encoding<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;utf-8&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> f<span class=\"token punctuation\">:<\/span><br \/>\n    json<span class=\"token punctuation\">.<\/span>dump<span class=\"token punctuation\">(<\/span>data<span class=\"token punctuation\">,<\/span> f<span class=\"token punctuation\">,<\/span> indent<span class=\"token operator\">&#061;<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> ensure_ascii<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">False<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u8bfb\u53d6<\/span><br \/>\n<span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;data.json&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;r&#034;<\/span><span class=\"token punctuation\">,<\/span> encoding<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;utf-8&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> f<span class=\"token punctuation\">:<\/span><br \/>\n    loaded <span class=\"token operator\">&#061;<\/span> json<span class=\"token punctuation\">.<\/span>load<span class=\"token punctuation\">(<\/span>f<span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>loaded<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;users&#034;<\/span><span class=\"token punctuation\">]<\/span><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;name&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># Alice<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u5904\u7406 CSV \u65f6\u5efa\u8bae\u4f7f\u7528 DictReader\/DictWriter&#xff0c;\u4ee3\u7801\u66f4\u6613\u8bfb\u3002JSON \u7684 ensure_ascii&#061;False \u80fd\u6b63\u786e\u663e\u793a\u4e2d\u6587&#xff0c;indent \u53c2\u6570\u8ba9\u8f93\u51fa\u683c\u5f0f\u5316\u3002<\/p>\n<hr \/>\n<h3>19. \u5f02\u5e38\u5904\u7406<\/h3>\n<h4>19.1 try \/ except \/ else \/ finally<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5f02\u5e38\u5904\u7406\u7684\u6838\u5fc3\u7ed3\u6784&#xff1a;try \u5757\u653e\u53ef\u80fd\u51fa\u9519\u7684\u4ee3\u7801&#xff0c;except \u6355\u83b7\u7279\u5b9a\u5f02\u5e38&#xff0c;else \u5728\u65e0\u5f02\u5e38\u65f6\u8fd0\u884c&#xff0c;finally \u65e0\u8bba\u5982\u4f55\u90fd\u6267\u884c&#xff1a;<\/p>\n<p><span class=\"token comment\"># &#8212; \u57fa\u672c\u7ed3\u6784 &#8212;<\/span><br \/>\n<span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    num <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">input<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u8bf7\u8f93\u5165\u4e00\u4e2a\u6574\u6570: &#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    result <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">100<\/span> <span class=\"token operator\">\/<\/span> num<br \/>\n<span class=\"token keyword\">except<\/span> ValueError <span class=\"token keyword\">as<\/span> e<span class=\"token punctuation\">:<\/span>       <span class=\"token comment\"># \u6355\u83b7\u7279\u5b9a\u5f02\u5e38<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u683c\u5f0f\u9519\u8bef: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>e<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">except<\/span> ZeroDivisionError<span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u4e0d\u80fd\u9664\u4ee5\u96f6&#xff01;&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">except<\/span> <span class=\"token punctuation\">(<\/span>TypeError<span class=\"token punctuation\">,<\/span> OverflowError<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> e<span class=\"token punctuation\">:<\/span>  <span class=\"token comment\"># \u6355\u83b7\u591a\u79cd\u5f02\u5e38<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u7c7b\u578b\u6216\u6ea2\u51fa\u9519\u8bef: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>e<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">except<\/span> Exception <span class=\"token keyword\">as<\/span> e<span class=\"token punctuation\">:<\/span>        <span class=\"token comment\"># \u6355\u83b7\u6240\u6709\u5f02\u5e38&#xff08;\u57fa\u7c7b&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u672a\u77e5\u9519\u8bef: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>e<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">else<\/span><span class=\"token punctuation\">:<\/span>                         <span class=\"token comment\"># \u65e0\u5f02\u5e38\u65f6\u6267\u884c<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u7ed3\u679c\u662f: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>result<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">finally<\/span><span class=\"token punctuation\">:<\/span>                      <span class=\"token comment\"># \u65e0\u8bba\u5982\u4f55\u90fd\u6267\u884c<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u6e05\u7406\u8d44\u6e90\u2026&#034;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u5e38\u89c1\u5f02\u5e38\u7c7b\u578b &#8212;<\/span><br \/>\n<span class=\"token comment\"># ValueError        \u503c\u9519\u8bef<\/span><br \/>\n<span class=\"token comment\"># TypeError         \u7c7b\u578b\u9519\u8bef<\/span><br \/>\n<span class=\"token comment\"># KeyError          \u5b57\u5178\u952e\u4e0d\u5b58\u5728<\/span><br \/>\n<span class=\"token comment\"># IndexError        \u7d22\u5f15\u8d8a\u754c<\/span><br \/>\n<span class=\"token comment\"># AttributeError    \u5bf9\u8c61\u6ca1\u6709\u8be5\u5c5e\u6027<\/span><br \/>\n<span class=\"token comment\"># NameError         \u53d8\u91cf\u540d\u4e0d\u5b58\u5728<\/span><br \/>\n<span class=\"token comment\"># FileNotFoundError \u6587\u4ef6\u672a\u627e\u5230<\/span><br \/>\n<span class=\"token comment\"># IOError           I\/O \u9519\u8bef<\/span><br \/>\n<span class=\"token comment\"># ZeroDivisionError \u9664\u4ee5\u96f6<\/span><br \/>\n<span class=\"token comment\"># ImportError       \u5bfc\u5165\u5931\u8d25<\/span><br \/>\n<span class=\"token comment\"># RuntimeError      \u8fd0\u884c\u65f6\u9519\u8bef<\/span><br \/>\n<span class=\"token comment\"># StopIteration     \u8fed\u4ee3\u7ed3\u675f<\/span><br \/>\n<span class=\"token comment\"># AssertionError    \u65ad\u8a00\u5931\u8d25<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u6c38\u8fdc\u6355\u83b7\u6700\u5177\u4f53\u7684\u5f02\u5e38\u7c7b\u578b&#xff0c;\u4e0d\u8981\u4f7f\u7528\u88f8\u9732\u7684 except:&#xff08;\u5b83\u4f1a\u6355\u83b7 SystemExit \u548c KeyboardInterrupt&#xff09;\u3002\u5e38\u89c1\u7684\u5f02\u5e38\u7c7b\u578b\u6709\u5341\u591a\u79cd&#xff0c;IDE \u4f1a\u5e2e\u4f60\u8865\u5168\u3002<\/p>\n<h4>19.2 \u81ea\u5b9a\u4e49\u5f02\u5e38<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u901a\u8fc7\u7ee7\u627f Exception \u521b\u5efa\u81ea\u5b9a\u4e49\u5f02\u5e38&#xff0c;\u53ef\u4ee5\u643a\u5e26\u66f4\u591a\u4e0a\u4e0b\u6587\u4fe1\u606f\u3002raise \u2026 from \u2026 \u5efa\u7acb\u5f02\u5e38\u94fe&#xff0c;\u4fdd\u7559\u539f\u59cb\u9519\u8bef\u4fe1\u606f&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u81ea\u5b9a\u4e49\u5f02\u5e38\u7c7b<\/span><br \/>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">ValidationError<\/span><span class=\"token punctuation\">(<\/span>Exception<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6570\u636e\u9a8c\u8bc1\u5f02\u5e38&#034;&#034;&#034;<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__init__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> field<span class=\"token punctuation\">,<\/span> message<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;\u9a8c\u8bc1\u5931\u8d25&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>field <span class=\"token operator\">&#061;<\/span> field<br \/>\n        self<span class=\"token punctuation\">.<\/span>message <span class=\"token operator\">&#061;<\/span> message<br \/>\n        <span class=\"token builtin\">super<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>__init__<span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>field<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>message<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">InsufficientFundsError<\/span><span class=\"token punctuation\">(<\/span>Exception<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u4f59\u989d\u4e0d\u8db3\u5f02\u5e38&#034;&#034;&#034;<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__init__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> balance<span class=\"token punctuation\">,<\/span> amount<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>balance <span class=\"token operator\">&#061;<\/span> balance<br \/>\n        self<span class=\"token punctuation\">.<\/span>amount <span class=\"token operator\">&#061;<\/span> amount<br \/>\n        <span class=\"token builtin\">super<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>__init__<span class=\"token punctuation\">(<\/span><br \/>\n            <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u4f59\u989d\u4e0d\u8db3&#xff1a;\u5f53\u524d\u4f59\u989d <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>balance<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#xff0c;\u9700\u8981 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>amount<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#xff0c;&#034;<\/span><\/span><br \/>\n            <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u5dee\u989d <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>amount <span class=\"token operator\">&#8211;<\/span> balance<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><br \/>\n        <span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u4f7f\u7528\u81ea\u5b9a\u4e49\u5f02\u5e38<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">withdraw<\/span><span class=\"token punctuation\">(<\/span>balance<span class=\"token punctuation\">,<\/span> amount<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> amount <span class=\"token operator\">&gt;<\/span> balance<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">raise<\/span> InsufficientFundsError<span class=\"token punctuation\">(<\/span>balance<span class=\"token punctuation\">,<\/span> amount<span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> balance <span class=\"token operator\">&#8211;<\/span> amount<\/p>\n<p><span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    withdraw<span class=\"token punctuation\">(<\/span><span class=\"token number\">100<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">200<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">except<\/span> InsufficientFundsError <span class=\"token keyword\">as<\/span> e<span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>e<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u5f02\u5e38\u94fe&#xff08;raise &#8230; from &#8230;&#xff09;<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">process_file<\/span><span class=\"token punctuation\">(<\/span>filepath<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span>filepath<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;r&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> f<span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> f<span class=\"token punctuation\">.<\/span>read<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">except<\/span> FileNotFoundError <span class=\"token keyword\">as<\/span> e<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">raise<\/span> RuntimeError<span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u5904\u7406\u6587\u4ef6 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>filepath<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u5931\u8d25&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">from<\/span> e<\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u81ea\u5b9a\u4e49\u5f02\u5e38\u8ba9\u9519\u8bef\u4fe1\u606f\u66f4\u5177\u4f53\u3001\u66f4\u5bb9\u6613\u8c03\u8bd5\u3002\u5f02\u5e38\u94fe from e \u4fdd\u7559\u4e86\u539f\u59cb\u9519\u8bef\u7684\u5b8c\u6574\u5806\u6808&#xff0c;\u662f\u8c03\u8bd5\u590d\u6742\u7cfb\u7edf\u7684\u91cd\u8981\u5de5\u5177\u3002<\/p>\n<h4>19.3 \u6700\u4f73\u5b9e\u8df5<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;Python \u793e\u533a\u63a8\u5d07 EAFP&#xff08;\u8bf7\u6c42\u539f\u8c05\u6bd4\u8bf7\u6c42\u8bb8\u53ef\u66f4\u5bb9\u6613&#xff09;\u98ce\u683c\u2014\u2014\u5148\u5c1d\u8bd5&#xff0c;\u5931\u8d25\u518d\u5904\u7406\u2014\u2014\u800c\u4e0d\u662f LBYL&#xff08;\u4e09\u601d\u800c\u540e\u884c&#xff09;\u7684\u9884\u68c0\u67e5\u98ce\u683c&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u274c \u4e0d\u8981\u8fd9\u6837\u505a&#xff1a;\u6cdb\u6cdb\u6355\u83b7\u6240\u6709\u5f02\u5e38<\/span><br \/>\n<span class=\"token comment\"># try:<\/span><br \/>\n<span class=\"token comment\">#     risky_operation()<\/span><br \/>\n<span class=\"token comment\"># except:  # \u6355\u83b7\u5305\u62ec SystemExit\u3001KeyboardInterrupt \u7b49<\/span><br \/>\n<span class=\"token comment\">#     pass  # \u9759\u9ed8\u541e\u6389\u5f02\u5e38<\/span><\/p>\n<p><span class=\"token comment\"># \u2705 \u6b63\u786e\u505a\u6cd5<\/span><br \/>\n<span class=\"token comment\"># try:<\/span><br \/>\n<span class=\"token comment\">#     risky_operation()<\/span><br \/>\n<span class=\"token comment\"># except Exception as e:  # \u660e\u786e\u6355\u83b7 Exception<\/span><br \/>\n<span class=\"token comment\">#     logger.error(f&#034;\u64cd\u4f5c\u5931\u8d25: {e}&#034;, exc_info&#061;True)<\/span><br \/>\n<span class=\"token comment\">#     raise  # \u91cd\u65b0\u629b\u51fa\u6216\u9002\u5f53\u5904\u7406<\/span><\/p>\n<p><span class=\"token comment\"># \u2705 EAFP: Easier to Ask for Forgiveness than Permission<\/span><br \/>\n<span class=\"token comment\"># \u8bf7\u6c42\u539f\u8c05\u6bd4\u8bf7\u6c42\u8bb8\u53ef\u66f4\u5bb9\u6613&#xff08;Python \u98ce\u683c&#xff09;<\/span><br \/>\n<span class=\"token comment\"># \u5148\u5c1d\u8bd5&#xff0c;\u5931\u8d25\u518d\u5904\u7406<\/span><br \/>\n<span class=\"token comment\"># def get_item(lst, index):<\/span><br \/>\n<span class=\"token comment\">#     try:<\/span><br \/>\n<span class=\"token comment\">#         return lst[index]<\/span><br \/>\n<span class=\"token comment\">#     except IndexError:<\/span><br \/>\n<span class=\"token comment\">#         return None<\/span><\/p>\n<p><span class=\"token comment\"># \u2705 LBYL: Look Before You Leap&#xff08;\u5176\u4ed6\u8bed\u8a00\u98ce\u683c&#xff09;<\/span><br \/>\n<span class=\"token comment\"># def get_item(lst, index):<\/span><br \/>\n<span class=\"token comment\">#     if 0 &lt;&#061; index &lt; len(lst):<\/span><br \/>\n<span class=\"token comment\">#         return lst[index]<\/span><br \/>\n<span class=\"token comment\">#     return None<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;EAFP \u5229\u7528\u5f02\u5e38\u5904\u7406\u66ff\u4ee3\u6761\u4ef6\u68c0\u67e5&#xff0c;\u4ee3\u7801\u66f4\u7b80\u6d01&#xff0c;\u4e14\u5728\u5e76\u53d1\u73af\u5883\u4e0b\u66f4\u5b89\u5168\u3002\u4f46\u8981\u6ce8\u610f&#xff1a;\u53ea\u6355\u83b7\u9884\u671f\u7684\u5f02\u5e38&#xff0c;\u4e0d\u8981\u8ba9 except \u63a9\u76d6 bug\u3002<\/p>\n<hr \/>\n<h3>20. \u9762\u5411\u5bf9\u8c61\u7f16\u7a0b<\/h3>\n<h4>20.1 \u7c7b\u4e0e\u5bf9\u8c61<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;Python \u4f7f\u7528 class \u5b9a\u4e49\u7c7b&#xff0c;init \u521d\u59cb\u5316\u5b9e\u4f8b&#xff0c;self \u6307\u5411\u5b9e\u4f8b\u672c\u8eab\u3002\u7c7b\u5c5e\u6027\u88ab\u6240\u6709\u5b9e\u4f8b\u5171\u4eab&#xff0c;\u53cc\u4e0b\u5212\u7ebf\u524d\u7f00\u89e6\u53d1\u540d\u79f0\u6539\u5199\u5b9e\u73b0\u79c1\u6709&#xff1a;<\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Person<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u4eba\u7c7b&#034;&#034;&#034;<\/span><\/p>\n<p>    <span class=\"token comment\"># \u7c7b\u5c5e\u6027&#xff08;\u6240\u6709\u5b9e\u4f8b\u5171\u4eab&#xff09;<\/span><br \/>\n    species <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Homo sapiens&#034;<\/span><\/p>\n<p>    <span class=\"token comment\"># \u5b9e\u4f8b\u521d\u59cb\u5316\u65b9\u6cd5<\/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> age<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token comment\"># \u5b9e\u4f8b\u5c5e\u6027<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>name <span class=\"token operator\">&#061;<\/span> name    <span class=\"token comment\"># \u516c\u6709\u5c5e\u6027<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>age <span class=\"token operator\">&#061;<\/span> age<br \/>\n        self<span class=\"token punctuation\">.<\/span>_secret <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">None<\/span>  <span class=\"token comment\"># \u7ea6\u5b9a&#xff1a;\u53d7\u4fdd\u62a4\u5c5e\u6027&#xff08;\u5355\u4e0b\u5212\u7ebf&#xff09;<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>__private <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span>   <span class=\"token comment\"># \u540d\u79f0\u6539\u5199&#xff1a;_Person__private<\/span><\/p>\n<p>    <span class=\"token comment\"># \u5b9e\u4f8b\u65b9\u6cd5<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">introduce<\/span><span class=\"token punctuation\">(<\/span>self<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;\u6211\u53eb<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>self<span class=\"token punctuation\">.<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#xff0c;\u4eca\u5e74<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>self<span class=\"token punctuation\">.<\/span>age<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\u5c81\u3002&#034;<\/span><\/span><\/p>\n<p>    <span class=\"token comment\"># \u5b57\u7b26\u4e32\u8868\u793a&#xff08;\u7ed9\u5f00\u53d1\u8005\u770b\u7684&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__repr__<\/span><span class=\"token punctuation\">(<\/span>self<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;Person(name&#061;&#039;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>self<span class=\"token punctuation\">.<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#039;, age&#061;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>self<span class=\"token punctuation\">.<\/span>age<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">)&#034;<\/span><\/span><\/p>\n<p>    <span class=\"token comment\"># \u5b57\u7b26\u4e32\u8868\u793a&#xff08;\u7ed9\u7528\u6237\u770b\u7684&#xff0c;print \u8c03\u7528&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__str__<\/span><span class=\"token punctuation\">(<\/span>self<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;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>self<span class=\"token punctuation\">.<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> (<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>self<span class=\"token punctuation\">.<\/span>age<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\u5c81)&#034;<\/span><\/span><\/p>\n<p><span class=\"token comment\"># \u521b\u5efa\u5b9e\u4f8b<\/span><br \/>\nalice <span class=\"token operator\">&#061;<\/span> Person<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">25<\/span><span class=\"token punctuation\">)<\/span><br \/>\nbob <span class=\"token operator\">&#061;<\/span> Person<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Bob&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">30<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>alice<span class=\"token punctuation\">.<\/span>introduce<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>           <span class=\"token comment\"># \u6211\u53ebAlice&#xff0c;\u4eca\u5e7425\u5c81\u3002<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>alice<span class=\"token punctuation\">)<\/span>                       <span class=\"token comment\"># Alice (25\u5c81)  \u8c03\u7528 __str__<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">repr<\/span><span class=\"token punctuation\">(<\/span>alice<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>                 <span class=\"token comment\"># Person(name&#061;&#039;Alice&#039;, age&#061;25)  \u8c03\u7528 __repr__<\/span><\/p>\n<p><span class=\"token comment\"># \u8bbf\u95ee\u7c7b\u5c5e\u6027<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>Person<span class=\"token punctuation\">.<\/span>species<span class=\"token punctuation\">)<\/span>              <span class=\"token comment\"># Homo sapiens<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>alice<span class=\"token punctuation\">.<\/span>species<span class=\"token punctuation\">)<\/span>               <span class=\"token comment\"># Homo sapiens&#xff08;\u5b9e\u4f8b\u4e5f\u53ef\u8bbf\u95ee&#xff09;<\/span><\/p>\n<p><span class=\"token comment\"># \u540d\u79f0\u6539\u5199<\/span><br \/>\n<span class=\"token comment\"># print(alice.__private)           # \u274c AttributeError<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>alice<span class=\"token punctuation\">.<\/span>_Person__private<span class=\"token punctuation\">)<\/span>      <span class=\"token comment\"># 0&#xff08;\u53ef\u4ee5\u7ed5\u8fc7\u4f46\u4e0d\u63a8\u8350&#xff09;<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;Python \u6ca1\u6709\u771f\u6b63\u7684\u79c1\u6709\u5c5e\u6027\u2014\u2014\u53cc\u4e0b\u5212\u7ebf\u524d\u7f00\u53ea\u662f\u540d\u79f0\u6539\u5199\u4e3a _ClassName__attr&#xff0c;\u8fd9\u662f\u4e00\u79cd\u7ea6\u5b9a\u800c\u975e\u5f3a\u5236\u3002\u5355\u4e0b\u5212\u7ebf\u524d\u7f00 _attr \u8868\u793a\u53d7\u4fdd\u62a4&#xff0c;\u66f4\u591a\u662f\u7ed9\u5f00\u53d1\u8005\u770b\u7684\u63d0\u793a\u3002<\/p>\n<h4>20.2 \u7ee7\u627f<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;Python \u652f\u6301\u5355\u7ee7\u627f\u548c\u591a\u7ee7\u627f\u3002\u5b50\u7c7b\u53ef\u4ee5\u91cd\u5199\u7236\u7c7b\u65b9\u6cd5&#xff0c;\u4f7f\u7528 isinstance() \u548c issubclass() \u68c0\u67e5\u7ee7\u627f\u5173\u7cfb&#xff1a;<\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Animal<\/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 punctuation\">:<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>name <span class=\"token operator\">&#061;<\/span> name<\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">speak<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;&#8230;&#034;<\/span><\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Dog<\/span><span class=\"token punctuation\">(<\/span>Animal<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">speak<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;\u6c6a\u6c6a&#xff01;&#034;<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">wag_tail<\/span><span class=\"token punctuation\">(<\/span>self<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;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>self<span class=\"token punctuation\">.<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u6447\u5c3e\u5df4&#034;<\/span><\/span><\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Cat<\/span><span class=\"token punctuation\">(<\/span>Animal<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">speak<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;\u55b5\u55b5&#xff01;&#034;<\/span><\/p>\n<p>dog <span class=\"token operator\">&#061;<\/span> Dog<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u65fa\u8d22&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\ncat <span class=\"token operator\">&#061;<\/span> Cat<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u54aa\u54aa&#034;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>dog<span class=\"token punctuation\">.<\/span>name<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u8bf4:&#034;<\/span><span class=\"token punctuation\">,<\/span> dog<span class=\"token punctuation\">.<\/span>speak<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># \u65fa\u8d22 \u8bf4: \u6c6a\u6c6a&#xff01;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>cat<span class=\"token punctuation\">.<\/span>name<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u8bf4:&#034;<\/span><span class=\"token punctuation\">,<\/span> cat<span class=\"token punctuation\">.<\/span>speak<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># \u54aa\u54aa \u8bf4: \u55b5\u55b5&#xff01;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>dog<span class=\"token punctuation\">.<\/span>wag_tail<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>                     <span class=\"token comment\"># \u65fa\u8d22 \u6447\u5c3e\u5df4<\/span><\/p>\n<p><span class=\"token comment\"># \u68c0\u67e5\u7ee7\u627f\u5173\u7cfb<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">isinstance<\/span><span class=\"token punctuation\">(<\/span>dog<span class=\"token punctuation\">,<\/span> Dog<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># True<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">isinstance<\/span><span class=\"token punctuation\">(<\/span>dog<span class=\"token punctuation\">,<\/span> Animal<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># True<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">isinstance<\/span><span class=\"token punctuation\">(<\/span>dog<span class=\"token punctuation\">,<\/span> Cat<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># False<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">issubclass<\/span><span class=\"token punctuation\">(<\/span>Dog<span class=\"token punctuation\">,<\/span> Animal<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># True<\/span><\/p>\n<p><span class=\"token comment\"># \u591a\u91cd\u7ee7\u627f<\/span><br \/>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Flyable<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">fly<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;\u98de\u884c\u4e2d\u2026&#034;<\/span><\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Swimmable<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">swim<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;\u6e38\u6cf3\u4e2d\u2026&#034;<\/span><\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Duck<\/span><span class=\"token punctuation\">(<\/span>Animal<span class=\"token punctuation\">,<\/span> Flyable<span class=\"token punctuation\">,<\/span> Swimmable<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">speak<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;\u560e\u560e&#xff01;&#034;<\/span><\/p>\n<p>duck <span class=\"token operator\">&#061;<\/span> Duck<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u5510\u8001\u9e2d&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>duck<span class=\"token punctuation\">.<\/span>speak<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u560e\u560e&#xff01;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>duck<span class=\"token punctuation\">.<\/span>fly<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># \u98de\u884c\u4e2d\u2026<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>duck<span class=\"token punctuation\">.<\/span>swim<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># \u6e38\u6cf3\u4e2d\u2026<\/span><\/p>\n<p><span class=\"token comment\"># MRO&#xff08;\u65b9\u6cd5\u89e3\u6790\u987a\u5e8f&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>Duck<span class=\"token punctuation\">.<\/span>__mro__<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u67e5\u770b\u65b9\u6cd5\u641c\u7d22\u987a\u5e8f<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u591a\u91cd\u7ee7\u627f\u5728\u9700\u8981\u6df7\u5165\u591a\u4e2a\u529f\u80fd\u65f6\u5f88\u65b9\u4fbf&#xff08;\u5982 Duck \u540c\u65f6\u7ee7\u627f Animal\u3001Flyable\u3001Swimmable&#xff09;&#xff0c;\u4f46\u4e0d\u8981\u8fc7\u5ea6\u4f7f\u7528\u3002MRO&#xff08;\u65b9\u6cd5\u89e3\u6790\u987a\u5e8f&#xff09;\u51b3\u5b9a\u4e86\u591a\u7ee7\u627f\u65f6\u65b9\u6cd5\u7684\u67e5\u627e\u8def\u5f84\u3002<\/p>\n<h4>20.3 super() \u4e0e\u7236\u7c7b\u8c03\u7528<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;super() \u7528\u4e8e\u8c03\u7528\u7236\u7c7b\u7684\u65b9\u6cd5&#xff0c;\u5728 init \u548c\u65b9\u6cd5\u91cd\u5199\u4e2d\u7279\u522b\u5e38\u7528\u3002\u5b83\u9075\u5faa MRO \u987a\u5e8f&#xff0c;\u5728\u591a\u91cd\u7ee7\u627f\u4e0b\u4e5f\u80fd\u6b63\u786e\u5de5\u4f5c&#xff1a;<\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Employee<\/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> salary<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>name <span class=\"token operator\">&#061;<\/span> name<br \/>\n        self<span class=\"token punctuation\">.<\/span>salary <span class=\"token operator\">&#061;<\/span> salary<\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">work<\/span><span class=\"token punctuation\">(<\/span>self<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;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>self<span class=\"token punctuation\">.<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u6b63\u5728\u5de5\u4f5c&#034;<\/span><\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">get_details<\/span><span class=\"token punctuation\">(<\/span>self<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;Name: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>self<span class=\"token punctuation\">.<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">, Salary: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>self<span class=\"token punctuation\">.<\/span>salary<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Manager<\/span><span class=\"token punctuation\">(<\/span>Employee<span class=\"token punctuation\">)<\/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> salary<span class=\"token punctuation\">,<\/span> department<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token comment\"># \u8c03\u7528\u7236\u7c7b\u7684 __init__<\/span><br \/>\n        <span class=\"token builtin\">super<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>__init__<span class=\"token punctuation\">(<\/span>name<span class=\"token punctuation\">,<\/span> salary<span class=\"token punctuation\">)<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>department <span class=\"token operator\">&#061;<\/span> department<\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">work<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token comment\"># \u8c03\u7528\u7236\u7c7b\u65b9\u6cd5\u5e76\u6269\u5c55<\/span><br \/>\n        base_result <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">super<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>work<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;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>base_result<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#xff0c;\u7ba1\u7406 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>self<span class=\"token punctuation\">.<\/span>department<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u90e8\u95e8&#034;<\/span><\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">get_details<\/span><span class=\"token punctuation\">(<\/span>self<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;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span><span class=\"token builtin\">super<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>get_details<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">, Dept: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>self<span class=\"token punctuation\">.<\/span>department<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><\/p>\n<p>mgr <span class=\"token operator\">&#061;<\/span> Manager<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">15000<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u6280\u672f\u90e8&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>mgr<span class=\"token punctuation\">.<\/span>work<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>          <span class=\"token comment\"># Alice \u6b63\u5728\u5de5\u4f5c&#xff0c;\u7ba1\u7406 \u6280\u672f\u90e8 \u90e8\u95e8<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>mgr<span class=\"token punctuation\">.<\/span>get_details<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># Name: Alice, Salary: 15000, Dept: \u6280\u672f\u90e8<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u91cd\u5199\u7236\u7c7b\u65b9\u6cd5\u65f6&#xff0c;\u901a\u5e38\u5e94\u5148\u8c03\u7528 super().method()&#xff0c;\u7136\u540e\u518d\u6dfb\u52a0\u5b50\u7c7b\u7684\u7279\u5b9a\u903b\u8f91\u2014\u2014\u8fd9\u6837\u53ef\u4ee5\u786e\u4fdd\u7236\u7c7b\u7684\u521d\u59cb\u5316\u6216\u9884\u5904\u7406\u4e0d\u88ab\u9057\u6f0f\u3002<\/p>\n<h4>20.4 \u9b54\u672f\u65b9\u6cd5&#xff08;Magic \/ Dunder Methods&#xff09;<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u9b54\u672f\u65b9\u6cd5&#xff08;\u53cc\u4e0b\u5212\u7ebf\u5305\u56f4\u7684\u65b9\u6cd5&#xff09;\u8ba9\u81ea\u5b9a\u4e49\u7c7b\u652f\u6301\u8fd0\u7b97\u7b26\u91cd\u8f7d\u3001\u8fed\u4ee3\u3001\u6bd4\u8f83\u3001\u4e0a\u4e0b\u6587\u7ba1\u7406\u7b49\u8bed\u8a00\u7279\u6027\u3002\u4ee5\u4e0b Vector \u7c7b\u5c55\u793a\u4e86\u5e38\u7528\u7684\u9b54\u672f\u65b9\u6cd5&#xff1a;<\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Vector<\/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> x<span class=\"token punctuation\">,<\/span> y<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>x <span class=\"token operator\">&#061;<\/span> x<br \/>\n        self<span class=\"token punctuation\">.<\/span>y <span class=\"token operator\">&#061;<\/span> y<\/p>\n<p>    <span class=\"token comment\"># \u5b57\u7b26\u4e32\u8868\u793a<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__repr__<\/span><span class=\"token punctuation\">(<\/span>self<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;Vector(<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>self<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">, <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>self<span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">)&#034;<\/span><\/span><\/p>\n<p>    <span class=\"token comment\"># \u7b97\u672f\u8fd0\u7b97<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__add__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> other<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> Vector<span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>x <span class=\"token operator\">&#043;<\/span> other<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">,<\/span> self<span class=\"token punctuation\">.<\/span>y <span class=\"token operator\">&#043;<\/span> other<span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__sub__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> other<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> Vector<span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>x <span class=\"token operator\">&#8211;<\/span> other<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">,<\/span> self<span class=\"token punctuation\">.<\/span>y <span class=\"token operator\">&#8211;<\/span> other<span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__mul__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> scalar<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6807\u91cf\u4e58\u6cd5&#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> Vector<span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>x <span class=\"token operator\">*<\/span> scalar<span class=\"token punctuation\">,<\/span> self<span class=\"token punctuation\">.<\/span>y <span class=\"token operator\">*<\/span> scalar<span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__rmul__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> scalar<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u53f3\u4fa7\u4e58\u6cd5&#xff08;scalar * vector&#xff09;&#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> self<span class=\"token punctuation\">.<\/span>__mul__<span class=\"token punctuation\">(<\/span>scalar<span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__neg__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> Vector<span class=\"token punctuation\">(<\/span><span class=\"token operator\">&#8211;<\/span>self<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">&#8211;<\/span>self<span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__abs__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u5411\u91cf\u7684\u6a21&#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>x <span class=\"token operator\">**<\/span> <span class=\"token number\">2<\/span> <span class=\"token operator\">&#043;<\/span> self<span class=\"token punctuation\">.<\/span>y <span class=\"token operator\">**<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">**<\/span> <span class=\"token number\">0.5<\/span><\/p>\n<p>    <span class=\"token comment\"># \u6bd4\u8f83\u8fd0\u7b97<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__eq__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> other<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> self<span class=\"token punctuation\">.<\/span>x <span class=\"token operator\">&#061;&#061;<\/span> other<span class=\"token punctuation\">.<\/span>x <span class=\"token keyword\">and<\/span> self<span class=\"token punctuation\">.<\/span>y <span class=\"token operator\">&#061;&#061;<\/span> other<span class=\"token punctuation\">.<\/span>y<\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__lt__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> other<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6309\u6a21\u957f\u6bd4\u8f83&#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token builtin\">abs<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&lt;<\/span> <span class=\"token builtin\">abs<\/span><span class=\"token punctuation\">(<\/span>other<span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># \u4f7f\u5bf9\u8c61\u53ef\u8fed\u4ee3<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__iter__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token builtin\">iter<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span>self<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">,<\/span> self<span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># \u4f7f\u5bf9\u8c61\u53ef\u7528 in \u68c0\u67e5<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__contains__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> value<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> value <span class=\"token keyword\">in<\/span> <span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>x<span class=\"token punctuation\">,<\/span> self<span class=\"token punctuation\">.<\/span>y<span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># \u4f7f\u5bf9\u8c61\u53ef\u8c03\u7528<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__call__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u8fd4\u56de\u5411\u91cf\u7684\u6a21&#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token builtin\">abs<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># \u5c5e\u6027\u8bbf\u95ee<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__getitem__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> index<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> index <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token keyword\">return<\/span> self<span class=\"token punctuation\">.<\/span>x<br \/>\n        <span class=\"token keyword\">if<\/span> index <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token keyword\">return<\/span> self<span class=\"token punctuation\">.<\/span>y<br \/>\n        <span class=\"token keyword\">raise<\/span> IndexError<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u7d22\u5f15\u53ea\u80fd\u662f 0 \u6216 1&#034;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__len__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token number\">2<\/span>  <span class=\"token comment\"># \u603b\u662f\u8fd4\u56de 2<\/span><\/p>\n<p>    <span class=\"token comment\"># \u4e0a\u4e0b\u6587\u7ba1\u7406\u5668<\/span><br \/>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__enter__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u8fdb\u5165 Vector \u4e0a\u4e0b\u6587: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>self<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> self<\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__exit__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> exc_type<span class=\"token punctuation\">,<\/span> exc_val<span class=\"token punctuation\">,<\/span> exc_tb<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u9000\u51fa Vector \u4e0a\u4e0b\u6587: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>self<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u4f7f\u7528 &#8212;<\/span><br \/>\nv1 <span class=\"token operator\">&#061;<\/span> Vector<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><br \/>\nv2 <span class=\"token operator\">&#061;<\/span> Vector<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><\/p>\n<p><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>v1 <span class=\"token operator\">&#043;<\/span> v2<span class=\"token punctuation\">)<\/span>         <span class=\"token comment\"># Vector(4, 6)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>v1 <span class=\"token operator\">&#8211;<\/span> v2<span class=\"token punctuation\">)<\/span>         <span class=\"token comment\"># Vector(2, 2)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>v1 <span class=\"token operator\">*<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span>          <span class=\"token comment\"># Vector(9, 12)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">3<\/span> <span class=\"token operator\">*<\/span> v1<span class=\"token punctuation\">)<\/span>          <span class=\"token comment\"># Vector(9, 12)&#xff08;__rmul__&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">&#8211;<\/span>v1<span class=\"token punctuation\">)<\/span>             <span class=\"token comment\"># Vector(-3, -4)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">abs<\/span><span class=\"token punctuation\">(<\/span>v1<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>         <span class=\"token comment\"># 5.0<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>v1 <span class=\"token operator\">&#061;&#061;<\/span> Vector<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 punctuation\">)<\/span>  <span class=\"token comment\"># True<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>v1 <span class=\"token operator\">&lt;<\/span> Vector<span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># False (5.0 &gt; 1.414)<\/span><br \/>\n<span class=\"token comment\"># \u8fed\u4ee3<\/span><br \/>\n<span class=\"token keyword\">for<\/span> coord <span class=\"token keyword\">in<\/span> v1<span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>coord<span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># 3  4<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">3<\/span> <span class=\"token keyword\">in<\/span> v1<span class=\"token punctuation\">)<\/span>         <span class=\"token comment\"># True<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>v1<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>            <span class=\"token comment\"># 5.0&#xff08;\u53ef\u8c03\u7528&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>v1<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> v1<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># 3 4<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>v1<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>         <span class=\"token comment\"># 2<\/span><\/p>\n<p><span class=\"token comment\"># \u4e0a\u4e0b\u6587\u7ba1\u7406\u5668<\/span><br \/>\n<span class=\"token keyword\">with<\/span> Vector<span class=\"token punctuation\">(<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">12<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> v<span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u5904\u7406\u4e2d: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>v<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token comment\"># \u8fdb\u5165 Vector \u4e0a\u4e0b\u6587: Vector(5, 12)<\/span><br \/>\n<span class=\"token comment\"># \u5904\u7406\u4e2d: Vector(5, 12)<\/span><br \/>\n<span class=\"token comment\"># \u9000\u51fa Vector \u4e0a\u4e0b\u6587: Vector(5, 12)<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u9b54\u672f\u65b9\u6cd5\u662f Python \u6570\u636e\u6a21\u578b\u7684\u7cbe\u9ad3\u2014\u2014\u638c\u63e1\u4e86\u5b83\u4eec&#xff0c;\u4f60\u7684\u7c7b\u5c31\u80fd\u50cf\u5185\u7f6e\u7c7b\u578b\u4e00\u6837\u81ea\u7136\u5730\u88ab\u4f7f\u7528\u3002repr&#xff08;\u7ed9\u5f00\u53d1\u8005&#xff09;\u548c str&#xff08;\u7ed9\u7528\u6237&#xff09;\u7684\u533a\u522b\u662f\u9762\u8bd5\u5e38\u8003\u9898\u3002<\/p>\n<h4>20.5 &#064;dataclass \u6570\u636e\u7c7b<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;Python 3.7&#043; \u7684 &#064;dataclass \u88c5\u9970\u5668\u81ea\u52a8\u751f\u6210 init\u3001repr\u3001eq \u7b49\u65b9\u6cd5&#xff0c;\u5927\u5e45\u51cf\u5c11\u6837\u677f\u4ee3\u7801&#xff1a;<\/p>\n<p><span class=\"token keyword\">from<\/span> dataclasses <span class=\"token keyword\">import<\/span> dataclass<span class=\"token punctuation\">,<\/span> field<br \/>\n<span class=\"token keyword\">from<\/span> typing <span class=\"token keyword\">import<\/span> List<\/p>\n<p><span class=\"token comment\"># Python 3.7&#043; \u7684 dataclass \u81ea\u52a8\u751f\u6210 __init__\u3001__repr__\u3001__eq__ \u7b49\u65b9\u6cd5<\/span><br \/>\n<span class=\"token decorator annotation punctuation\">&#064;dataclass<\/span><br \/>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Point<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    x<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><br \/>\n    y<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><\/p>\n<p>    <span class=\"token comment\"># \u4e0d\u9700\u8981\u624b\u5199 __init__ \u548c __repr__&#xff01;<\/span><br \/>\n    <span class=\"token comment\"># __eq__ \u4e5f\u81ea\u52a8\u751f\u6210<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">distance_to_origin<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>x <span class=\"token operator\">**<\/span> <span class=\"token number\">2<\/span> <span class=\"token operator\">&#043;<\/span> self<span class=\"token punctuation\">.<\/span>y <span class=\"token operator\">**<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">**<\/span> <span class=\"token number\">0.5<\/span><\/p>\n<p>p1 <span class=\"token operator\">&#061;<\/span> Point<span class=\"token punctuation\">(<\/span><span class=\"token number\">3.0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">4.0<\/span><span class=\"token punctuation\">)<\/span><br \/>\np2 <span class=\"token operator\">&#061;<\/span> Point<span class=\"token punctuation\">(<\/span><span class=\"token number\">3.0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">4.0<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>p1<span class=\"token punctuation\">)<\/span>                          <span class=\"token comment\"># Point(x&#061;3.0, y&#061;4.0)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>p1 <span class=\"token operator\">&#061;&#061;<\/span> p2<span class=\"token punctuation\">)<\/span>                    <span class=\"token comment\"># True&#xff08;\u81ea\u52a8\u6bd4\u8f83\u5b57\u6bb5\u503c&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>p1<span class=\"token punctuation\">.<\/span>distance_to_origin<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>     <span class=\"token comment\"># 5.0<\/span><\/p>\n<p><span class=\"token comment\"># \u66f4\u590d\u6742\u7684\u914d\u7f6e<\/span><br \/>\n<span class=\"token decorator annotation punctuation\">&#064;dataclass<\/span><br \/>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Student<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    name<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><br \/>\n    age<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span><br \/>\n    grades<span class=\"token punctuation\">:<\/span> List<span class=\"token punctuation\">[<\/span><span class=\"token builtin\">float<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> field<span class=\"token punctuation\">(<\/span>default_factory<span class=\"token operator\">&#061;<\/span><span class=\"token builtin\">list<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u9ed8\u8ba4\u503c\u4f7f\u7528 factory<\/span><br \/>\n    active<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">bool<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">True<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">average_grade<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token keyword\">not<\/span> self<span class=\"token punctuation\">.<\/span>grades<span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> <span class=\"token number\">0.0<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token builtin\">sum<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>grades<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>grades<span class=\"token punctuation\">)<\/span><\/p>\n<p>student <span class=\"token operator\">&#061;<\/span> Student<span class=\"token punctuation\">(<\/span>name<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> age<span class=\"token operator\">&#061;<\/span><span class=\"token number\">20<\/span><span class=\"token punctuation\">,<\/span> grades<span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">85.0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">92.0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">78.0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>student<span class=\"token punctuation\">)<\/span>                     <span class=\"token comment\"># Student(name&#061;&#039;Alice&#039;, age&#061;20, grades&#061;[85.0, 92.0, 78.0], active&#061;True)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>student<span class=\"token punctuation\">.<\/span>average_grade<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>     <span class=\"token comment\"># 85.0<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u5bf9\u4e8e\u4e3b\u8981\u5b58\u50a8\u6570\u636e\u7684\u7c7b&#xff0c;&#064;dataclass \u662f\u6781\u4f73\u9009\u62e9\u3002field(default_factory&#061;list) \u6b63\u786e\u5904\u7406\u4e86\u53ef\u53d8\u9ed8\u8ba4\u503c\u7684\u95ee\u9898&#xff0c;\u6bd4\u624b\u5199 init \u66f4\u5b89\u5168\u3002<\/p>\n<hr \/>\n<h3>21. \u5e38\u7528\u5185\u7f6e\u51fd\u6570<\/h3>\n<h4>21.1 \u7c7b\u578b\u76f8\u5173<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u8fd9\u4e9b\u5185\u7f6e\u51fd\u6570\u5e2e\u52a9\u68c0\u67e5\u7c7b\u578b&#xff08;type\/isinstance&#xff09;\u3001\u83b7\u53d6\u5bf9\u8c61\u4fe1\u606f&#xff08;id\/dir\/help&#xff09;&#xff1a;<\/p>\n<p><span class=\"token comment\"># type() &#8211; \u83b7\u53d6\u7c7b\u578b<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">type<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">42<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>              <span class=\"token comment\"># &lt;class &#039;int&#039;&gt;<\/span><\/p>\n<p><span class=\"token comment\"># isinstance() &#8211; \u7c7b\u578b\u68c0\u67e5<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">isinstance<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">42<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># True<\/span><\/p>\n<p><span class=\"token comment\"># id() &#8211; \u83b7\u53d6\u5bf9\u8c61\u5185\u5b58\u5730\u5740<\/span><br \/>\nx <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><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">id<\/span><span class=\"token punctuation\">(<\/span>x<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>                 <span class=\"token comment\"># \u67d0\u4e2a\u6574\u6570\u5730\u5740<\/span><\/p>\n<p><span class=\"token comment\"># dir() &#8211; \u5217\u51fa\u5c5e\u6027\u548c\u65b9\u6cd5<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">dir<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>               <span class=\"token comment\"># \u5217\u8868\u7684\u6240\u6709\u65b9\u6cd5<\/span><\/p>\n<p><span class=\"token comment\"># help() &#8211; \u67e5\u770b\u5e2e\u52a9<\/span><br \/>\n<span class=\"token comment\"># help(str)                  # \u5728 REPL \u4e2d<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;dir() \u5728\u63a2\u7d22\u964c\u751f\u6a21\u5757\u6216\u5bf9\u8c61\u65f6\u6781\u5176\u6709\u7528&#xff1b;id() \u5e2e\u52a9\u7406\u89e3\u5bf9\u8c61\u6807\u8bc6&#xff08;\u914d\u5408 is \u4f7f\u7528&#xff09;\u3002<\/p>\n<h4>21.2 \u6570\u5b66\u8fd0\u7b97<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;Python \u5185\u7f6e\u4e86\u5e38\u7528\u6570\u5b66\u51fd\u6570&#xff1a;abs&#xff08;\u7edd\u5bf9\u503c&#xff09;\u3001round&#xff08;\u56db\u820d\u4e94\u5165&#xff09;\u3001max\/min&#xff08;\u6700\u503c&#xff0c;\u652f\u6301 key \u53c2\u6570&#xff09;\u3001sum&#xff08;\u6c42\u548c&#xff09;\u3001pow&#xff08;\u5e42\u8fd0\u7b97&#xff09;\u3001divmod&#xff08;\u5546\u548c\u4f59\u6570&#xff09;&#xff1a;<\/p>\n<p><span class=\"token comment\"># abs() &#8211; \u7edd\u5bf9\u503c<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">abs<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">&#8211;<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>               <span class=\"token comment\"># 5<\/span><\/p>\n<p><span class=\"token comment\"># round() &#8211; \u56db\u820d\u4e94\u5165<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">round<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">3.14159<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># 3.14<\/span><\/p>\n<p><span class=\"token comment\"># max() \/ min()<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">max<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>         <span class=\"token comment\"># 5<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">min<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">3<\/span><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 number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token comment\"># 1<\/span><\/p>\n<p><span class=\"token comment\"># max \u7684 key \u53c2\u6570<\/span><br \/>\nwords <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;apple&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;kiwi&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;banana&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;pear&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">max<\/span><span class=\"token punctuation\">(<\/span>words<span class=\"token punctuation\">,<\/span> key<span class=\"token operator\">&#061;<\/span><span class=\"token builtin\">len<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># banana<\/span><\/p>\n<p><span class=\"token comment\"># sum()<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">sum<\/span><span class=\"token punctuation\">(<\/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 punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token comment\"># 15<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">sum<\/span><span class=\"token punctuation\">(<\/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 punctuation\">,<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># 16&#xff08;\u521d\u59cb\u503c 10&#xff09;<\/span><\/p>\n<p><span class=\"token comment\"># pow()<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">pow<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">8<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>             <span class=\"token comment\"># 256<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">pow<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">8<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1000<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># 256&#xff08;\u53d6\u6a21&#xff09;<\/span><\/p>\n<p><span class=\"token comment\"># divmod()<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">divmod<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>         <span class=\"token comment\"># (3, 1)<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;max\/min \u7684 key \u53c2\u6570\u975e\u5e38\u5f3a\u5927\u2014\u2014\u6309\u957f\u5ea6\u627e\u6700\u957f\u5355\u8bcd\u3001\u6309\u4ef7\u683c\u627e\u6700\u8d35\u5546\u54c1&#xff0c;\u4e00\u884c\u641e\u5b9a\u3002sum \u7684\u7b2c\u4e8c\u4e2a\u53c2\u6570\u662f\u521d\u59cb\u503c&#xff0c;\u9ed8\u8ba4\u4e3a 0\u3002<\/p>\n<h4>21.3 \u5e8f\u5217\u64cd\u4f5c<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5e8f\u5217\u64cd\u4f5c\u5185\u7f6e\u51fd\u6570&#xff1a;len&#xff08;\u957f\u5ea6&#xff09;\u3001sorted&#xff08;\u6392\u5e8f\u8fd4\u56de\u65b0\u5217\u8868&#xff09;\u3001reversed&#xff08;\u53cd\u5411&#xff09;\u3001enumerate&#xff08;\u679a\u4e3e&#xff09;\u3001zip&#xff08;\u6253\u5305&#xff09;\u3001filter&#xff08;\u8fc7\u6ee4&#xff09;\u3001map&#xff08;\u6620\u5c04&#xff09;\u3001any\/all&#xff08;\u903b\u8f91\u5224\u65ad&#xff09;&#xff1a;<\/p>\n<p><span class=\"token comment\"># len() &#8211; \u957f\u5ea6<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;hello&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>          <span class=\"token comment\"># 5<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/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 punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>        <span class=\"token comment\"># 3<\/span><\/p>\n<p><span class=\"token comment\"># sorted() &#8211; \u6392\u5e8f&#xff08;\u8fd4\u56de\u65b0\u5217\u8868&#xff09;<\/span><br \/>\nnums <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\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">4<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">sorted<\/span><span class=\"token punctuation\">(<\/span>nums<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>          <span class=\"token comment\"># [1, 1, 3, 4, 5]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">sorted<\/span><span class=\"token punctuation\">(<\/span>nums<span class=\"token punctuation\">,<\/span> reverse<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># [5, 4, 3, 1, 1]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>nums<span class=\"token punctuation\">)<\/span>                  <span class=\"token comment\"># [3, 1, 4, 1, 5]&#xff08;\u539f\u5217\u8868\u4e0d\u53d8&#xff09;<\/span><\/p>\n<p><span class=\"token comment\"># reversed() &#8211; \u53cd\u5411\u8fed\u4ee3\u5668<\/span><br \/>\n<span class=\"token keyword\">for<\/span> i <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">reversed<\/span><span class=\"token punctuation\">(<\/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 punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">)<\/span>                 <span class=\"token comment\"># 3, 2, 1<\/span><\/p>\n<p><span class=\"token comment\"># range() &#8211; \u8303\u56f4<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">range<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>        <span class=\"token comment\"># [0, 1, 2, 3, 4]<\/span><\/p>\n<p><span class=\"token comment\"># enumerate() &#8211; \u679a\u4e3e<\/span><br \/>\n<span class=\"token keyword\">for<\/span> i<span class=\"token punctuation\">,<\/span> v <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">enumerate<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;a&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;b&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;c&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> start<span class=\"token operator\">&#061;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>i<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>v<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># 1: a, 2: b, 3: c<\/span><\/p>\n<p><span class=\"token comment\"># zip() &#8211; \u6253\u5305<\/span><br \/>\na <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><br \/>\nb <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;a&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;b&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;c&#039;<\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">zip<\/span><span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">,<\/span> b<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>       <span class=\"token comment\"># [(1, &#039;a&#039;), (2, &#039;b&#039;), (3, &#039;c&#039;)]<\/span><\/p>\n<p><span class=\"token comment\"># filter() &#8211; \u8fc7\u6ee4<\/span><br \/>\nnums <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><br \/>\nevens <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">filter<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">lambda<\/span> x<span class=\"token punctuation\">:<\/span> x <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> nums<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>evens<span class=\"token punctuation\">)<\/span>                 <span class=\"token comment\"># [2, 4, 6]<\/span><\/p>\n<p><span class=\"token comment\"># map() &#8211; \u6620\u5c04<\/span><br \/>\nsquared <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">map<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">lambda<\/span> x<span class=\"token punctuation\">:<\/span> x<span class=\"token operator\">**<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> nums<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>squared<span class=\"token punctuation\">)<\/span>               <span class=\"token comment\"># [1, 4, 9, 16, 25, 36]<\/span><\/p>\n<p><span class=\"token comment\"># any() \/ all()<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">any<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token boolean\">False<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token boolean\">False<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token boolean\">True<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># True&#xff08;\u81f3\u5c11\u4e00\u4e2a\u4e3a\u771f&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">all<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token boolean\">True<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token boolean\">False<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># False&#xff08;\u5fc5\u987b\u5168\u90e8\u4e3a\u771f&#xff09;<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;sorted() \u4e0d\u6539\u53d8\u539f\u5e8f\u5217&#xff0c;any() \u548c all() \u5728\u6761\u4ef6\u68c0\u67e5\u4e2d\u975e\u5e38\u5b9e\u7528\u3002filter \u548c map \u8fd4\u56de\u8fed\u4ee3\u5668&#xff08;\u4e0d\u662f\u5217\u8868&#xff09;&#xff0c;\u9700\u8981\u7528 list() \u8f6c\u6362\u6216\u76f4\u63a5\u904d\u5386\u3002<\/p>\n<h4>21.4 \u8f93\u5165\u8f93\u51fa<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;print() \u7684 sep \u548c end \u53c2\u6570\u53ef\u4ee5\u5b9a\u5236\u8f93\u51fa\u683c\u5f0f&#xff0c;file \u53c2\u6570\u53ef\u4ee5\u5c06\u8f93\u51fa\u91cd\u5b9a\u5411\u5230\u6587\u4ef6&#xff1a;<\/p>\n<p><span class=\"token comment\"># print() &#8211; \u6253\u5370<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Hello&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;World&#034;<\/span><span class=\"token punctuation\">,<\/span> sep<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034; | &#034;<\/span><span class=\"token punctuation\">,<\/span> end<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;!!!\\\\n&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token comment\"># Hello | World!!!<\/span><\/p>\n<p><span class=\"token comment\"># \u5199\u5165\u6587\u4ef6<\/span><br \/>\n<span class=\"token comment\"># with open(&#034;log.txt&#034;, &#034;w&#034;) as f:<\/span><br \/>\n<span class=\"token comment\">#     print(&#034;\u9519\u8bef\u4fe1\u606f&#034;, file&#061;f)<\/span><\/p>\n<p><span class=\"token comment\"># input() &#8211; \u7528\u6237\u8f93\u5165<\/span><br \/>\n<span class=\"token comment\"># name &#061; input(&#034;\u8bf7\u8f93\u5165\u59d3\u540d: &#034;)<\/span><br \/>\n<span class=\"token comment\"># print(f&#034;\u4f60\u597d&#xff0c;{name}&#034;)<\/span><\/p>\n<p><span class=\"token comment\"># open() &#8211; \u6253\u5f00\u6587\u4ef6<\/span><br \/>\n<span class=\"token comment\"># f &#061; open(&#034;file.txt&#034;, &#034;r&#034;, encoding&#061;&#034;utf-8&#034;)<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;print() \u7684\u53ef\u5b9a\u5236\u6027\u8fdc\u8d85\u60f3\u8c61\u2014\u2014sep \u63a7\u5236\u5206\u9694\u7b26\u3001end \u63a7\u5236\u7ed3\u5c3e\u5b57\u7b26\u3001file \u53ef\u91cd\u5b9a\u5411\u8f93\u51fa\u3002input() \u8bfb\u53d6\u7528\u6237\u8f93\u5165&#xff0c;\u603b\u662f\u8fd4\u56de\u5b57\u7b26\u4e32\u3002<\/p>\n<h4>21.5 \u5176\u4ed6\u5e38\u7528\u51fd\u6570<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u5176\u4ed6\u9ad8\u9891\u51fd\u6570\u5305\u62ec&#xff1a;hasattr\/getattr\/setattr\/delattr&#xff08;\u52a8\u6001\u64cd\u4f5c\u5c5e\u6027&#xff09;\u3001callable&#xff08;\u5224\u65ad\u53ef\u8c03\u7528&#xff09;\u3001ord\/chr&#xff08;\u5b57\u7b26\u7f16\u7801\u8f6c\u6362&#xff09;\u3001bin\/oct\/hex&#xff08;\u8fdb\u5236\u8f6c\u6362&#xff09;\u3001eval\/exec&#xff08;\u52a8\u6001\u6267\u884c&#xff09;&#xff1a;<\/p>\n<p><span class=\"token comment\"># &#8212; \u5bf9\u8c61\u76f8\u5173 &#8212;<\/span><br \/>\n<span class=\"token comment\"># hasattr() \/ getattr() \/ setattr() \/ delattr()<\/span><br \/>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Person<\/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 punctuation\">:<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>name <span class=\"token operator\">&#061;<\/span> name<\/p>\n<p>p <span class=\"token operator\">&#061;<\/span> Person<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Alice&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">hasattr<\/span><span class=\"token punctuation\">(<\/span>p<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>          <span class=\"token comment\"># True<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">getattr<\/span><span class=\"token punctuation\">(<\/span>p<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>           <span class=\"token comment\"># &#034;Alice&#034;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">getattr<\/span><span class=\"token punctuation\">(<\/span>p<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;age&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u672a\u77e5&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>    <span class=\"token comment\"># &#034;\u672a\u77e5&#034;&#xff08;\u9ed8\u8ba4\u503c&#xff09;<\/span><br \/>\n<span class=\"token builtin\">setattr<\/span><span class=\"token punctuation\">(<\/span>p<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;age&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">25<\/span><span class=\"token punctuation\">)<\/span>              <span class=\"token comment\"># \u7b49\u4ef7\u4e8e p.age &#061; 25<\/span><br \/>\n<span class=\"token builtin\">delattr<\/span><span class=\"token punctuation\">(<\/span>p<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;age&#034;<\/span><span class=\"token punctuation\">)<\/span>                  <span class=\"token comment\"># \u7b49\u4ef7\u4e8e del p.age<\/span><\/p>\n<p><span class=\"token comment\"># callable() &#8211; \u5224\u65ad\u662f\u5426\u53ef\u8c03\u7528<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">callable<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>             <span class=\"token comment\"># True<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">callable<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;hello&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>           <span class=\"token comment\"># False<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u5b57\u7b26\u4e32\u8f6c\u6362 &#8212;<\/span><br \/>\n<span class=\"token comment\"># repr() \/ ascii()<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">repr<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Hello\\\\nWorld&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>        <span class=\"token comment\"># &#034;Hello\\\\nWorld&#034;&#xff08;\u5f00\u53d1\u8005\u8868\u793a&#xff09;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">ascii<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u4f60\u597d&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>               <span class=\"token comment\"># &#039;\u4f60\u597d&#039;<\/span><\/p>\n<p><span class=\"token comment\"># ord() \/ chr() &#8211; \u5b57\u7b26\u4e0e Unicode \u7801\u70b9<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">ord<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;A&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>                    <span class=\"token comment\"># 65<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">ord<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;\u4e2d&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>                   <span class=\"token comment\"># 20013<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">chr<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">65<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>                     <span class=\"token comment\"># &#039;A&#039;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">chr<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">20013<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>                  <span class=\"token comment\"># &#039;\u4e2d&#039;<\/span><\/p>\n<p><span class=\"token comment\"># bin() \/ oct() \/ hex() &#8211; \u8fdb\u5236\u8f6c\u6362<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">bin<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>                     <span class=\"token comment\"># &#039;0b1010&#039;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">oct<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>                     <span class=\"token comment\"># &#039;0o12&#039;<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">hex<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">255<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>                    <span class=\"token comment\"># &#039;0xff&#039;<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u8fed\u4ee3\u5de5\u5177 &#8212;<\/span><br \/>\n<span class=\"token comment\"># iter() \/ next()<\/span><br \/>\nit <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">iter<\/span><span class=\"token punctuation\">(<\/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 punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">next<\/span><span class=\"token punctuation\">(<\/span>it<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>                    <span class=\"token comment\"># 1<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u7f16\u8bd1\/\u6267\u884c &#8212;<\/span><br \/>\n<span class=\"token comment\"># compile() \/ exec() \/ eval() &#8211; \u52a8\u6001\u6267\u884c\u4ee3\u7801&#xff08;\u6ce8\u610f\u5b89\u5168\u98ce\u9669&#xff09;<\/span><br \/>\nresult <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">eval<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;1 &#043; 2 * 3&#034;<\/span><span class=\"token punctuation\">)<\/span>         <span class=\"token comment\"># 7&#xff08;\u8ba1\u7b97\u8868\u8fbe\u5f0f&#xff09;<\/span><br \/>\n<span class=\"token comment\"># exec(&#034;print(&#039;Hello from exec&#039;)&#034;) # \u6267\u884c\u4ee3\u7801\u5757<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u5168\u5c40\/\u5c40\u90e8\u547d\u540d\u7a7a\u95f4 &#8212;<\/span><br \/>\n<span class=\"token comment\"># globals() \/ locals() &#8211; \u8fd4\u56de\u547d\u540d\u7a7a\u95f4\u5b57\u5178<\/span><br \/>\nx <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">42<\/span><br \/>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">globals<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;x&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>              <span class=\"token comment\"># 42<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;getattr(obj, attr, default) \u5728\u4e0d\u786e\u5b9a\u5c5e\u6027\u662f\u5426\u5b58\u5728\u65f6\u975e\u5e38\u5b89\u5168\u3002eval() \u6267\u884c\u8868\u8fbe\u5f0f\u3001exec() \u6267\u884c\u4ee3\u7801\u5757&#xff0c;\u4f46\u9700\u8c28\u614e\u4f7f\u7528\u2014\u2014\u6267\u884c\u4e0d\u53ef\u4fe1\u7684\u8f93\u5165\u6709\u5b89\u5168\u98ce\u9669\u3002<\/p>\n<hr \/>\n<h3>22. \u7c7b\u578b\u6ce8\u89e3<\/h3>\n<p>Python \u662f\u52a8\u6001\u7c7b\u578b\u8bed\u8a00&#xff0c;\u4f46\u4ece 3.5&#043; \u5f00\u59cb\u652f\u6301\u7c7b\u578b\u6ce8\u89e3&#xff08;Type Hints&#xff09;&#xff0c;\u5e2e\u52a9 IDE \u548c\u5de5\u5177\u505a\u9759\u6001\u68c0\u67e5\u3002<\/p>\n<h4>22.1 \u57fa\u672c\u7c7b\u578b\u6ce8\u89e3<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;Python \u7c7b\u578b\u6ce8\u89e3\u4f7f\u7528 \u53d8\u91cf: \u7c7b\u578b \u8bed\u6cd5&#xff0c;\u51fd\u6570\u6ce8\u89e3\u4f7f\u7528 def func(arg: Type) -&gt; ReturnType\u3002\u6ce8\u89e3\u4e0d\u5f3a\u5236\u7c7b\u578b&#xff0c;\u4f46\u80fd\u5e2e\u52a9 IDE \u548c mypy \u505a\u9759\u6001\u68c0\u67e5&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u53d8\u91cf\u6ce8\u89e3<\/span><br \/>\nname<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;Alice&#034;<\/span><br \/>\nage<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">25<\/span><br \/>\nprice<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">3.99<\/span><br \/>\nis_active<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">bool<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">True<\/span><\/p>\n<p><span class=\"token comment\"># \u51fd\u6570\u6ce8\u89e3<\/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><span class=\"token keyword\">def<\/span> <span class=\"token function\">divide<\/span><span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">,<\/span> b<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> b <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">raise<\/span> ValueError<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u9664\u6570\u4e0d\u80fd\u4e3a\u96f6&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> a <span class=\"token operator\">\/<\/span> b<\/p>\n<p><span class=\"token comment\"># \u53c2\u6570\u9ed8\u8ba4\u503c<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">repeat<\/span><span class=\"token punctuation\">(<\/span>text<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">,<\/span> times<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1<\/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> text <span class=\"token operator\">*<\/span> times<\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u7c7b\u578b\u6ce8\u89e3\u662f\u53ef\u9009\u7684&#xff0c;\u4f46\u8d8a\u6765\u8d8a\u591a\u7684\u9879\u76ee\u5f00\u59cb\u4f7f\u7528\u5b83\u4eec\u3002\u7ed3\u5408 VS Code \/ PyCharm&#xff0c;\u7c7b\u578b\u6ce8\u89e3\u80fd\u63d0\u4f9b\u66f4\u597d\u7684\u4ee3\u7801\u8865\u5168\u548c\u9519\u8bef\u63d0\u793a\u3002<\/p>\n<h4>22.2 \u590d\u6742\u7c7b\u578b\u6ce8\u89e3<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u4f7f\u7528 typing \u6a21\u5757&#xff08;\u6216 Python 3.10&#043; \u65b0\u8bed\u6cd5&#xff09;\u53ef\u4ee5\u6ce8\u89e3\u5bb9\u5668\u7c7b\u578b\u3001\u53ef\u9009\u7c7b\u578b\u3001\u8054\u5408\u7c7b\u578b\u3001\u56de\u8c03\u51fd\u6570\u3001\u5b57\u9762\u91cf\u7c7b\u578b\u548c\u7ed3\u6784\u5316\u5b57\u5178\u7b49\u590d\u6742\u573a\u666f&#xff1a;<\/p>\n<p><span class=\"token keyword\">from<\/span> typing <span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">(<\/span><br \/>\n    List<span class=\"token punctuation\">,<\/span> Dict<span class=\"token punctuation\">,<\/span> Set<span class=\"token punctuation\">,<\/span> Tuple<span class=\"token punctuation\">,<\/span> Optional<span class=\"token punctuation\">,<\/span> Union<span class=\"token punctuation\">,<\/span><br \/>\n    Callable<span class=\"token punctuation\">,<\/span> Any<span class=\"token punctuation\">,<\/span> Sequence<span class=\"token punctuation\">,<\/span> Iterable<span class=\"token punctuation\">,<\/span> Literal<span class=\"token punctuation\">,<\/span> TypedDict<br \/>\n<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u5bb9\u5668\u7c7b\u578b<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">process_numbers<\/span><span class=\"token punctuation\">(<\/span>nums<span class=\"token punctuation\">:<\/span> List<span class=\"token punctuation\">[<\/span><span class=\"token builtin\">int<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> Dict<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 punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span>n<span class=\"token punctuation\">:<\/span> n <span class=\"token operator\">**<\/span> <span class=\"token number\">2<\/span> <span class=\"token keyword\">for<\/span> n <span class=\"token keyword\">in<\/span> nums<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">matrix_multiply<\/span><span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">:<\/span> List<span class=\"token punctuation\">[<\/span>List<span class=\"token punctuation\">[<\/span><span class=\"token builtin\">float<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> b<span class=\"token punctuation\">:<\/span> List<span class=\"token punctuation\">[<\/span>List<span class=\"token punctuation\">[<\/span><span class=\"token builtin\">float<\/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> List<span class=\"token punctuation\">[<\/span>List<span class=\"token punctuation\">[<\/span><span class=\"token builtin\">float<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token comment\"># &#8230;<\/span><br \/>\n    <span class=\"token keyword\">pass<\/span><\/p>\n<p><span class=\"token comment\"># \u5143\u7ec4&#xff08;\u56fa\u5b9a\u957f\u5ea6&#xff09;<\/span><br \/>\npoint<span class=\"token punctuation\">:<\/span> Tuple<span class=\"token punctuation\">[<\/span><span class=\"token builtin\">float<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">3.0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">4.0<\/span><span class=\"token punctuation\">)<\/span><br \/>\nrecord<span class=\"token punctuation\">:<\/span> Tuple<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 builtin\">bool<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">25<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token boolean\">True<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># Optional: \u53ef\u4ee5\u662f\u67d0\u7c7b\u578b\u6216 None<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">find_user<\/span><span class=\"token punctuation\">(<\/span>user_id<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> Optional<span class=\"token punctuation\">[<\/span>Dict<span class=\"token punctuation\">[<\/span><span class=\"token builtin\">str<\/span><span class=\"token punctuation\">,<\/span> Any<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token comment\"># \u53ef\u80fd\u8fd4\u56de None<\/span><br \/>\n    <span class=\"token keyword\">pass<\/span><\/p>\n<p><span class=\"token comment\"># Union: \u591a\u79cd\u7c7b\u578b\u4e2d\u4e4b\u4e00&#xff08;Python 3.10&#043; \u53ef\u7528 X | Y&#xff09;<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">parse_value<\/span><span class=\"token punctuation\">(<\/span>value<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> Union<span class=\"token punctuation\">[<\/span><span class=\"token builtin\">int<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token builtin\">float<\/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\">try<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">(<\/span>value<span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">except<\/span> ValueError<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>value<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">except<\/span> ValueError<span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> value<\/p>\n<p><span class=\"token comment\"># Python 3.10&#043; \u65b0\u8bed\u6cd5&#xff08;\u63a8\u8350&#xff09;<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">parse_value_v2<\/span><span class=\"token punctuation\">(<\/span>value<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\">int<\/span> <span class=\"token operator\">|<\/span> <span class=\"token builtin\">float<\/span> <span class=\"token operator\">|<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">pass<\/span><\/p>\n<p><span class=\"token comment\"># Optional \u7684\u65b0\u5199\u6cd5&#xff08;Python 3.10&#043;&#xff09;<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">maybe_get_name<\/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\">str<\/span> <span class=\"token operator\">|<\/span> <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">pass<\/span><\/p>\n<p><span class=\"token comment\"># Callable: \u51fd\u6570\u7c7b\u578b<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">apply<\/span><span class=\"token punctuation\">(<\/span>func<span class=\"token punctuation\">:<\/span> Callable<span class=\"token punctuation\">[<\/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 punctuation\">,<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">]<\/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> func<span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">,<\/span> b<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># Any: \u4efb\u610f\u7c7b\u578b&#xff08;\u7981\u7528\u7c7b\u578b\u68c0\u67e5&#xff09;<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">flexible<\/span><span class=\"token punctuation\">(<\/span>data<span class=\"token punctuation\">:<\/span> Any<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> Any<span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> data<\/p>\n<p><span class=\"token comment\"># Literal: \u5b57\u9762\u91cf\u7c7b\u578b<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">set_mode<\/span><span class=\"token punctuation\">(<\/span>mode<span class=\"token punctuation\">:<\/span> Literal<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;read&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;write&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;append&#034;<\/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 boolean\">None<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">pass<\/span><\/p>\n<p>set_mode<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;read&#034;<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># \u2705<\/span><br \/>\n<span class=\"token comment\"># set_mode(&#034;delete&#034;)  # \u274c \u7c7b\u578b\u68c0\u67e5\u5668\u4f1a\u62a5\u9519<\/span><\/p>\n<p><span class=\"token comment\"># TypedDict: \u5e26\u7c7b\u578b\u7684\u5b57\u5178<\/span><br \/>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">User<\/span><span class=\"token punctuation\">(<\/span>TypedDict<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    name<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><br \/>\n    age<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span><br \/>\n    email<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span> <span class=\"token operator\">|<\/span> <span class=\"token boolean\">None<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">create_user<\/span><span class=\"token punctuation\">(<\/span>data<span class=\"token punctuation\">:<\/span> User<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>data<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;name&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;Python 3.10&#043; \u63a8\u8350\u4f7f\u7528 int | None \u66ff\u4ee3 Optional[int]&#xff0c;int | str \u66ff\u4ee3 Union[int, str]\u2014\u2014\u66f4\u7b80\u6d01\u76f4\u89c2\u3002Literal \u9650\u5b9a\u53c2\u6570\u7684\u5408\u6cd5\u503c&#xff0c;\u8ba9\u7c7b\u578b\u68c0\u67e5\u66f4\u7cbe\u786e\u3002<\/p>\n<h4>22.3 \u81ea\u5b9a\u4e49\u6cdb\u578b<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u4f7f\u7528 TypeVar \u521b\u5efa\u7c7b\u578b\u53d8\u91cf&#xff0c;\u5b9e\u73b0\u6cdb\u578b\u51fd\u6570\u548c\u6cdb\u578b\u7c7b\u2014\u2014\u8ba9\u7c7b\u578b\u68c0\u67e5\u5668\u80fd\u6839\u636e\u8f93\u5165\u63a8\u65ad\u8f93\u51fa\u7684\u5177\u4f53\u7c7b\u578b&#xff1a;<\/p>\n<p><span class=\"token keyword\">from<\/span> typing <span class=\"token keyword\">import<\/span> TypeVar<span class=\"token punctuation\">,<\/span> Generic<\/p>\n<p>T <span class=\"token operator\">&#061;<\/span> TypeVar<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;T&#039;<\/span><span class=\"token punctuation\">)<\/span>   <span class=\"token comment\"># \u7c7b\u578b\u53d8\u91cf<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">first<\/span><span class=\"token punctuation\">(<\/span>items<span class=\"token punctuation\">:<\/span> List<span class=\"token punctuation\">[<\/span>T<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> T <span class=\"token operator\">|<\/span> <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u8fd4\u56de\u5217\u8868\u7b2c\u4e00\u4e2a\u5143\u7d20&#xff0c;\u4fdd\u6301\u7c7b\u578b&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> items<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">if<\/span> items <span class=\"token keyword\">else<\/span> <span class=\"token boolean\">None<\/span><\/p>\n<p>a<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span> <span class=\"token operator\">&#061;<\/span> first<span class=\"token punctuation\">(<\/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 punctuation\">)<\/span>        <span class=\"token comment\"># \u7c7b\u578b\u68c0\u67e5\u5668\u77e5\u9053\u8fd4\u56de int<\/span><br \/>\nb<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span> <span class=\"token operator\">&#061;<\/span> first<span class=\"token punctuation\">(<\/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 string\">&#034;c&#034;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># \u7c7b\u578b\u68c0\u67e5\u5668\u77e5\u9053\u8fd4\u56de str<\/span><\/p>\n<p><span class=\"token comment\"># \u6cdb\u578b\u7c7b<\/span><br \/>\nK <span class=\"token operator\">&#061;<\/span> TypeVar<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;K&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\nV <span class=\"token operator\">&#061;<\/span> TypeVar<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;V&#039;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Stack<\/span><span class=\"token punctuation\">(<\/span>Generic<span class=\"token punctuation\">[<\/span>T<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/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> <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        self<span class=\"token punctuation\">.<\/span>_items<span class=\"token punctuation\">:<\/span> List<span class=\"token punctuation\">[<\/span>T<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">push<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> item<span class=\"token punctuation\">:<\/span> T<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        self<span class=\"token punctuation\">.<\/span>_items<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span>item<span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">pop<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> T <span class=\"token operator\">|<\/span> <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> self<span class=\"token punctuation\">.<\/span>_items<span class=\"token punctuation\">.<\/span>pop<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">if<\/span> self<span class=\"token punctuation\">.<\/span>_items <span class=\"token keyword\">else<\/span> <span class=\"token boolean\">None<\/span><\/p>\n<p>int_stack <span class=\"token operator\">&#061;<\/span> Stack<span class=\"token punctuation\">[<\/span><span class=\"token builtin\">int<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\nint_stack<span class=\"token punctuation\">.<\/span>push<span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><br \/>\nint_stack<span class=\"token punctuation\">.<\/span>push<span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token comment\"># int_stack.push(&#034;hello&#034;)  # \u274c \u7c7b\u578b\u68c0\u67e5\u5668\u4f1a\u62a5\u9519<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u6cdb\u578b\u5728\u7f16\u5199\u53ef\u590d\u7528\u7684\u5bb9\u5668\u7c7b&#xff08;\u5982 Stack\u3001Queue&#xff09;\u548c\u5de5\u5177\u51fd\u6570\u65f6\u7279\u522b\u6709\u7528\u2014\u2014\u65e2\u4fdd\u6301\u7c7b\u578b\u5b89\u5168&#xff0c;\u53c8\u4e0d\u5931\u7075\u6d3b\u6027\u3002<\/p>\n<hr \/>\n<h3>23. \u865a\u62df\u73af\u5883\u4e0e\u5305\u7ba1\u7406<\/h3>\n<h4>23.1 venv \u865a\u62df\u73af\u5883<\/h4>\n<p><span class=\"token comment\"># \u521b\u5efa\u865a\u62df\u73af\u5883<\/span><br \/>\npython <span class=\"token parameter variable\">-m<\/span> venv myenv<\/p>\n<p><span class=\"token comment\"># \u6fc0\u6d3b\u865a\u62df\u73af\u5883<\/span><br \/>\n<span class=\"token comment\"># Windows:<\/span><br \/>\nmyenv<span class=\"token punctuation\">\\\\<\/span>Scripts<span class=\"token punctuation\">\\\\<\/span>activate<br \/>\n<span class=\"token comment\"># macOS\/Linux:<\/span><br \/>\n<span class=\"token comment\"># source myenv\/bin\/activate<\/span><\/p>\n<p><span class=\"token comment\"># \u9000\u51fa\u865a\u62df\u73af\u5883<\/span><br \/>\ndeactivate<\/p>\n<h4>23.2 pip \u5305\u7ba1\u7406<\/h4>\n<p><span class=\"token comment\"># \u5b89\u88c5\u5305<\/span><br \/>\npip <span class=\"token function\">install<\/span> requests<br \/>\npip <span class=\"token function\">install<\/span> <span class=\"token assign-left variable\">pandas<\/span><span class=\"token operator\">&#061;&#061;<\/span><span class=\"token number\">2.0<\/span>.3           <span class=\"token comment\"># \u5b89\u88c5\u7279\u5b9a\u7248\u672c<\/span><br \/>\npip <span class=\"token function\">install<\/span> <span class=\"token string\">&#034;django&gt;&#061;4.0,&lt;5.0&#034;<\/span>      <span class=\"token comment\"># \u7248\u672c\u8303\u56f4<\/span><\/p>\n<p><span class=\"token comment\"># \u5347\u7ea7\u5305<\/span><br \/>\npip <span class=\"token function\">install<\/span> <span class=\"token parameter variable\">&#8211;upgrade<\/span> requests<\/p>\n<p><span class=\"token comment\"># \u5378\u8f7d\u5305<\/span><br \/>\npip uninstall requests<\/p>\n<p><span class=\"token comment\"># \u5217\u51fa\u5df2\u5b89\u88c5\u7684\u5305<\/span><br \/>\npip list<br \/>\npip list <span class=\"token parameter variable\">&#8211;outdated<\/span>                 <span class=\"token comment\"># \u5217\u51fa\u53ef\u5347\u7ea7\u7684\u5305<\/span><\/p>\n<p><span class=\"token comment\"># \u663e\u793a\u5305\u8be6\u60c5<\/span><br \/>\npip show requests<\/p>\n<p><span class=\"token comment\"># \u4f9d\u8d56\u7ba1\u7406<\/span><br \/>\npip freeze <span class=\"token operator\">&gt;<\/span> requirements.txt       <span class=\"token comment\"># \u5bfc\u51fa\u4f9d\u8d56<\/span><br \/>\npip <span class=\"token function\">install<\/span> <span class=\"token parameter variable\">-r<\/span> requirements.txt     <span class=\"token comment\"># \u5b89\u88c5\u4f9d\u8d56<\/span><\/p>\n<p><span class=\"token comment\"># \u641c\u7d22\u5305<\/span><br \/>\n<span class=\"token comment\"># pip search &lt;keyword&gt;              # \u5df2\u5728 PyPI \u7f51\u7ad9\u641c\u7d22<\/span><\/p>\n<h4>23.3 requirements.txt \u793a\u4f8b<\/h4>\n<p># requirements.txt<br \/>\nrequests&gt;&#061;2.28,&lt;3.0<br \/>\nnumpy&#061;&#061;1.24.3<br \/>\npandas&gt;&#061;2.0<br \/>\nflask&gt;&#061;2.3<br \/>\npython-dotenv&gt;&#061;1.0<br \/>\nblack&gt;&#061;23.0      # \u4ee3\u7801\u683c\u5f0f\u5316<br \/>\npylint&gt;&#061;2.17     # \u4ee3\u7801\u68c0\u67e5<br \/>\npytest&gt;&#061;7.4      # \u6d4b\u8bd5\u6846\u67b6<\/p>\n<hr \/>\n<h3>24. \u7f16\u7801\u89c4\u8303&#xff08;PEP 8&#xff09;<\/h3>\n<h4>24.1 \u7f29\u8fdb\u4e0e\u7a7a\u767d<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;PEP 8 \u89c4\u5b9a\u4f7f\u7528 4 \u7a7a\u683c\u7f29\u8fdb\u3001\u6bcf\u884c\u6700\u591a 79 \u5b57\u7b26\u3001\u8fd0\u7b97\u7b26\u4e24\u4fa7\u52a0\u7a7a\u683c\u3001\u51fd\u6570\u548c\u7c7b\u4e4b\u95f4\u7a7a\u4e24\u884c&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u2705 \u4f7f\u7528 4 \u4e2a\u7a7a\u683c\u7f29\u8fdb&#xff08;\u4e0d\u8981\u7528 Tab&#xff09;<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">my_function<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> condition<span class=\"token punctuation\">:<\/span><br \/>\n        do_something<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u274c \u4e0d\u8981\u6df7\u7528 Tab \u548c\u7a7a\u683c<\/span><br \/>\n<span class=\"token comment\"># \u274c \u4e0d\u8981\u7528 2 \u4e2a\u6216 8 \u4e2a\u7a7a\u683c<\/span><\/p>\n<p><span class=\"token comment\"># \u6bcf\u884c\u6700\u591a 79 \u4e2a\u5b57\u7b26&#xff08;\u6587\u6863\/\u6ce8\u91ca 72&#xff09;<\/span><br \/>\n<span class=\"token comment\"># \u64cd\u4f5c\u7b26\u4e24\u8fb9\u5404\u52a0\u4e00\u4e2a\u7a7a\u683c<\/span><br \/>\nx <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">2<\/span><br \/>\ny <span class=\"token operator\">&#061;<\/span> x <span class=\"token operator\">*<\/span> <span class=\"token number\">3<\/span><\/p>\n<p><span class=\"token comment\"># \u51fd\u6570\u548c\u7c7b\u4e4b\u95f4\u7a7a\u4e24\u884c<\/span><br \/>\n<span class=\"token comment\"># \u65b9\u6cd5\u4e4b\u95f4\u7a7a\u4e00\u884c<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u9075\u5faa PEP 8 \u8ba9\u4f60\u548c\u56e2\u961f\u5176\u4ed6\u6210\u5458\u7684\u4ee3\u7801\u98ce\u683c\u4e00\u81f4\u3002\u53ef\u4ee5\u7528 black \u5de5\u5177\u81ea\u52a8\u683c\u5f0f\u5316&#xff0c;\u7701\u53bb\u624b\u52a8\u8c03\u6574\u7684\u9ebb\u70e6\u3002<\/p>\n<h4>24.2 \u547d\u540d\u7ea6\u5b9a<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;Python \u793e\u533a\u9075\u5faa\u4e00\u81f4\u7684\u547d\u540d\u7ea6\u5b9a&#xff1a;\u51fd\u6570\/\u53d8\u91cf\u7528 snake_case&#xff0c;\u7c7b\u7528 PascalCase&#xff0c;\u5e38\u91cf\u5168\u5927\u5199&#xff0c;\u79c1\u6709\u5c5e\u6027\u524d\u7f00\u5355\u4e0b\u5212\u7ebf&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u5305\/\u6a21\u5757: \u7b80\u77ed\u5c0f\u5199&#xff0c;\u53ef\u7528\u4e0b\u5212\u7ebf<\/span><br \/>\n<span class=\"token comment\"># my_package, utils<\/span><\/p>\n<p><span class=\"token comment\"># \u51fd\u6570\/\u65b9\u6cd5\/\u53d8\u91cf: \u5c0f\u5199 &#043; \u4e0b\u5212\u7ebf<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">calculate_average<\/span><span class=\"token punctuation\">(<\/span>numbers<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    total_sum <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> total_sum <span class=\"token operator\">\/<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>numbers<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u7c7b: \u5927\u9a7c\u5cf0<\/span><br \/>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">ShoppingCart<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">pass<\/span><\/p>\n<p><span class=\"token comment\"># \u5f02\u5e38: \u7c7b\u540d &#043; Error<\/span><br \/>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">ValidationError<\/span><span class=\"token punctuation\">(<\/span>Exception<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token keyword\">pass<\/span><\/p>\n<p><span class=\"token comment\"># \u5e38\u91cf: \u5168\u5927\u5199 &#043; \u4e0b\u5212\u7ebf<\/span><br \/>\nMAX_CONNECTIONS <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">100<\/span><br \/>\nDEFAULT_TIMEOUT <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">30<\/span><\/p>\n<p><span class=\"token comment\"># \u79c1\u6709\u5c5e\u6027\/\u65b9\u6cd5: \u524d\u7f00\u5355\u4e0b\u5212\u7ebf<\/span><br \/>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">MyClass<\/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><span class=\"token punctuation\">:<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>_internal_data <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">_private_method<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">pass<\/span><\/p>\n<p><span class=\"token comment\"># \u907f\u514d\u540d\u79f0\u6539\u5199: \u540e\u7f00\u5355\u4e0b\u5212\u7ebf<\/span><br \/>\n<span class=\"token comment\"># class_&#xff08;class \u662f\u5173\u952e\u5b57&#xff09;<\/span><br \/>\n<span class=\"token comment\"># list_&#xff08;list \u662f\u5185\u7f6e\u51fd\u6570&#xff09;<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u4e00\u81f4\u7684\u547d\u540d\u8ba9\u4ee3\u7801\u610f\u56fe\u4e00\u76ee\u4e86\u7136\u2014\u2014MAX_SIZE \u4e00\u773c\u5c31\u662f\u5e38\u91cf&#xff0c;_internal \u8868\u793a\u5185\u90e8\u4f7f\u7528&#xff0c;ValidationError \u4e00\u770b\u5c31\u662f\u5f02\u5e38\u7c7b\u3002<\/p>\n<h4>24.3 \u5bfc\u5165\u987a\u5e8f<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;import \u8bed\u53e5\u5e94\u6309\u6807\u51c6\u5e93 -&gt; \u7b2c\u4e09\u65b9\u5e93 -&gt; \u672c\u5730\u6a21\u5757\u7684\u987a\u5e8f\u6392\u5217&#xff0c;\u6bcf\u7ec4\u4e4b\u95f4\u7a7a\u4e00\u884c&#xff1a;<\/p>\n<p><span class=\"token comment\"># 1. \u6807\u51c6\u5e93<\/span><br \/>\n<span class=\"token keyword\">import<\/span> os<br \/>\n<span class=\"token keyword\">import<\/span> sys<\/p>\n<p><span class=\"token comment\"># 2. \u7b2c\u4e09\u65b9\u5e93<\/span><br \/>\n<span class=\"token keyword\">import<\/span> numpy <span class=\"token keyword\">as<\/span> np<br \/>\n<span class=\"token keyword\">import<\/span> requests<\/p>\n<p><span class=\"token comment\"># 3. \u672c\u5730\u6a21\u5757<\/span><br \/>\n<span class=\"token keyword\">from<\/span> <span class=\"token punctuation\">.<\/span>utils <span class=\"token keyword\">import<\/span> helper<br \/>\n<span class=\"token keyword\">from<\/span> mypackage<span class=\"token punctuation\">.<\/span>core <span class=\"token keyword\">import<\/span> core_func<\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;isort \u5de5\u5177\u53ef\u4ee5\u81ea\u52a8\u6309\u6b64\u89c4\u5219\u6392\u5e8f import \u8bed\u53e5&#xff0c;\u4e00\u52b3\u6c38\u9038\u3002<\/p>\n<h4>24.4 \u6ce8\u91ca\u4e0e\u6587\u6863\u5b57\u7b26\u4e32<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u597d\u7684\u6ce8\u91ca\u8bf4\u660e\u4e3a\u4ec0\u4e48\u800c\u4e0d\u662f\u505a\u4e86\u4ec0\u4e48\u3002\u6587\u6863\u5b57\u7b26\u4e32\u7528\u4e09\u5f15\u53f7&#xff0c;\u63a8\u8350 Google \u98ce\u683c\u6216 NumPy \u98ce\u683c\u7684\u683c\u5f0f&#xff1a;<\/p>\n<p><span class=\"token comment\"># \u5355\u884c\u6ce8\u91ca&#xff1a;\u8bf4\u660e\u4ee3\u7801\u610f\u56fe&#xff08;\u4e0d\u8bf4\u660e\u505a\u4e86\u4ec0\u4e48&#xff0c;\u800c\u662f\u4e3a\u4ec0\u4e48\u8fd9\u4e48\u505a&#xff09;<\/span><br \/>\n<span class=\"token comment\"># \u590d\u6742\u6b63\u5219\u8868\u8fbe\u5f0f: \u5339\u914d Email \u5730\u5740 (RFC 5322)<\/span><br \/>\nemail_pattern <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">r&#039;&#8230;&#039;<\/span><\/p>\n<p><span class=\"token comment\"># \u6587\u6863\u5b57\u7b26\u4e32: \u4e09\u5f15\u53f7<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">fetch_data<\/span><span class=\"token punctuation\">(<\/span>url<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">,<\/span> timeout<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">dict<\/span> <span class=\"token operator\">|<\/span> <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    \u4ece\u6307\u5b9a URL \u83b7\u53d6 JSON \u6570\u636e\u3002<\/p>\n<p>    Args:<br \/>\n        url: API \u5730\u5740<br \/>\n        timeout: \u8d85\u65f6\u65f6\u95f4&#xff08;\u79d2&#xff09;<\/p>\n<p>    Returns:<br \/>\n        \u6210\u529f\u65f6\u8fd4\u56de\u89e3\u6790\u540e\u7684\u5b57\u5178&#xff0c;\u5931\u8d25\u8fd4\u56de None<\/p>\n<p>    Raises:<br \/>\n        ValueError: URL \u683c\u5f0f\u4e0d\u6b63\u786e<br \/>\n        requests.RequestException: \u7f51\u7edc\u8bf7\u6c42\u5931\u8d25<br \/>\n    &#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">pass<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;Args:\u3001Returns:\u3001Raises: \u662f\u6587\u6863\u5b57\u7b26\u4e32\u7684\u6807\u51c6\u5b57\u6bb5&#xff0c;IDE \u548c\u6587\u6863\u751f\u6210\u5de5\u5177&#xff08;\u5982 Sphinx&#xff09;\u80fd\u8bc6\u522b\u5e76\u81ea\u52a8\u751f\u6210\u6f02\u4eae\u7684 API \u6587\u6863\u3002<\/p>\n<h4>24.5 \u4ee3\u7801\u683c\u5f0f\u5316\u5de5\u5177<\/h4>\n<p><span class=\"token comment\"># Black: \u81ea\u52a8\u4ee3\u7801\u683c\u5f0f\u5316<\/span><br \/>\npip <span class=\"token function\">install<\/span> black<br \/>\nblack my_script.py<\/p>\n<p><span class=\"token comment\"># isort: \u81ea\u52a8\u6392\u5e8f import \u8bed\u53e5<\/span><br \/>\npip <span class=\"token function\">install<\/span> isort<br \/>\nisort my_script.py<\/p>\n<p><span class=\"token comment\"># Flake8 \/ Pylint: \u4ee3\u7801\u8d28\u91cf\u68c0\u67e5<\/span><br \/>\npip <span class=\"token function\">install<\/span> flake8 pylint<br \/>\nflake8 my_script.py<br \/>\npylint my_script.py<\/p>\n<p><span class=\"token comment\"># mypy: \u9759\u6001\u7c7b\u578b\u68c0\u67e5<\/span><br \/>\npip <span class=\"token function\">install<\/span> mypy<br \/>\nmypy my_script.py<\/p>\n<hr \/>\n<h3>25. \u7efc\u5408\u7ec3\u4e60<\/h3>\n<h4>\u7ec3\u4e60 1&#xff1a;\u5b66\u751f\u6210\u7ee9\u7ba1\u7406\u7cfb\u7edf<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u7efc\u5408\u8fd0\u7528\u7c7b\u4e0e\u5bf9\u8c61\u3001\u5b57\u5178\u64cd\u4f5c\u3001\u5217\u8868\u63a8\u5bfc\u5f0f\u3001\u6392\u5e8f\u7b49\u77e5\u8bc6&#xff0c;\u5b9e\u73b0\u4e00\u4e2a\u5b8c\u6574\u7684\u5b66\u751f\u6210\u7ee9\u7ba1\u7406\u7cfb\u7edf\u3002\u5305\u542b\u6dfb\u52a0\u5b66\u751f\u3001\u8bb0\u5f55\u6210\u7ee9\u3001\u8ba1\u7b97\u5e73\u5747\u5206\u3001\u6392\u540d\u548c\u751f\u6210\u62a5\u544a\u7b49\u529f\u80fd&#xff1a;<\/p>\n<p><span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n\u5b66\u751f\u6210\u7ee9\u7ba1\u7406\u7cfb\u7edf<br \/>\n\u529f\u80fd:<br \/>\n1. \u6dfb\u52a0\u5b66\u751f\u53ca\u5176\u6210\u7ee9<br \/>\n2. \u8ba1\u7b97\u5e73\u5747\u5206<br \/>\n3. \u67e5\u627e\u6700\u9ad8\u5206\u5b66\u751f<br \/>\n4. \u6309\u6210\u7ee9\u6392\u5e8f<br \/>\n&#034;&#034;&#034;<\/span><\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">StudentGradeManager<\/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><span class=\"token punctuation\">:<\/span><br \/>\n        self<span class=\"token punctuation\">.<\/span>students<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\">list<\/span><span class=\"token punctuation\">[<\/span><span class=\"token builtin\">float<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">add_student<\/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 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 triple-quoted-string string\">&#034;&#034;&#034;\u6dfb\u52a0\u5b66\u751f&#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> name <span class=\"token keyword\">not<\/span> <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>students<span class=\"token punctuation\">:<\/span><br \/>\n            self<span class=\"token punctuation\">.<\/span>students<span class=\"token punctuation\">[<\/span>name<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><br \/>\n            <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u5df2\u6dfb\u52a0\u5b66\u751f: <\/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 punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">else<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u5b66\u751f <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u5df2\u5b58\u5728&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">add_grade<\/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> grade<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/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 triple-quoted-string string\">&#034;&#034;&#034;\u6dfb\u52a0\u6210\u7ee9&#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token number\">0<\/span> <span class=\"token operator\">&lt;&#061;<\/span> grade <span class=\"token operator\">&lt;&#061;<\/span> <span class=\"token number\">100<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            self<span class=\"token punctuation\">.<\/span>students<span class=\"token punctuation\">.<\/span>setdefault<span class=\"token punctuation\">(<\/span>name<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            self<span class=\"token punctuation\">.<\/span>students<span class=\"token punctuation\">[<\/span>name<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span>grade<span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u7684\u6210\u7ee9 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>grade<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u5df2\u8bb0\u5f55&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">else<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">raise<\/span> ValueError<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u6210\u7ee9\u5fc5\u987b\u5728 0-100 \u4e4b\u95f4&#034;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">get_average<\/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 operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">float<\/span> <span class=\"token operator\">|<\/span> <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u83b7\u53d6\u5b66\u751f\u5e73\u5747\u5206&#034;&#034;&#034;<\/span><br \/>\n        grades <span class=\"token operator\">&#061;<\/span> self<span class=\"token punctuation\">.<\/span>students<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span>name<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token builtin\">sum<\/span><span class=\"token punctuation\">(<\/span>grades<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>grades<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">if<\/span> grades <span class=\"token keyword\">else<\/span> <span class=\"token boolean\">None<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">get_overall_average<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token operator\">&gt;<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u83b7\u53d6\u5168\u73ed\u5e73\u5747\u5206&#034;&#034;&#034;<\/span><br \/>\n        all_grades <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n            grade<br \/>\n            <span class=\"token keyword\">for<\/span> grades <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>students<span class=\"token punctuation\">.<\/span>values<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token keyword\">for<\/span> grade <span class=\"token keyword\">in<\/span> grades<br \/>\n        <span class=\"token punctuation\">]<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token builtin\">sum<\/span><span class=\"token punctuation\">(<\/span>all_grades<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>all_grades<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">if<\/span> all_grades <span class=\"token keyword\">else<\/span> <span class=\"token number\">0.0<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">top_student<\/span><span class=\"token punctuation\">(<\/span>self<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\">float<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">|<\/span> <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u83b7\u53d6\u5e73\u5747\u5206\u6700\u9ad8\u7684\u5b66\u751f&#034;&#034;&#034;<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token keyword\">not<\/span> self<span class=\"token punctuation\">.<\/span>students<span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> <span class=\"token boolean\">None<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token builtin\">max<\/span><span class=\"token punctuation\">(<\/span><br \/>\n            <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>name<span class=\"token punctuation\">,<\/span> self<span class=\"token punctuation\">.<\/span>get_average<span class=\"token punctuation\">(<\/span>name<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">for<\/span> name <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>students<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            key<span class=\"token operator\">&#061;<\/span><span class=\"token keyword\">lambda<\/span> x<span class=\"token punctuation\">:<\/span> x<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><br \/>\n        <span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">rank_students<\/span><span class=\"token punctuation\">(<\/span>self<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\">tuple<\/span><span class=\"token punctuation\">[<\/span><span class=\"token builtin\">str<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6309\u5e73\u5747\u5206\u4ece\u9ad8\u5230\u4f4e\u6392\u540d&#034;&#034;&#034;<\/span><br \/>\n        ranked <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n            <span class=\"token punctuation\">(<\/span>name<span class=\"token punctuation\">,<\/span> self<span class=\"token punctuation\">.<\/span>get_average<span class=\"token punctuation\">(<\/span>name<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token keyword\">for<\/span> name <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>students<br \/>\n        <span class=\"token punctuation\">]<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token builtin\">sorted<\/span><span class=\"token punctuation\">(<\/span>ranked<span class=\"token punctuation\">,<\/span> key<span class=\"token operator\">&#061;<\/span><span class=\"token keyword\">lambda<\/span> x<span class=\"token punctuation\">:<\/span> x<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> reverse<span class=\"token operator\">&#061;<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">report<\/span><span class=\"token punctuation\">(<\/span>self<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 triple-quoted-string string\">&#034;&#034;&#034;\u751f\u6210\u6210\u7ee9\u62a5\u544a&#034;&#034;&#034;<\/span><br \/>\n        lines <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;&#061;&#034;<\/span> <span class=\"token operator\">*<\/span> <span class=\"token number\">40<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;\u5b66\u751f\u6210\u7ee9\u62a5\u544a&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;&#061;&#034;<\/span> <span class=\"token operator\">*<\/span> <span class=\"token number\">40<\/span><span class=\"token punctuation\">]<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> name <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>students<span class=\"token punctuation\">:<\/span><br \/>\n            avg <span class=\"token operator\">&#061;<\/span> self<span class=\"token punctuation\">.<\/span>get_average<span class=\"token punctuation\">(<\/span>name<span class=\"token punctuation\">)<\/span><br \/>\n            grades <span class=\"token operator\">&#061;<\/span> self<span class=\"token punctuation\">.<\/span>students<span class=\"token punctuation\">[<\/span>name<span class=\"token punctuation\">]<\/span><br \/>\n            lines<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span><br \/>\n                <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>name<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">: \u6210\u7ee9 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>grades<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">, \u5e73\u5747\u5206 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>avg<span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.1f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><br \/>\n            <span class=\"token punctuation\">)<\/span><br \/>\n        lines<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;-&#034;<\/span> <span class=\"token operator\">*<\/span> <span class=\"token number\">40<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        lines<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u5168\u73ed\u5e73\u5747\u5206: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>self<span class=\"token punctuation\">.<\/span>get_overall_average<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.1f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        top <span class=\"token operator\">&#061;<\/span> self<span class=\"token punctuation\">.<\/span>top_student<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> top<span class=\"token punctuation\">:<\/span><br \/>\n            lines<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u6700\u9ad8\u5206\u5b66\u751f: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>top<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> (<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>top<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.1f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">)&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token string\">&#034;\\\\n&#034;<\/span><span class=\"token punctuation\">.<\/span>join<span class=\"token punctuation\">(<\/span>lines<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># &#8212; \u4f7f\u7528\u793a\u4f8b &#8212;<\/span><br \/>\n<span class=\"token keyword\">if<\/span> __name__ <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token string\">&#034;__main__&#034;<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    mgr <span class=\"token operator\">&#061;<\/span> StudentGradeManager<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># \u6dfb\u52a0\u5b66\u751f\u548c\u6210\u7ee9<\/span><br \/>\n    mgr<span class=\"token punctuation\">.<\/span>add_student<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Alice&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    mgr<span class=\"token punctuation\">.<\/span>add_student<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Bob&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    mgr<span class=\"token punctuation\">.<\/span>add_student<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Charlie&#034;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    mgr<span class=\"token punctuation\">.<\/span>add_grade<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">85<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    mgr<span class=\"token punctuation\">.<\/span>add_grade<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Alice&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">92<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    mgr<span class=\"token punctuation\">.<\/span>add_grade<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Bob&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">78<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    mgr<span class=\"token punctuation\">.<\/span>add_grade<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Bob&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">83<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    mgr<span class=\"token punctuation\">.<\/span>add_grade<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Charlie&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">95<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    mgr<span class=\"token punctuation\">.<\/span>add_grade<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Charlie&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">88<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># \u6253\u5370\u62a5\u544a<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>mgr<span class=\"token punctuation\">.<\/span>report<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><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\\\\n\u6392\u540d: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>mgr<span class=\"token punctuation\">.<\/span>rank_students<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u8fd9\u4e2a\u7ec3\u4e60\u6db5\u76d6\u4e86 Python \u57fa\u7840\u8bed\u6cd5\u7684\u65b9\u65b9\u9762\u9762\u2014\u2014\u9762\u5411\u5bf9\u8c61\u8bbe\u8ba1\u3001\u6570\u636e\u7ed3\u6784\u9009\u62e9\u3001\u5f02\u5e38\u5904\u7406\u3001\u5217\u8868\u63a8\u5bfc\u5f0f\u3001\u6761\u4ef6\u5224\u65ad\u7b49\u3002\u5efa\u8bae\u5148\u7406\u89e3\u4ee3\u7801\u7ed3\u6784&#xff0c;\u518d\u52a8\u624b\u81ea\u5df1\u5b9e\u73b0\u4e00\u904d\u3002<\/p>\n<h4>\u7ec3\u4e60 2&#xff1a;\u88c5\u9970\u5668\u7ec3\u4e60 \u2014 \u5b9e\u73b0 API \u9650\u6d41<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u8fd9\u662f\u4e00\u4e2a\u5b9e\u6218\u7ea7\u522b\u7684\u88c5\u9970\u5668\u7ec3\u4e60\u2014\u2014\u5b9e\u73b0 API \u8c03\u7528\u9891\u7387\u9650\u5236&#xff08;Rate Limiting&#xff09;\u3002\u5229\u7528\u95ed\u5305\u4fdd\u5b58\u8c03\u7528\u5386\u53f2&#xff0c;\u5728\u8d85\u9650\u65f6\u629b\u51fa\u5f02\u5e38&#xff1a;<\/p>\n<p><span class=\"token keyword\">import<\/span> time<br \/>\n<span class=\"token keyword\">from<\/span> functools <span class=\"token keyword\">import<\/span> wraps<br \/>\n<span class=\"token keyword\">from<\/span> collections <span class=\"token keyword\">import<\/span> defaultdict<\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">rate_limit<\/span><span class=\"token punctuation\">(<\/span>max_calls<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">,<\/span> period<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    \u9650\u6d41\u88c5\u9970\u5668&#xff1a;\u5728\u6307\u5b9a\u65f6\u95f4\u5468\u671f\u5185\u9650\u5236\u51fd\u6570\u8c03\u7528\u6b21\u6570<\/p>\n<p>    Args:<br \/>\n        max_calls: \u6700\u5927\u8c03\u7528\u6b21\u6570<br \/>\n        period: \u65f6\u95f4\u5468\u671f&#xff08;\u79d2&#xff09;<br \/>\n    &#034;&#034;&#034;<\/span><br \/>\n    calls <span class=\"token operator\">&#061;<\/span> defaultdict<span class=\"token punctuation\">(<\/span><span class=\"token builtin\">list<\/span><span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># {\u51fd\u6570\u540d: [\u8c03\u7528\u65f6\u95f4\u5217\u8868]}<\/span><\/p>\n<p>    <span class=\"token keyword\">def<\/span> <span class=\"token function\">decorator<\/span><span class=\"token punctuation\">(<\/span>func<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token decorator annotation punctuation\">&#064;wraps<\/span><span class=\"token punctuation\">(<\/span>func<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">def<\/span> <span class=\"token function\">wrapper<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">*<\/span>args<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">**<\/span>kwargs<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            now <span class=\"token operator\">&#061;<\/span> time<span class=\"token punctuation\">.<\/span>time<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            func_name <span class=\"token operator\">&#061;<\/span> func<span class=\"token punctuation\">.<\/span>__name__<\/p>\n<p>            <span class=\"token comment\"># \u6e05\u7406\u8fc7\u671f\u7684\u8c03\u7528\u8bb0\u5f55<\/span><br \/>\n            calls<span class=\"token punctuation\">[<\/span>func_name<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n                t <span class=\"token keyword\">for<\/span> t <span class=\"token keyword\">in<\/span> calls<span class=\"token punctuation\">[<\/span>func_name<span class=\"token punctuation\">]<\/span><br \/>\n                <span class=\"token keyword\">if<\/span> now <span class=\"token operator\">&#8211;<\/span> t <span class=\"token operator\">&lt;<\/span> period<br \/>\n            <span class=\"token punctuation\">]<\/span><\/p>\n<p>            <span class=\"token comment\"># \u68c0\u67e5\u662f\u5426\u8d85\u51fa\u9650\u5236<\/span><br \/>\n            <span class=\"token keyword\">if<\/span> <span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>calls<span class=\"token punctuation\">[<\/span>func_name<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&gt;&#061;<\/span> max_calls<span class=\"token punctuation\">:<\/span><br \/>\n                wait_time <span class=\"token operator\">&#061;<\/span> period <span class=\"token operator\">&#8211;<\/span> <span class=\"token punctuation\">(<\/span>now <span class=\"token operator\">&#8211;<\/span> calls<span class=\"token punctuation\">[<\/span>func_name<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token keyword\">raise<\/span> RuntimeError<span class=\"token punctuation\">(<\/span><br \/>\n                    <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;API \u9650\u6d41&#xff1a;\u5728 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>period<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u79d2\u5185\u6700\u591a\u8c03\u7528 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>max_calls<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u6b21\u3002&#034;<\/span><\/span><br \/>\n                    <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u8bf7\u7b49\u5f85 <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>wait_time<span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.1f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u79d2\u3002&#034;<\/span><\/span><br \/>\n                <span class=\"token punctuation\">)<\/span><\/p>\n<p>            <span class=\"token comment\"># \u8bb0\u5f55\u8c03\u7528\u65f6\u95f4<\/span><br \/>\n            calls<span class=\"token punctuation\">[<\/span>func_name<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span>now<span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> func<span class=\"token punctuation\">(<\/span><span class=\"token operator\">*<\/span>args<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">**<\/span>kwargs<span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token keyword\">return<\/span> wrapper<\/p>\n<p>    <span class=\"token keyword\">return<\/span> decorator<\/p>\n<p><span class=\"token comment\"># &#8212; \u4f7f\u7528 &#8212;<\/span><br \/>\n<span class=\"token decorator annotation punctuation\">&#064;rate_limit<\/span><span class=\"token punctuation\">(<\/span>max_calls<span class=\"token operator\">&#061;<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> period<span class=\"token operator\">&#061;<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">api_call<\/span><span class=\"token punctuation\">(<\/span>endpoint<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 triple-quoted-string string\">&#034;&#034;&#034;\u6a21\u62df API \u8c03\u7528&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f&#034;API \u54cd\u5e94: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>endpoint<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><\/p>\n<p><span class=\"token comment\"># \u6d4b\u8bd5<\/span><br \/>\n<span class=\"token keyword\">if<\/span> __name__ <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token string\">&#034;__main__&#034;<\/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\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            result <span class=\"token operator\">&#061;<\/span> api_call<span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\/users\/<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>i<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>result<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token keyword\">except<\/span> RuntimeError <span class=\"token keyword\">as<\/span> e<span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;\u9519\u8bef: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>e<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><br \/>\n        time<span class=\"token punctuation\">.<\/span>sleep<span class=\"token punctuation\">(<\/span><span class=\"token number\">0.5<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u8fd9\u4e2a\u9650\u6d41\u88c5\u9970\u5668\u5c55\u793a\u4e86\u88c5\u9970\u5668\u7684\u5b9e\u9645\u5e94\u7528\u4ef7\u503c\u2014\u2014\u5c06\u6a2a\u5207\u5173\u6ce8\u70b9&#xff08;\u9650\u6d41&#xff09;\u4ece\u4e1a\u52a1\u903b\u8f91&#xff08;API \u8c03\u7528&#xff09;\u4e2d\u5e72\u51c0\u5730\u5206\u79bb\u51fa\u6765\u3002\u7406\u89e3\u4e86\u8fd9\u4e2a\u4f8b\u5b50&#xff0c;\u88c5\u9970\u5668\u7684\u6838\u5fc3\u601d\u60f3\u5c31\u638c\u63e1\u4e86\u3002<\/p>\n<h4>\u7ec3\u4e60 3&#xff1a;\u751f\u6210\u5668\u7ec3\u4e60 \u2014 \u6587\u4ef6\u89e3\u6790<\/h4>\n<p>&#x1f4a1; \u4ee3\u7801\u8bf4\u660e&#xff1a;\u4f7f\u7528\u751f\u6210\u5668\u548c\u6b63\u5219\u8868\u8fbe\u5f0f&#xff0c;\u5b9e\u73b0\u4e00\u4e2a\u65e5\u5fd7\u6587\u4ef6\u89e3\u6790\u5668\u3002\u901a\u8fc7 yield \u9010\u884c\u4ea7\u51fa\u89e3\u6790\u7ed3\u679c&#xff0c;\u518d\u7528\u7ba1\u9053\u5f0f\u751f\u6210\u5668\u8fdb\u884c\u8fc7\u6ee4\u548c\u7edf\u8ba1&#xff1a;<\/p>\n<p><span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n\u89e3\u6790\u65e5\u5fd7\u6587\u4ef6\u5e76\u63d0\u53d6\u7279\u5b9a\u6a21\u5f0f\u7684\u6570\u636e<br \/>\n&#034;&#034;&#034;<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">parse_log_file<\/span><span class=\"token punctuation\">(<\/span>filepath<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 triple-quoted-string string\">&#034;&#034;&#034;<br \/>\n    \u9010\u884c\u8bfb\u53d6\u65e5\u5fd7\u6587\u4ef6&#xff0c;\u89e3\u6790\u4e3a\u7ed3\u6784\u5316\u6570\u636e<\/p>\n<p>    \u65e5\u5fd7\u683c\u5f0f: [2026-07-21 14:30:00] [INFO] User Alice logged in<br \/>\n    &#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">import<\/span> re<\/p>\n<p>    <span class=\"token comment\"># \u65e5\u5fd7\u884c\u6b63\u5219<\/span><br \/>\n    pattern <span class=\"token operator\">&#061;<\/span> re<span class=\"token punctuation\">.<\/span><span class=\"token builtin\">compile<\/span><span class=\"token punctuation\">(<\/span><br \/>\n        <span class=\"token string\">r&#039;\\\\[(?P&lt;timestamp&gt;[^\\\\]]&#043;)\\\\]\\\\s&#043;&#039;<\/span><br \/>\n        <span class=\"token string\">r&#039;\\\\[(?P&lt;level&gt;[A-Z]&#043;)\\\\]\\\\s&#043;&#039;<\/span><br \/>\n        <span class=\"token string\">r&#039;(?P&lt;message&gt;.&#043;)&#039;<\/span><br \/>\n    <span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span>filepath<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;r&#039;<\/span><span class=\"token punctuation\">,<\/span> encoding<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#039;utf-8&#039;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> f<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> line_num<span class=\"token punctuation\">,<\/span> line <span class=\"token keyword\">in<\/span> <span class=\"token builtin\">enumerate<\/span><span class=\"token punctuation\">(<\/span>f<span class=\"token punctuation\">,<\/span> start<span class=\"token operator\">&#061;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            line <span class=\"token operator\">&#061;<\/span> line<span class=\"token punctuation\">.<\/span>strip<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token keyword\">if<\/span> <span class=\"token keyword\">not<\/span> line<span class=\"token punctuation\">:<\/span><br \/>\n                <span class=\"token keyword\">continue<\/span><br \/>\n            <span class=\"token keyword\">match<\/span> <span class=\"token operator\">&#061;<\/span> pattern<span class=\"token punctuation\">.<\/span><span class=\"token keyword\">match<\/span><span class=\"token punctuation\">(<\/span>line<span class=\"token punctuation\">)<\/span><br \/>\n            <span class=\"token keyword\">if<\/span> <span class=\"token keyword\">match<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                <span class=\"token keyword\">yield<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                    <span class=\"token string\">&#039;line&#039;<\/span><span class=\"token punctuation\">:<\/span> line_num<span class=\"token punctuation\">,<\/span><br \/>\n                    <span class=\"token string\">&#039;timestamp&#039;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token keyword\">match<\/span><span class=\"token punctuation\">.<\/span>group<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;timestamp&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                    <span class=\"token string\">&#039;level&#039;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token keyword\">match<\/span><span class=\"token punctuation\">.<\/span>group<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;level&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                    <span class=\"token string\">&#039;message&#039;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token keyword\">match<\/span><span class=\"token punctuation\">.<\/span>group<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;message&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                <span class=\"token punctuation\">}<\/span><br \/>\n            <span class=\"token keyword\">else<\/span><span class=\"token punctuation\">:<\/span><br \/>\n                <span class=\"token keyword\">yield<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                    <span class=\"token string\">&#039;line&#039;<\/span><span class=\"token punctuation\">:<\/span> line_num<span class=\"token punctuation\">,<\/span><br \/>\n                    <span class=\"token string\">&#039;raw&#039;<\/span><span class=\"token punctuation\">:<\/span> line<span class=\"token punctuation\">,<\/span><br \/>\n                    <span class=\"token string\">&#039;error&#039;<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token string\">&#039;\u89e3\u6790\u5931\u8d25&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n                <span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">filter_errors<\/span><span class=\"token punctuation\">(<\/span>records<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u8fc7\u6ee4\u51fa ERROR \u7ea7\u522b\u7684\u8bb0\u5f55&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> record <span class=\"token keyword\">in<\/span> records<span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> record<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;level&#039;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token string\">&#039;ERROR&#039;<\/span><span class=\"token punctuation\">:<\/span><br \/>\n            <span class=\"token keyword\">yield<\/span> record<\/p>\n<p><span class=\"token keyword\">def<\/span> <span class=\"token function\">count_by_level<\/span><span class=\"token punctuation\">(<\/span>records<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;\u6309\u65e5\u5fd7\u7ea7\u522b\u7edf\u8ba1&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">from<\/span> collections <span class=\"token keyword\">import<\/span> Counter<br \/>\n    <span class=\"token keyword\">return<\/span> Counter<span class=\"token punctuation\">(<\/span>record<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;level&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;PARSE_ERROR&#039;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">for<\/span> record <span class=\"token keyword\">in<\/span> records<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token comment\"># \u521b\u5efa\u6d4b\u8bd5\u65e5\u5fd7\u6587\u4ef6<\/span><br \/>\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">create_test_log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    log_content <span class=\"token operator\">&#061;<\/span> <span class=\"token triple-quoted-string string\">&#034;&#034;&#034;[2026-07-21 10:00:00] [INFO] Application started<br \/>\n[2026-07-21 10:00:05] [DEBUG] Loading config file<br \/>\n[2026-07-21 10:00:10] [INFO] Server listening on port 8080<br \/>\n[2026-07-21 10:01:00] [WARNING] Memory usage exceeds 80%<br \/>\n[2026-07-21 10:02:00] [ERROR] Connection timeout: database<br \/>\n[2026-07-21 10:02:30] [ERROR] Failed to send email notification<br \/>\n[2026-07-21 10:03:00] [INFO] Retry successful<br \/>\n[2026-07-21 10:05:00] [INFO] Application shutdown<br \/>\nmalformed line without proper format<br \/>\n&#034;&#034;&#034;<\/span><br \/>\n    <span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;test_log.txt&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;w&#034;<\/span><span class=\"token punctuation\">,<\/span> encoding<span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;utf-8&#034;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> f<span class=\"token punctuation\">:<\/span><br \/>\n        f<span class=\"token punctuation\">.<\/span>write<span class=\"token punctuation\">(<\/span>log_content<span class=\"token punctuation\">)<\/span><\/p>\n<p><span class=\"token keyword\">if<\/span> __name__ <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token string\">&#034;__main__&#034;<\/span><span class=\"token punctuation\">:<\/span><br \/>\n    create_test_log<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># \u89e3\u6790\u65e5\u5fd7<\/span><br \/>\n    records <span class=\"token operator\">&#061;<\/span> <span class=\"token builtin\">list<\/span><span class=\"token punctuation\">(<\/span>parse_log_file<span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;test_log.txt&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># \u7edf\u8ba1<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#061;&#061;&#061; \u65e5\u5fd7\u7edf\u8ba1 &#061;&#061;&#061;&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    counter <span class=\"token operator\">&#061;<\/span> count_by_level<span class=\"token punctuation\">(<\/span>records<span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> level<span class=\"token punctuation\">,<\/span> count <span class=\"token keyword\">in<\/span> counter<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><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>level<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>count<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> \u6761&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token comment\"># \u663e\u793a\u9519\u8bef<\/span><br \/>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\n&#061;&#061;&#061; \u9519\u8bef\u65e5\u5fd7 &#061;&#061;&#061;&#034;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> error <span class=\"token keyword\">in<\/span> filter_errors<span class=\"token punctuation\">(<\/span>records<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span><br \/>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f&#034;  \u884c <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>error<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;line&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>error<span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;message&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">&#034;<\/span><\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>&#x1f511; \u8981\u70b9\u603b\u7ed3&#xff1a;\u751f\u6210\u5668\u7ba1\u9053\u6a21\u5f0f&#xff08;parse -&gt; filter -&gt; analyze&#xff09;\u5728\u5904\u7406\u5927\u6587\u4ef6\u65f6\u7279\u522b\u6709\u4ef7\u503c\u2014\u2014\u6bcf\u4e00\u884c\u53ea\u88ab\u5904\u7406\u4e00\u6b21&#xff0c;\u6570\u636e\u6d41\u5f0f\u7ecf\u8fc7\u5404\u4e2a\u5904\u7406\u73af\u8282&#xff0c;\u51e0\u4e4e\u4e0d\u5360\u5185\u5b58\u3002\u5efa\u8bae\u5c06\u6b64\u6a21\u5f0f\u7528\u4e8e\u5b9e\u9645\u7684\u65e5\u5fd7\u5206\u6790\u4efb\u52a1\u4e2d\u3002<\/p>\n<hr \/>\n<h3>\u9644\u5f55 A&#xff1a;Python \u5185\u7f6e\u5f02\u5e38\u5c42\u7ea7<\/h3>\n<p>BaseException<br \/>\n\u251c\u2500\u2500 SystemExit<br \/>\n\u251c\u2500\u2500 KeyboardInterrupt<br \/>\n\u251c\u2500\u2500 GeneratorExit<br \/>\n\u2514\u2500\u2500 Exception<br \/>\n    \u251c\u2500\u2500 StopIteration<br \/>\n    \u251c\u2500\u2500 StopAsyncIteration<br \/>\n    \u251c\u2500\u2500 ArithmeticError<br \/>\n    \u2502   \u251c\u2500\u2500 FloatingPointError<br \/>\n    \u2502   \u251c\u2500\u2500 OverflowError<br \/>\n    \u2502   \u2514\u2500\u2500 ZeroDivisionError<br \/>\n    \u251c\u2500\u2500 AssertionError<br \/>\n    \u251c\u2500\u2500 AttributeError<br \/>\n    \u251c\u2500\u2500 BufferError<br \/>\n    \u251c\u2500\u2500 EOFError<br \/>\n    \u251c\u2500\u2500 ImportError<br \/>\n    \u2502   \u2514\u2500\u2500 ModuleNotFoundError<br \/>\n    \u251c\u2500\u2500 LookupError<br \/>\n    \u2502   \u251c\u2500\u2500 IndexError<br \/>\n    \u2502   \u2514\u2500\u2500 KeyError<br \/>\n    \u251c\u2500\u2500 MemoryError<br \/>\n    \u251c\u2500\u2500 NameError<br \/>\n    \u2502   \u2514\u2500\u2500 UnboundLocalError<br \/>\n    \u251c\u2500\u2500 OSError<br \/>\n    \u2502   \u251c\u2500\u2500 BlockingIOError<br \/>\n    \u2502   \u251c\u2500\u2500 ChildProcessError<br \/>\n    \u2502   \u251c\u2500\u2500 ConnectionError<br \/>\n    \u2502   \u251c\u2500\u2500 FileExistsError<br \/>\n    \u2502   \u251c\u2500\u2500 FileNotFoundError<br \/>\n    \u2502   \u251c\u2500\u2500 InterruptedError<br \/>\n    \u2502   \u251c\u2500\u2500 IsADirectoryError<br \/>\n    \u2502   \u251c\u2500\u2500 NotADirectoryError<br \/>\n    \u2502   \u251c\u2500\u2500 PermissionError<br \/>\n    \u2502   \u251c\u2500\u2500 ProcessLookupError<br \/>\n    \u2502   \u2514\u2500\u2500 TimeoutError<br \/>\n    \u251c\u2500\u2500 ReferenceError<br \/>\n    \u251c\u2500\u2500 RuntimeError<br \/>\n    \u2502   \u251c\u2500\u2500 NotImplementedError<br \/>\n    \u2502   \u2514\u2500\u2500 RecursionError<br \/>\n    \u251c\u2500\u2500 SyntaxError<br \/>\n    \u2502   \u2514\u2500\u2500 IndentationError<br \/>\n    \u2502       \u2514\u2500\u2500 TabError<br \/>\n    \u251c\u2500\u2500 SystemError<br \/>\n    \u251c\u2500\u2500 TypeError<br \/>\n    \u251c\u2500\u2500 ValueError<br \/>\n    \u2502   \u2514\u2500\u2500 UnicodeError<br \/>\n    \u2514\u2500\u2500 Warning<\/p>\n<h3>\u9644\u5f55 B&#xff1a;\u63a8\u8350\u5b66\u4e60\u8d44\u6e90<\/h3>\n<h4>\u5728\u7ebf\u8d44\u6e90<\/h4>\n<table>\n<tr>\u8d44\u6e90\u8bf4\u660e\u94fe\u63a5<\/tr>\n<tbody>\n<tr>\n<td>Python \u5b98\u65b9\u6587\u6863<\/td>\n<td>\u6743\u5a01\u53c2\u8003&#xff0c;\u4e2d\u6587\u7248<\/td>\n<td>docs.python.org\/zh-cn<\/td>\n<\/tr>\n<tr>\n<td>\u83dc\u9e1f\u6559\u7a0b<\/td>\n<td>\u4e2d\u6587\u5165\u95e8\u6559\u7a0b<\/td>\n<td>runoob.com\/python3<\/td>\n<\/tr>\n<tr>\n<td>Real Python<\/td>\n<td>\u82f1\u6587\u9ad8\u8d28\u91cf\u6559\u7a0b<\/td>\n<td>realpython.com<\/td>\n<\/tr>\n<tr>\n<td>LeetCode<\/td>\n<td>\u7f16\u7a0b\u7ec3\u4e60<\/td>\n<td>leetcode.cn<\/td>\n<\/tr>\n<tr>\n<td>PyPI<\/td>\n<td>Python \u5305\u7d22\u5f15<\/td>\n<td>pypi.org<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>\u63a8\u8350\u4e66\u7c4d<\/h4>\n<ul>\n<li>\u300aPython \u7f16\u7a0b&#xff1a;\u4ece\u5165\u95e8\u5230\u5b9e\u8df5\u300b &#8211; Eric Matthes&#xff08;\u5165\u95e8\u9996\u9009&#xff09;<\/li>\n<li>\u300a\u6d41\u7545\u7684 Python\u300b &#8211; Luciano Ramalho&#xff08;\u6df1\u5165\u7406\u89e3 Python&#xff09;<\/li>\n<li>\u300aPython Cookbook\u300b &#8211; David Beazley&#xff08;\u5b9e\u6218\u6280\u5de7&#xff09;<\/li>\n<li>\u300aEffective Python\u300b &#8211; Brett Slatkin&#xff08;\u6700\u4f73\u5b9e\u8df5&#xff09;<\/li>\n<\/ul>\n<hr \/>\n<p>&#x1f4dd; \u5b66\u4e60\u5efa\u8bae<\/p>\n<li>\u52a8\u624b\u5b9e\u8df5&#xff1a;\u6bcf\u5b66\u4e00\u4e2a\u6982\u5ff5&#xff0c;\u7acb\u5373\u5199\u4ee3\u7801\u9a8c\u8bc1<\/li>\n<li>\u9605\u8bfb\u9519\u8bef\u4fe1\u606f&#xff1a;Python \u7684\u9519\u8bef\u4fe1\u606f\u5f88\u53cb\u597d&#xff0c;\u4ed4\u7ec6\u9605\u8bfb<\/li>\n<li>\u5584\u7528 REPL&#xff1a;\u4ea4\u4e92\u5f0f\u89e3\u91ca\u5668\u662f\u6d4b\u8bd5\u5c0f\u6bb5\u4ee3\u7801\u7684\u6700\u4f73\u5de5\u5177<\/li>\n<li>\u9605\u8bfb\u4f18\u79c0\u4ee3\u7801&#xff1a;\u5728 GitHub \u4e0a\u627e\u9ad8\u8d28\u91cf\u7684 Python \u9879\u76ee\u5b66\u4e60<\/li>\n<li>\u505a\u9879\u76ee\u9a71\u52a8&#xff1a;\u627e\u4e00\u4e2a\u611f\u5174\u8da3\u7684\u5c0f\u9879\u76ee&#xff0c;\u8fb9\u505a\u8fb9\u5b66<\/li>\n<hr \/>\n<p>\u672c\u6559\u7a0b\u7531 AI \u8f85\u52a9\u751f\u6210&#xff0c;\u5185\u5bb9\u8986\u76d6 Python 3.8&#043; \u6838\u5fc3\u8bed\u6cd5\u3002\u5982\u6709\u758f\u6f0f&#xff0c;\u6b22\u8fce\u6307\u6b63&#xff01;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#x1f40d; Python \u57fa\u7840\u8bed\u6cd5\u8fd9\u4e00\u7bc7\u5c31\u591f\u4e86 \u9002\u7528\u7248\u672c: Python 3.8 \u76ee\u6807\u8bfb\u8005: \u521d\u5b66\u8005\u53ca\u6709\u4e00\u5b9a\u57fa\u7840\u60f3\u8981\u7cfb\u7edf\u590d\u4e60\u7684\u5f00\u53d1\u8005 \u6700\u540e\u66f4\u65b0: 2026-07-21 \u76ee\u5f55<br \/>\nPython \u7b80\u4ecb\u73af\u5883\u642d\u5efa\u4e0e\u7b2c\u4e00\u4e2a\u7a0b\u5e8f\u53d8\u91cf\u4e0e\u6570\u636e\u7c7b\u578b\u8fd0\u7b97\u7b26\u5b57\u7b26\u4e32\u8be6\u89e3\u5217\u8868&#xff08;List&#xff09;\u5143\u7ec4&#xff08;Tuple&#xff09;\u5b57\u5178&#xff08;Dictionary&#xff09;\u96c6\u5408&#xff08;Set&#xff09;\u6761\u4ef6\u5224\u65ad\u5faa\u73af\u8bed\u53e5\u51fd\u6570Lambda \u8868\u8fbe\u5f0f<\/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":[81,190],"topic":[],"class_list":["post-83608","post","type-post","status-publish","format-standard","hentry","category-server","tag-python","tag-190"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Python\u57fa\u7840\u8bed\u6cd5\u6559\u7a0b - \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\/83608.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python\u57fa\u7840\u8bed\u6cd5\u6559\u7a0b - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"&#x1f40d; Python \u57fa\u7840\u8bed\u6cd5\u8fd9\u4e00\u7bc7\u5c31\u591f\u4e86 \u9002\u7528\u7248\u672c: Python 3.8 \u76ee\u6807\u8bfb\u8005: \u521d\u5b66\u8005\u53ca\u6709\u4e00\u5b9a\u57fa\u7840\u60f3\u8981\u7cfb\u7edf\u590d\u4e60\u7684\u5f00\u53d1\u8005 \u6700\u540e\u66f4\u65b0: 2026-07-21 \u76ee\u5f55 Python \u7b80\u4ecb\u73af\u5883\u642d\u5efa\u4e0e\u7b2c\u4e00\u4e2a\u7a0b\u5e8f\u53d8\u91cf\u4e0e\u6570\u636e\u7c7b\u578b\u8fd0\u7b97\u7b26\u5b57\u7b26\u4e32\u8be6\u89e3\u5217\u8868&#xff08;List&#xff09;\u5143\u7ec4&#xff08;Tuple&#xff09;\u5b57\u5178&#xff08;Dictionary&#xff09;\u96c6\u5408&#xff08;Set&#xff09;\u6761\u4ef6\u5224\u65ad\u5faa\u73af\u8bed\u53e5\u51fd\u6570Lambda \u8868\u8fbe\u5f0f\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/83608.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-25T18:37:52+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=\"52 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/83608.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/83608.html\",\"name\":\"Python\u57fa\u7840\u8bed\u6cd5\u6559\u7a0b - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-07-25T18:37:52+00:00\",\"dateModified\":\"2026-07-25T18:37:52+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/83608.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/83608.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/83608.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python\u57fa\u7840\u8bed\u6cd5\u6559\u7a0b\"}]},{\"@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":"Python\u57fa\u7840\u8bed\u6cd5\u6559\u7a0b - \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\/83608.html","og_locale":"zh_CN","og_type":"article","og_title":"Python\u57fa\u7840\u8bed\u6cd5\u6559\u7a0b - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"&#x1f40d; Python \u57fa\u7840\u8bed\u6cd5\u8fd9\u4e00\u7bc7\u5c31\u591f\u4e86 \u9002\u7528\u7248\u672c: Python 3.8 \u76ee\u6807\u8bfb\u8005: \u521d\u5b66\u8005\u53ca\u6709\u4e00\u5b9a\u57fa\u7840\u60f3\u8981\u7cfb\u7edf\u590d\u4e60\u7684\u5f00\u53d1\u8005 \u6700\u540e\u66f4\u65b0: 2026-07-21 \u76ee\u5f55 Python \u7b80\u4ecb\u73af\u5883\u642d\u5efa\u4e0e\u7b2c\u4e00\u4e2a\u7a0b\u5e8f\u53d8\u91cf\u4e0e\u6570\u636e\u7c7b\u578b\u8fd0\u7b97\u7b26\u5b57\u7b26\u4e32\u8be6\u89e3\u5217\u8868&#xff08;List&#xff09;\u5143\u7ec4&#xff08;Tuple&#xff09;\u5b57\u5178&#xff08;Dictionary&#xff09;\u96c6\u5408&#xff08;Set&#xff09;\u6761\u4ef6\u5224\u65ad\u5faa\u73af\u8bed\u53e5\u51fd\u6570Lambda \u8868\u8fbe\u5f0f","og_url":"https:\/\/www.wsisp.com\/helps\/83608.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-07-25T18:37:52+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"52 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/83608.html","url":"https:\/\/www.wsisp.com\/helps\/83608.html","name":"Python\u57fa\u7840\u8bed\u6cd5\u6559\u7a0b - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-07-25T18:37:52+00:00","dateModified":"2026-07-25T18:37:52+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/83608.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/83608.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/83608.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"Python\u57fa\u7840\u8bed\u6cd5\u6559\u7a0b"}]},{"@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\/83608","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=83608"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/83608\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=83608"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=83608"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=83608"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=83608"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}