{"id":375,"date":"2022-02-09T11:32:54","date_gmt":"2022-02-09T03:32:54","guid":{"rendered":"http:\/\/47.98.165.52\/?p=375"},"modified":"2022-02-09T14:42:42","modified_gmt":"2022-02-09T06:42:42","slug":"%e8%a3%85%e9%a5%b0%e5%99%a8","status":"publish","type":"post","link":"\/?p=375","title":{"rendered":"\u88c5\u9970\u5668"},"content":{"rendered":"<h2>Python\u88c5\u9970\u5668<\/h2>\n<p>Python\u88c5\u9970\u5668\u7684\u4f5c\u7528\u662f\u4f7f\u51fd\u6570\u5305\u88c5\u4e0e\u65b9\u6cd5\u5305\u88c5\uff08\u4e00\u4e2a\u51fd\u6570\uff0c\u63a5\u6536\u51fd\u6570\u5e76\u8fd4\u56de\u5176\u589e\u5f3a\u51fd\u6570\uff09\u53d8\u5f97\u66f4\u5bb9\u6613\u6708\u5ea6\u548c\u7406\u89e3\u3002\u6700\u521d\u7684\u573a\u666f\u662f\u5728\u65b9\u6cd5\u5b9a\u4e49\u7684\u5f00\u5934\u80fd\u591f\u5c06\u5176\u5b9a\u4e49\u4e3a\u7c7b\u65b9\u6cd5\u6216\u9759\u6001\u65b9\u6cd5\u3002\u5982\u679c\u4e0d\u4f7f\u7528\u88c5\u9970\u5668\u8bed\u6cd5\u7684\u8bdd\uff0c\u5b9a\u4e49\u53ef\u80fd\u4f1a\u975e\u5e38\u7a00\u758f\uff0c\u5e76\u4e14\u4e0d\u65ad\u91cd\u590d\uff1a<\/p>\n<pre><code class=\"language-python\">class WithoutDecorators:\n    def some_static_method():\n        print(&quot;this is static method&quot;)\n    some_static_method = staticmethod(some_static_method)\n    def some_class_method(cls):\n        print(&quot;this is class method&quot;)\n    some_class_method = classmethod(some_class_method)<\/code><\/pre>\n<h2>\u95ed\u5305<\/h2>\n<pre><code class=\"language-python\">def test(number):\n\n    # \u5728\u51fd\u6570\u5185\u90e8\u518d\u5b9a\u4e49\u4e00\u4e2a\u51fd\u6570\uff0c\u5e76\u4e14\u8fd9\u4e2a\u51fd\u6570\u7528\u5230\u4e86\u5916\u8fb9\u51fd\u6570\u7684\u53d8\u91cf\uff0c\u90a3\u4e48\u5c06\u8fd9\u4e2a\u51fd\u6570\u4ee5\u53ca\u7528\u5230\u7684\u4e00\u4e9b\u53d8\u91cf\u79f0\u4e4b\u4e3a\u95ed\u5305\n    def test_in(number_in):\n        print(&quot;in test_in \u51fd\u6570, number_in is %d&quot; % number_in)\n        return number+number_in\n    # \u5176\u5b9e\u8fd9\u91cc\u8fd4\u56de\u7684\u5c31\u662f\u95ed\u5305\u7684\u7ed3\u679c\n    return test_in\n\na = test(1)\nb = test(1)\nprint(a(2))\nprint(b)<\/code><\/pre>\n<p>\u4fee\u6539\u5916\u90e8\u51fd\u6570\u7684\u53d8\u91cf<br \/>\n<strong>nonlocal<\/strong>\u58f0\u660e\u7684\u53d8\u91cf\u4e0d\u662f\u5c40\u90e8\u53d8\u91cf,\u4e5f\u4e0d\u662f\u5168\u5c40\u53d8\u91cf,\u800c\u662f\u5916\u90e8\u5d4c\u5957\u51fd\u6570\u5185\u7684\u53d8\u91cf\u3002<br \/>\n\u4f7f\u7528<strong>nolocal<\/strong>\u5bf9\u95ed\u5305\u4e2d\u7684\u53d8\u91cf\u8fdb\u884c\u7c7b\u4f3cglobal\u7684\u58f0\u660e<\/p>\n<pre><code class=\"language-python\">def counter(start=0):\n    def incr():\n\n        nonlocal start\n        start += 1\n        return start\n    return incr\na = counter(2)\nprint(a())<\/code><\/pre>\n<h2>\u88c5\u9970\u5668\u7b80\u5355\u793a\u4f8b<\/h2>\n<h3>\u5bf9\u65e0\u53c2\u6570\u3001\u65e0\u8fd4\u56de\u503c\u7684\u51fd\u6570\u8fdb\u884c\u88c5\u9970<\/h3>\n<p><strong>\u6765\u7edf\u8ba1\u4e00\u4e2a\u51fd\u6570\u7684\u8fd0\u884c\u65f6\u95f4<\/strong><\/p>\n<pre><code class=\"language-python\">import time\n\ndef set_func(func):\n    def call_func():\n        start_time = time.time() # \u5f00\u59cb\u7684\u6267\u884c\u65f6\u95f4\n        func()\n        stop_time = time.time() # \u7ec8\u6b62\u7684\u6267\u884c\u65f6\u95f4\n        print(&quot;alltimes::: %f&quot; % (stop_time - start_time))\n    return call_func\n\n@set_func\ndef test1():\n    print(&quot;----test1----&quot;)\n    for i in range(100000000):\n        pass\n\ntest1()<\/code><\/pre>\n<p>\u5982\u4e0d\u52a0<code>@set_func<\/code>\uff0c\u5373\u7b80\u5355\u7684\u51fd\u6570\u8c03\u7528\uff0c\u53ea\u4f1a\u6253\u5370<code>----test1----<\/code>,<br \/>\n\u52a0\u4e0a\u88c5\u9970\u5668\u4f5c\u7528\uff0c\u5219\u589e\u52a0\u4e86\u65f6\u95f4\u7edf\u8ba1\u529f\u80fd\uff1a<\/p>\n<pre><code class=\"language-python\">In [43]: runfile(&#039;C:\/Users\/Administrator\/.spyder-py3\/temp.py&#039;, wdir=&#039;C:\/Users\/Administrator\/.spyder-py3&#039;)\n----test1----\nalltimes::: 2.015618<\/code><\/pre>\n<h3>\u5bf9\u6709\u53c2\u6570\u3001\u65e0\u8fd4\u56de\u503c\u7684\u51fd\u6570\u8fdb\u884c\u88c5\u9970<\/h3>\n<pre><code class=\"language-python\">import time\n\ndef set_func(func):\n    def call_func(num): # \u8fd9\u91cc\u9700\u8981\u52a0\u53c2\u6570\n        start_time = time.time() \n        func(num) # \u8fd9\u91cc\u9700\u8981\u52a0\u53c2\u6570\n        stop_time = time.time()\n        print(&quot;alltimes::: %f&quot; % (stop_time - start_time))\n    return call_func\n\n@set_func\ndef test1(num): # \u8fd9\u91cc\u52a0\u4e86\u53c2\u6570\n    print(&quot;----test1----%d&quot; % num) \ntest1(1)<\/code><\/pre>\n<h3>\u5bf9\u6709\u4e0d\u5b9a\u957f\u53c2\u6570\u7684\u51fd\u6570\u8fdb\u884c\u88c5\u9970<\/h3>\n<pre><code class=\"language-python\">from time import ctime, sleep\n\ndef timefunc(func):\n    def wrapped_func(*args, **kwargs):\n        print(&quot;%s called at %s&quot;%(func.__name__,ctime()))\n        print(kwargs)\n        func(*args, **kwargs)\n    return wrapped_func\n\n@timefunc\ndef foo(a, b, c,**kwargs):\n    print(a+b+c)\n\nfoo(3, 5, 7,d=2,e=1)\nsleep(2)\nfoo(2, 4, 8,d=3,e=2)<\/code><\/pre>\n<p>\u8fd0\u884c\u7ed3\u679c\uff1a<\/p>\n<pre><code class=\"language-python\">In [55]: runfile(&#039;C:\/Users\/Administrator\/.spyder-py3\/temp.py&#039;, wdir=&#039;C:\/Users\/Administrator\/.spyder-py3&#039;)\nfoo called at Wed Feb  9 14:37:39 2022\n{&#039;d&#039;: 2, &#039;e&#039;: 1}\n15\nfoo called at Wed Feb  9 14:37:41 2022\n{&#039;d&#039;: 3, &#039;e&#039;: 2}\n14<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Python\u88c5\u9970\u5668 Python\u88c5\u9970\u5668\u7684\u4f5c\u7528\u662f\u4f7f\u51fd\u6570\u5305\u88c5\u4e0e\u65b9\u6cd5\u5305\u88c5\uff08\u4e00\u4e2a\u51fd\u6570\uff0c\u63a5\u6536\u51fd\u6570\u5e76\u8fd4\u56de\u5176\u589e\u5f3a\u51fd\u6570\uff09\u53d8\u5f97\u66f4\u5bb9\u6613\u6708\u5ea6\u548c\u7406\u89e3\u3002\u6700\u521d\u7684\u573a\u666f   \u2026 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0},"categories":[34],"tags":[],"_links":{"self":[{"href":"\/index.php?rest_route=\/wp\/v2\/posts\/375"}],"collection":[{"href":"\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=375"}],"version-history":[{"count":5,"href":"\/index.php?rest_route=\/wp\/v2\/posts\/375\/revisions"}],"predecessor-version":[{"id":382,"href":"\/index.php?rest_route=\/wp\/v2\/posts\/375\/revisions\/382"}],"wp:attachment":[{"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=375"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=375"},{"taxonomy":"post_tag","embeddable":true,"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=375"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}