python中对 函数 闭包 的理解
最近学到 函数 闭包的时候,似懂非懂、迷迷糊糊的样子,很是头疼,今天就特意查了下关于闭包的知识,现将我自己的理解分享如下!
一、python 闭包定义
首先,关于闭包,百度百科是这样解释的:
闭包是指可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)。“闭包” 一词来源于以下两者的结合:要执行的代码块(由于自由变量被包含在代码块中,这些自由变量以及它们引用的对象没有被释放)和为自由变量提供绑定的计算环境(作用域)。
当然,这种学术性的解释对于我们小白来说,只能是更加的晦涩难懂。
从python对闭包的定义来说:
必须是内部定义的函数,该函数包含对外部作用域而不是全局作用域名字的引用!
可能这么说还是有点难理解,那咱们换一种方式理解:
python中的闭包从表现形式上可以解释为:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包.
举个简单的例子来说明,可能会好理解一些:
def f1():
x = 12
def f2():
print(x)
return f2
f = f1()
print(type(f))
print(f)
f()
代码执行之后的结果如下:
<class 'function'>
<function f1.<locals>.f2 at 0x00000000028EC9D8>
12
结合这段简单的代码和定义来说明闭包:
如果在一个内部函数里:f2()就是这个内部函数,
对在外部作用域(但不是在全局作用域)的变量进行引用:x就是被引用的变量,x在外部作用域f1()里面,但不在全局作用域里。
则这个内部函数f2()就是一个闭包。
从函数的定义角度出发:函数可以嵌套使用,可以把函数当成参数或返回值进行传递,函数也可以作为容器类型的元素,作为一个变量可以去赋值。
在这个简单的例子当中,函数f1()中嵌套定义另一个函数f2(),内部的函数f2()引用了外部函数f1()的变量,函数f2()被当成夹带外部变量的 对象 返回给f1(),这样就形成一个闭包函数。
实例化输出的时候 定义的 f=f1()中, 其实 f 就是函数f2()(不准确但是好理解)。这里需要注意的是,f 是一个函数名,加上()就能当作函数来用了。(因为f2()返回的是一串函数执行过程的包)
二、闭包的用途
1、闭包就是为了不动原函数里面的代码,还要给它增加‘新功能’的一种手段。
最直接的例子就是爬取网站代码的闭包函数,不使用的时候,不用执行闭包函数,当需要爬取网站数据时,直接将定义的函数名后加上(),当作函数来使用。
from urllib.request import urlopen
def get(url):
def index():
return urlopen(url).read()
return index python=get('http://www.python.org')
print(python) #主函数的内存
print(python()) #查看爬取网址之后,获得的网址的具体内容
print(python.__closure__[0].cell_contents) #将下载下来的内容翻译,以网址的形式显示下载的网站。
执行结果如下:
<function get.<locals>.index at 0x0000000002E45B70>
b'<!doctype html>\n<!--[if lt IE 7]> <html class="no-js ie6 lt-ie7 lt-ie8 lt-ie9"> <![endif]-->\n<!--[if IE 7]> <html class="no-js ie7 lt-ie8 lt-ie9"> <![endif]-->\n<!--[if IE 8]> <html class="no-js ie8 lt-ie9"> <![endif]-->\n<!--[if gt IE 8]><!--><html class="no-js" lang="en" dir="ltr"> <!--<![endif]-->\n\n<head>\n <meta charset="utf-8">\n <meta http-equiv="X-UA-Compatible" content="IE=edge">\n\n <link rel="prefetch" href="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js">\n\n <meta name="application-name" content="Python.org">\n <meta name="msapplication-tooltip" content="The official home of the Python Programming Language">\n <meta name="apple-mobile-web-app-title" content="Python.org">\n <meta name="apple-mobile-web-app-capable" content="yes">\n <meta name="apple-mobile-web-app-status-bar-style" content="black">\n\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\n <meta name="HandheldFriendly" content="True">\n <meta name="format-detection" content="telephone=no">\n <meta http-equiv="cleartype" content="on">\n <meta http-equiv="imagetoolbar" content="false">\n\n <script src="/static/js/libs/modernizr.js"></script>\n\n <link href="/static/stylesheets/style.css" rel="stylesheet" type="text/css" title="default" />\n <link href="/static/stylesheets/mq.css" rel="stylesheet" type="text/css" media="not print, braille, embossed, speech, tty" />\n \n\n <!--[if (lte IE 8)&(!IEMobile)]>\n <link href="/static/stylesheets/no-mq.css" rel="stylesheet" type="text/css" media="screen" />\n \n \n <![endif]-->\n\n \n <link rel="icon" type="image/x-icon" href="/static/favicon.ico">\n <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/static/apple-touch-icon-144x144-precomposed.png">\n <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/static/apple-touch-icon-114x114-precomposed.png">\n <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/static/apple-touch-icon-72x72-precomposed.png">\n <link rel="apple-touch-icon-precomposed" href="/static/apple-touch-icon-precomposed.png">\n <link rel="apple-touch-icon" href="/static/apple-touch-icon-precomposed.png">\n\n \n <meta name="msapplication-TileImage" content="/static/metro-icon-144x144-precomposed.png"><!-- white shape -->\n <meta name="msapplication-TileColor" content="#3673a5"><!-- python blue -->\n <meta name="msapplication-navbutton-color" content="#3673a5">\n\n <title>Welcome to Python.org</title>\n\n <meta name="description" content="The official home of the Python Programming Language">\n <meta name="keywords" content="Python programming language object oriented web free open source software license documentation download community">\n\n \n <meta property="og:type" content="website">\n <meta property="og:site_name" content="Python.org">\n <meta property="og:title" content="Welcome to Python.org">\n <meta property="og:description" content="The official home of the Python Programming Language">\n \n <meta property="og:image" content="https://www.python.org/static/opengraph-icon-200x200.png">\n <meta property="og:image:secure_url" content="https://www.python.org/static/opengraph-icon-200x200.png">\n \n <meta property="og:url" content="https://www.python.org/">\n\n <link rel="author" href="/static/humans.txt">\n\n \n\n \n <script type="application/ld+json">\n {\n "@context": "http://schema.org",\n "@type": "WebSite",\n "url": "https://www.python.org/",\n "potentialAction": {\n "@type": "SearchAction",\n "target": "https://www.python.org/search/?q={search_term_string}",\n "query-input": "required name=search_term_string"\n }\n }\n </script>\n\n \n <script type="text/javascript">\n var _gaq = _gaq || [];\n _gaq.push([\'_setAccount\', \'UA-39055973-1\']);\n _gaq.push([\'_trackPageview\']);\n\n (function() {\n var ga = document.createElement(\'script\'); ga.type = \'text/javascript\'; ga.async = true;\n ga.src = (\'https:\' == document.location.protocol ? \'https://ssl\' : \'http://www\') + \'.google-analytics.com/ga.js\';\n var s = document.getElementsByTagName(\'script\')[0]; s.parentNode.insertBefore(ga, s);\n })();\n </script>\n \n</head>\n\n<body class="python home" id="homepage">\n\n <div id="touchnav-wrapper">\n\n <div id="nojs" class="do-not-print">\n <p><strong>Notice:</strong> While Javascript is not essential for this website, your interaction with the content will be limited. Please turn Javascript on for the full experience. </p>\n </div>\n\n <!--[if lt IE 8]>\n <div id="oldie-warning" class="do-not-print">\n <p><strong>Notice:</strong> Your browser is <em>ancient</em> and <a href="http://www.ie6countdown.com/">Microsoft agrees</a>. <a href="http://browsehappy.com/">Upgrade to a different browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">install Google Chrome Frame</a> to experience a better web.</p>\n </div>\n <![endif]-->\n\n <!-- Sister Site Links -->\n <div id="top" class="top-bar do-not-print">\n\n <nav class="meta-navigation container" role="navigation">\n\n \n <div class="skip-link screen-reader-text">\n <a href="#content" title="Skip to content">Skip to content</a>\n </div>\n\n \n <a id="close-python-network" class="jump-link" href="#python-network" aria-hidden="true">\n <span aria-hidden="true" class="icon-arrow-down"><span>▼</span></span> Close\n </a>\n\n \n\n<ul class="menu" role="tree">\n \n <li class="python-meta current_item selectedcurrent_branch selected">\n <a href="/" title="The Python Programming Language" class="current_item selectedcurrent_branch selected">Python</a>\n </li>\n \n <li class="psf-meta ">\n <a href="/psf-landing/" title="The Python Software Foundation" >PSF</a>\n </li>\n \n <li class="docs-meta ">\n <a href="https://docs.python.org" title="Python Documentation" >Docs</a>\n </li>\n \n <li class="pypi-meta ">\n <a href="https://pypi.python.org/" title="Python Package Index" >PyPI</a>\n </li>\n \n <li class="jobs-meta ">\n <a href="/jobs/" title="Python Job Board" >Jobs</a>\n </li>\n \n <li class="shop-meta ">\n <a href="/community/" title="Python Community" >Community</a>\n </li>\n \n</ul>\n\n\n <a id="python-network" class="jump-link" href="#top" aria-hidden="true">\n <span aria-hidden="true" class="icon-arrow-up"><span>▲</span></span> The Python Network\n </a>\n\n </nav>\n\n </div>\n\n <!-- Header elements -->\n <header class="main-header" role="banner">\n <div class="container">\n\n <h1 class="site-headline">\n <a href="/"><img class="python-logo" src="/static/img/python-logo.png" alt="python™"></a>\n </h1>\n\n <div class="options-bar do-not-print">\n\n \n <a id="site-map-link" class="jump-to-menu" href="#site-map"><span class="menu-icon">≡</span> Menu</a><form class="search-the-site" action="/search/" method="get">\n <fieldset title="Search Python.org">\n\n <span aria-hidden="true" class="icon-search"></span>\n\n <label class="screen-reader-text" for="id-search-field">Search This Site</label>\n <input id="id-search-field" name="q" type="search" role="textbox" class="search-field" placeholder="Search" value="" tabindex="1">\n\n <button type="submit" name="submit" id="submit" class="search-button" title="Submit this Search" tabindex="3">\n GO\n </button>\n\n \n <!--[if IE]><input type="text" style="display: none;" disabled="disabled" size="1" tabindex="4"><![endif]-->\n\n </fieldset>\n </form><span class="breaker"></span><div class="adjust-font-size" aria-hidden="true">\n <ul class="navigation menu" aria-label="Adjust Text Size on Page">\n <li class="tier-1 last" aria-haspopup="true">\n <a href="#" class="action-trigger"><strong><small>A</small> A</strong></a>\n <ul class="subnav menu">\n <li class="tier-2 element-1" role="treeitem"><a class="text-shrink" title="Make Text Smaller" href="javascript:;">Smaller</a></li>\n <li class="tier-2 element-2" role="treeitem"><a class="text-grow" title="Make Text Larger" href="javascript:;">Larger</a></li>\n <li class="tier-2 element-3" role="treeitem"><a class="text-reset" title="Reset any font size changes I have made" href="javascript:;">Reset</a></li>\n </ul>\n </li>\n </ul>\n </div><div class="winkwink-nudgenudge">\n <ul class="navigation menu" aria-label="Social Media Navigation">\n <li class="tier-1 last" aria-haspopup="true">\n <a href="#" class="action-trigger">Socialize</a>\n <ul class="subnav menu">\n <li class="tier-2 element-1" role="treeitem"><a href="http://plus.google.com/+Python"><span aria-hidden="true" class="icon-google-plus"></span>Google+</a></li>\n <li class="tier-2 element-2" role="treeitem"><a href="http://www.facebook.com/pythonlang?fref=ts"><span aria-hidden="true" class="icon-facebook"></span>Facebook</a></li>\n <li class="tier-2 element-3" role="treeitem"><a href="http://twitter.com/ThePSF"><span aria-hidden="true" class="icon-twitter"></span>Twitter</a></li>\n <li class="tier-2 element-4" role="treeitem"><a href="/community/irc/"><span aria-hidden="true" class="icon-freenode"></span>Chat on IRC</a></li>\n </ul>\n </li>\n </ul>\n </div><div class="account-signin">\n <ul class="navigation menu" aria-label="Social Media Navigation">\n <li class="tier-1 last" aria-haspopup="true">\n \n <a href="/accounts/login/" title="Sign Up or Sign In to Python.org">Sign In</a>\n <ul class="subnav menu">\n <li class="tier-2 element-1" role="treeitem"><a href="/accounts/signup/">Sign Up / Register</a></li>\n <li class="tier-2 element-2" role="treeitem"><a href="/accounts/login/">Sign In</a></li>\n </ul>\n \n </li>\n </ul>\n </div>\n\n </div><!-- end options-bar -->\n\n <nav id="mainnav" class="python-navigation main-navigation do-not-print" role="navigation">\n \n \n<ul class="navigation menu" role="menubar" aria-label="Main Navigation">\n \n \n \n <li id="about" class="tier-1 element-1 " aria-haspopup="true">\n <a href="/about/" title="" class="">About</a>\n \n \n\n<ul class="subnav menu" role="menu" aria-hidden="true">\n \n <li class="tier-2 element-1" role="treeitem"><a href="/about/apps/" title="">Applications</a></li>\n \n <li class="tier-2 element-2" role="treeitem"><a href="/about/quotes/" title="">Quotes</a></li>\n \n <li class="tier-2 element-3" role="treeitem"><a href="/about/gettingstarted/" title="">Getting Started</a></li>\n \n <li class="tier-2 element-4" role="treeitem"><a href="/about/help/" title="">Help</a></li>\n \n <li class="tier-2 element-5" role="treeitem"><a href="http://brochure.getpython.info/" title="">Python Brochure</a></li>\n \n</ul>\n\n \n </li>\n \n \n \n <li id="downloads" class="tier-1 element-2 " aria-haspopup="true">\n <a href="/downloads/" title="" class="">Downloads</a>\n \n \n\n<ul class="subnav menu" role="menu" aria-hidden="true">\n \n <li class="tier-2 element-1" role="treeitem"><a href="/downloads/" title="">All releases</a></li>\n \n <li class="tier-2 element-2" role="treeitem"><a href="/downloads/source/" title="">Source code</a></li>\n \n <li class="tier-2 element-3" role="treeitem"><a href="/downloads/windows/" title="">Windows</a></li>\n \n <li class="tier-2 element-4" role="treeitem"><a href="/downloads/mac-osx/" title="">Mac OS X</a></li>\n \n <li class="tier-2 element-5" role="treeitem"><a href="/download/other/" title="">Other Platforms</a></li>\n \n <li class="tier-2 element-6" role="treeitem"><a href="https://docs.python.org/3/license.html" title="">License</a></li>\n \n <li class="tier-2 element-7" role="treeitem"><a href="/download/alternatives" title="">Alternative Implementations</a></li>\n \n</ul>\n\n \n </li>\n \n \n \n <li id="documentation" class="tier-1 element-3 " aria-haspopup="true">\n <a href="/doc/" title="" class="">Documentation</a>\n \n \n\n<ul class="subnav menu" role="menu" aria-hidden="true">\n \n <li class="tier-2 element-1" role="treeitem"><a href="/doc/" title="">Docs</a></li>\n \n <li class="tier-2 element-2" role="treeitem"><a href="/doc/av" title="">Audio/Visual Talks</a></li>\n \n <li class="tier-2 element-3" role="treeitem"><a href="https://wiki.python.org/moin/BeginnersGuide" title="">Beginner's Guide</a></li>\n \n <li class="tier-2 element-4" role="treeitem"><a href="https://docs.python.org/devguide/" title="">Developer's Guide</a></li>\n \n <li class="tier-2 element-5" role="treeitem"><a href="https://docs.python.org/faq/" title="">FAQ</a></li>\n \n <li class="tier-2 element-6" role="treeitem"><a href="http://wiki.python.org/moin/Languages" title="">Non-English Docs</a></li>\n \n <li class="tier-2 element-7" role="treeitem"><a href="http://python.org/dev/peps/" title="">PEP Index</a></li>\n \n <li class="tier-2 element-8" role="treeitem"><a href="https://wiki.python.org/moin/PythonBooks" title="">Python Books</a></li>\n \n</ul>\n\n \n </li>\n \n \n \n <li id="community" class="tier-1 element-4 " aria-haspopup="true">\n <a href="/community/" title="" class="">Community</a>\n \n \n\n<ul class="subnav menu" role="menu" aria-hidden="true">\n \n <li class="tier-2 element-1" role="treeitem"><a href="/community/diversity/" title="">Diversity</a></li>\n \n <li class="tier-2 element-2" role="treeitem"><a href="/community/irc/" title="">IRC</a></li>\n \n <li class="tier-2 element-3" role="treeitem"><a href="/community/lists/" title="">Mailing Lists</a></li>\n \n <li class="tier-2 element-4" role="treeitem"><a href="/community/workshops/" title="">Python Conferences</a></li>\n \n <li class="tier-2 element-5" role="treeitem"><a href="/community/sigs/" title="">Special Interest Groups</a></li>\n \n <li class="tier-2 element-6" role="treeitem"><a href="https://wiki.python.org/moin/" title="">Python Wiki</a></li>\n \n <li class="tier-2 element-7" role="treeitem"><a href="/community/logos/" title="">Python Logo</a></li>\n \n <li class="tier-2 element-8" role="treeitem"><a href="/community/merchandise/" title="">Merchandise</a></li>\n \n <li class="tier-2 element-9" role="treeitem"><a href="/community/awards" title="">Community Awards</a></li>\n \n</ul>\n\n \n </li>\n \n \n \n <li id="success-stories" class="tier-1 element-5 " aria-haspopup="true">\n <a href="/about/success/" title="success-stories" class="">Success Stories</a>\n \n \n\n<ul class="subnav menu" role="menu" aria-hidden="true">\n \n <li class="tier-2 element-1" role="treeitem"><a href="/about/success/#arts" title="">Arts</a></li>\n \n <li class="tier-2 element-2" role="treeitem"><a href="/about/success/#business" title="">Business</a></li>\n \n <li class="tier-2 element-3" role="treeitem"><a href="/about/success/#education" title="">Education</a></li>\n \n <li class="tier-2 element-4" role="treeitem"><a href="/about/success/#engineering" title="">Engineering</a></li>\n \n <li class="tier-2 element-5" role="treeitem"><a href="/about/success/#government" title="">Government</a></li>\n \n <li class="tier-2 element-6" role="treeitem"><a href="/about/success/#scientific" title="">Scientific</a></li>\n \n <li class="tier-2 element-7" role="treeitem"><a href="/about/success/#software-development" title="">Software Development</a></li>\n \n</ul>\n\n \n </li>\n \n \n \n <li id="news" class="tier-1 element-6 " aria-haspopup="true">\n <a href="/blogs/" title="News from around the Python world" class="">News</a>\n \n \n\n<ul class="subnav menu" role="menu" aria-hidden="true">\n \n <li class="tier-2 element-1" role="treeitem"><a href="/blogs/" title="Python Insider Blog Posts">Python News</a></li>\n \n <li class="tier-2 element-2" role="treeitem"><a href="http://planetpython.org/" title="Planet Python">Community News</a></li>\n \n <li class="tier-2 element-3" role="treeitem"><a href="http://pyfound.blogspot.com/" title="PSF Blog">PSF News</a></li>\n \n <li class="tier-2 element-4" role="treeitem"><a href="http://pycon.blogspot.com/" title="PyCon Blog">PyCon News</a></li>\n \n</ul>\n\n \n </li>\n \n \n \n <li id="events" class="tier-1 element-7 " aria-haspopup="true">\n <a href="/events/" title="" class="">Events</a>\n \n \n\n<ul class="subnav menu" role="menu" aria-hidden="true">\n \n <li class="tier-2 element-1" role="treeitem"><a href="/events/python-events" title="">Python Events</a></li>\n \n <li class="tier-2 element-2" role="treeitem"><a href="/events/python-user-group/" title="">User Group Events</a></li>\n \n <li class="tier-2 element-3" role="treeitem"><a href="/events/python-events/past/" title="">Python Events Archive</a></li>\n \n <li class="tier-2 element-4" role="treeitem"><a href="/events/python-user-group/past/" title="">User Group Events Archive</a></li>\n \n <li class="tier-2 element-5" role="treeitem"><a href="https://wiki.python.org/moin/PythonEventsCalendar#Submitting_an_Event" title="">Submit an Event</a></li>\n \n</ul>\n\n \n </li>\n \n \n \n \n \n</ul>\n\n \n </nav>\n\n <div class="header-banner "> <!-- for optional "do-not-print" class -->\n \n <div id="dive-into-python" class="flex-slideshow slideshow">\n\n <ul class="launch-shell menu" id="launch-shell">\n <li>\n <a class="button prompt" id="start-shell" data-shell-container="#dive-into-python" href="/shell/">>_\n <span class="message">Launch Interactive Shell</span>\n </a>\n </li>\n </ul>\n\n <ul class="slides menu">\n \n <li>\n <div class="slide-code"><pre><code><span class="comment"># Python 3: Fibonacci series up to n</span>\r\n>>> def fib(n):\r\n>>> a, b = 0, 1\r\n>>> while a < n:\r\n>>> print(a, end=\' \')\r\n>>> a, b = b, a+b\r\n>>> print()\r\n>>> fib(1000)\r\n<span class="output">0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987</span></code></pre></div>\n <div class="slide-copy"><h1>Functions Defined</h1>\r\n<p>The core of extensible programming is defining functions. Python allows mandatory and optional arguments, keyword arguments, and even arbitrary argument lists. <a href="//docs.python.org/3/tutorial/controlflow.html#defining-functions">More about defining functions in Python 3</a></p></div>\n </li>\n \n <li>\n <div class="slide-code"><pre><code><span class="comment"># Python 3: List comprehensions</span>\r\n>>> fruits = [\'Banana\', \'Apple\', \'Lime\']\r\n>>> loud_fruits = [fruit.upper() for fruit in fruits]\r\n>>> print(loud_fruits)\r\n<span class="output">[\'BANANA\', \'APPLE\', \'LIME\']</span>\r\n\r\n<span class="comment"># List and the enumerate function</span>\r\n>>> list(enumerate(fruits))\r\n<span class="output">[(0, \'Banana\'), (1, \'Apple\'), (2, \'Lime\')]</span></code></pre></div>\n <div class="slide-copy"><h1>Compound Data Types</h1>\r\n<p>Lists (known as arrays in other languages) are one of the compound data types that Python understands. Lists can be indexed, sliced and manipulated with other built-in functions. <a href="//docs.python.org/3/tutorial/introduction.html#lists">More about lists in Python 3</a></p></div>\n </li>\n \n <li>\n <div class="slide-code"><pre><code><span class="comment"># Python 3: Simple arithmetic</span>\r\n>>> 1 / 2\r\n<span class="output">0.5</span>\r\n>>> 2 ** 3\r\n<span class="output">8</span>\r\n>>> 17 / 3 <span class="comment"># classic division returns a float</span>\r\n<span class="output">5.666666666666667</span>\r\n>>> 17 // 3 <span class="comment"># floor division</span>\r\n<span class="output">5</span></code></pre></div>\n <div class="slide-copy"><h1>Intuitive Interpretation</h1>\r\n<p>Calculations are simple with Python, and expression syntax is straightforward: the operators <code>+</code>, <code>-</code>, <code>*</code> and <code>/</code> work as expected; parentheses <code>()</code> can be used for grouping. <a href="http://docs.python.org/3/tutorial/introduction.html#using-python-as-a-calculator">More about simple math functions in Python 3</a>.</p></div>\n </li>\n \n <li>\n <div class="slide-code"><pre><code><span class="comment"># Python 3: Simple output (with Unicode)</span>\r\n>>> print("Hello, I\'m Python!")\r\n<span class="output">Hello, I\'m Python!</span>\r\n\r\n<span class="comment"># Input, assignment</span>\r\n>>> name = input(\'What is your name?\\n\')\r\n>>> print(\'Hi, %s.\' % name)\r\n<span class="output">What is your name?\r\nPython\r\nHi, Python.</span></code></pre></div>\n <div class="slide-copy"><h1>Quick & Easy to Learn</h1>\r\n<p>Experienced programmers in any other language can pick up Python very quickly, and beginners find the clean syntax and indentation structure easy to learn. <a href="//docs.python.org/3/tutorial/">Whet your appetite</a> with our Python 3 overview.</p>\r\n </div>\n </li>\n \n <li>\n <div class="slide-code"><pre><code><span class="comment"># For loop on a list</span>\r\n>>> numbers = [2, 4, 6, 8]\r\n>>> product = 1\r\n>>> for number in numbers:\r\n... product = product * number\r\n... \r\n>>> print(\'The product is:\', product)\r\n<span class="output">The product is: 384</span></code></pre></div>\n <div class="slide-copy"><h1>All the Flow You’d Expect</h1>\r\n<p>Python knows the usual control flow statements that other languages speak — <code>if</code>, <code>for</code>, <code>while</code> and <code>range</code> — with some of its own twists, of course. <a href="//docs.python.org/3/tutorial/controlflow.html">More control flow tools in Python 3</a></p></div>\n </li>\n \n </ul>\n </div>\n\n\n </div>\n\n \n <div class="introduction">\n <p>Python is a programming language that lets you work quickly <span class="breaker"></span>and integrate systems more effectively. <a class="readmore" href="/doc/">Learn More</a></p>\n </div>\n\n\n </div><!-- end .container -->\n </header>\n\n <div id="content" class="content-wrapper">\n <!-- Main Content Column -->\n <div class="container">\n\n <section class="main-content " role="main">\n\n \n \n\n \n\n \n\n <div class="row">\n\n <div class="small-widget get-started-widget">\n <h2 class="widget-title"><span aria-hidden="true" class="icon-get-started"></span>Get Started</h2>\r\n<p>Whether you\'re new to programming or an experienced developer, it\'s easy to learn and use Python.</p>\r\n<p><a href="/about/gettingstarted/">Start with our Beginner’s Guide</a></p>\n </div>\n\n <div class="small-widget download-widget">\n <h2 class="widget-title"><span aria-hidden="true" class="icon-download"></span>Download</h2>\n<p>Python source code and installers are available for download for all versions! Not sure which version to use? <a href="https://wiki.python.org/moin/Python2orPython3">Check here</a>.</p>\n<p>Latest: <a href="/downloads/release/python-361/">Python 3.6.1</a> - <a href="/downloads/release/python-2713/">Python 2.7.13</a></p>\n </div>\n\n <div class="small-widget documentation-widget">\n <h2 class="widget-title"><span aria-hidden="true" class="icon-documentation"></span>Docs</h2>\r\n<p>Documentation for Python\'s standard library, along with tutorials and guides, are available online.</p>\r\n<p><a href="https://docs.python.org">docs.python.org</a></p>\n </div>\n\n <div class="small-widget jobs-widget last">\n <h2 class="widget-title"><span aria-hidden="true" class="icon-jobs"></span>Jobs</h2>\r\n<p>Looking for work or have a Python related position that you\'re trying to hire for? Our <strong>relaunched community-run job board</strong> is the place to go.</p>\r\n<p><a href="//jobs.python.org">jobs.python.org</a></p>\n </div>\n\n </div>\n\n <div class="list-widgets row">\n\n <div class="medium-widget blog-widget">\n \n <div class="shrubbery">\n \n <h2 class="widget-title"><span aria-hidden="true" class="icon-news"></span>Latest News</h2>\n <p class="give-me-more"><a href="http://blog.python.org" title="More News">More</a></p>\n \n <ul class="menu">\n \n \n <li>\n<time datetime="2017-03-22T03:13:00.000002+00:00"><span class="say-no-more">2017-</span>03-22</time>\n <a href="http://feedproxy.google.com/~r/PythonInsider/~3/C-xfWJKP0-A/python-361-is-now-available.html">Python 3.6.1 is now available. Python 3.6.1 is the ...</a></li>\n \n <li>\n<time datetime="2017-03-05T12:11:00.000006+00:00"><span class="say-no-more">2017-</span>03-05</time>\n <a href="http://feedproxy.google.com/~r/PythonInsider/~3/w2AW2NRSOEM/python-361rc1-is-now-available-for.html">Python 3.6.1rc1 is now available. Python 3.6.1rc1 is the ...</a></li>\n \n <li>\n<time datetime="2017-01-17T08:40:00.000001+00:00"><span class="say-no-more">2017-</span>01-17</time>\n <a href="http://feedproxy.google.com/~r/PythonInsider/~3/NeIHRAidlpc/python-353-and-346-are-now-available.html">Python 3.5.3 and Python 3.4.6 are now available for download. ...</a></li>\n \n <li>\n<time datetime="2017-01-03T02:24:00.000001+00:00"><span class="say-no-more">2017-</span>01-03</time>\n <a href="http://feedproxy.google.com/~r/PythonInsider/~3/UoiMThSwgQM/python-353rc1-and-python-346rc1-are-now.html">Python 3.5.3rc1 and Python 3.4.6rc1 are now available for download. ...</a></li>\n \n <li>\n<time datetime="2016-12-23T10:11:00.000004+00:00"><span class="say-no-more">2016-</span>12-23</time>\n <a href="http://feedproxy.google.com/~r/PythonInsider/~3/4gOtq8ChYHk/python-360-is-now-available.html">Python 3.6.0 is now available! Python 3.6.0 is the ...</a></li>\n \n </ul>\n </div><!-- end .shrubbery -->\n\n </div>\n\n <div class="medium-widget event-widget last">\n \n <div class="shrubbery">\n \n <h2 class="widget-title"><span aria-hidden="true" class="icon-calendar"></span>Upcoming Events</h2>\n <p class="give-me-more"><a href="/events/calendars/" title="More Events">More</a></p>\n \n <ul class="menu">\n \n \n \n <li>\n<time datetime="2017-04-25T17:00:00+00:00"><span class="say-no-more">2017-</span>04-25</time>\n <a href="/events/python-user-group/517/">Python Meetup Innsbruck: imp.reload(innsbruck)</a></li>\n \n \n \n <li>\n<time datetime="2017-05-05T00:00:00+00:00"><span class="say-no-more">2017-</span>05-05</time>\n <a href="/events/python-events/501/">PyDays Vienna 2017</a></li>\n \n \n \n <li>\n<time datetime="2017-05-05T00:00:00+00:00"><span class="say-no-more">2017-</span>05-05</time>\n <a href="/events/python-events/520/">PyData London 2017</a></li>\n \n \n \n <li>\n<time datetime="2017-05-08T00:00:00+00:00"><span class="say-no-more">2017-</span>05-08</time>\n <a href="/events/python-events/463/">GeoPython 2017</a></li>\n \n \n \n <li>\n<time datetime="2017-05-17T00:00:00+00:00"><span class="say-no-more">2017-</span>05-17</time>\n <a href="/events/python-events/465/">PyCon US 2017</a></li>\n \n \n </ul>\n </div>\n\n </div>\n\n </div>\n\n <div class="row">\n\n <div class="medium-widget success-stories-widget">\n \n\n <div class="shrubbery">\n \n\n <h2 class="widget-title"><span aria-hidden="true" class="icon-success-stories"></span>Success Stories</h2>\n <p class="give-me-more"><a href="/success-stories/" title="More Success Stories">More</a></p>\n\n \n <div class="success-story-item" data-weight="25" id="success-story-2" style="display: none;">\n\n <blockquote>\n <a href="/success-stories/industrial-light-magic-runs-python/">ILM runs a batch processing environment capable of modeling, rendering and compositing tens of thousands of motion picture frames per day. Thousands of machines running Linux, IRIX, Compaq Tru64, OS X, Solaris, and Windows join together to provide a production pipeline used by ~800 users daily. Speed of development is key, and Python was a faster way to code (and re-code) the programs that control this production pipeline.</a>\n </blockquote>\n\n <table cellpadding="0" cellspacing="0" border="0" width="100%" class="quote-from">\n <tbody>\n <tr>\n \n <td><p><a href="/success-stories/industrial-light-magic-runs-python/">Industrial Light & Magic Runs on Python</a> <em>by Tim Fortenberry</em></p></td>\n </tr>\n </tbody>\n </table>\n </div>\n \n\n </div><!-- end .shrubbery -->\n\n </div>\n\n <div class="medium-widget applications-widget last">\n <div class="shrubbery">\n <h2 class="widget-title"><span aria-hidden="true" class="icon-python"></span>Use Python for…</h2>\r\n<p class="give-me-more"><a href="/about/apps" title="More Applications">More</a></p>\r\n\r\n<ul class="menu">\r\n <li><b>Web Development</b>:\r\n <span class="tag-wrapper"><a class="tag" href="http://www.djangoproject.com/">Django</a>, <a class="tag" href="http://www.pylonsproject.org/">Pyramid</a>, <a class="tag" href="http://bottlepy.org">Bottle</a>, <a class="tag" href="http://tornadoweb.org">Tornado</a>, <a href="http://flask.pocoo.org/" class="tag">Flask</a>, <a class="tag" href="http://www.web2py.com/">web2py</a></span></li>\r\n <li><b>GUI Development</b>:\r\n <span class="tag-wrapper"><a class="tag" href="http://wiki.python.org/moin/TkInter">tkInter</a>, <a class="tag" href="https://wiki.gnome.org/Projects/PyGObject">PyGObject</a>, <a class="tag" href="http://www.riverbankcomputing.co.uk/software/pyqt/intro">PyQt</a>, <a class="tag" href="https://wiki.qt.io/PySide">PySide</a>, <a class="tag" href="https://kivy.org/">Kivy</a>, <a class="tag" href="http://www.wxpython.org/">wxPython</a></span></li>\r\n <li><b>Scientific and Numeric</b>:\r\n <span class="tag-wrapper">\r\n<a class="tag" href="http://www.scipy.org">SciPy</a>, <a class="tag" href="http://pandas.pydata.org/">Pandas</a>, <a href="http://ipython.org" class="tag">IPython</a></span></li>\r\n <li><b>Software Development</b>:\r\n <span class="tag-wrapper"><a class="tag" href="http://buildbot.net/">Buildbot</a>, <a class="tag" href="http://trac.edgewall.org/">Trac</a>, <a class="tag" href="http://roundup.sourceforge.net/">Roundup</a></span></li>\r\n <li><b>System Administration</b>:\r\n <span class="tag-wrapper"><a class="tag" href="http://www.ansible.com">Ansible</a>, <a class="tag" href="http://www.saltstack.com">Salt</a>, <a class="tag" href="https://www.openstack.org">OpenStack</a></span></li>\r\n</ul>\r\n\n </div><!-- end .shrubbery -->\n </div>\n\n </div>\n\n \n <div class="pep-widget">\n\n <h2 class="widget-title">\n <span class="prompt">>>></span> <a href="/dev/peps/">Python Enhancement Proposals<span class="say-no-more"> (PEPs)</span></a>: The future of Python<span class="say-no-more"> is discussed here.</span>\n <a aria-hidden="true" class="rss-link" href="/dev/peps/peps.rss"><span class="icon-feed"></span> RSS</a>\n </h2>\n\n\n \n \n </div>\n\n <div class="psf-widget">\n\n <div class="python-logo"></div>\n \n <h2 class="widget-title">\r\n <span class="prompt">>>></span> <a href="/psf/">Python Software Foundation</a>\r\n</h2>\r\n<p>The mission of the Python Software Foundation is to promote, protect, and advance the Python programming language, and to support and facilitate the growth of a diverse and international community of Python programmers. <a class="readmore" href="/psf/">Learn more</a> </p>\r\n<p class="click-these">\r\n <a class="button" href="/users/membership/">Become a Member</a>\r\n <a class="button" href="/psf/donations/">Donate to the PSF</a>\r\n</p>\n </div>\n\n\n\n\n </section>\n\n \n \n\n \n \n\n\n </div><!-- end .container -->\n </div><!-- end #content .content-wrapper -->\n\n <!-- Footer and social media list -->\n <footer id="site-map" class="main-footer" role="contentinfo">\n <div class="main-footer-links">\n <div class="container">\n\n \n <a id="back-to-top-1" class="jump-link" href="#python-network"><span aria-hidden="true" class="icon-arrow-up"><span>▲</span></span> Back to Top</a>\n\n \n\n<ul class="sitemap navigation menu do-not-print" role="tree" id="container">\n \n <li class="tier-1 element-1">\n <a href="/about/" >About</a>\n \n \n\n<ul class="subnav menu">\n \n <li class="tier-2 element-1" role="treeitem"><a href="/about/apps/" title="">Applications</a></li>\n \n <li class="tier-2 element-2" role="treeitem"><a href="/about/quotes/" title="">Quotes</a></li>\n \n <li class="tier-2 element-3" role="treeitem"><a href="/about/gettingstarted/" title="">Getting Started</a></li>\n \n <li class="tier-2 element-4" role="treeitem"><a href="/about/help/" title="">Help</a></li>\n \n <li class="tier-2 element-5" role="treeitem"><a href="http://brochure.getpython.info/" title="">Python Brochure</a></li>\n \n</ul>\n\n \n </li>\n \n <li class="tier-1 element-2">\n <a href="/downloads/" >Downloads</a>\n \n \n\n<ul class="subnav menu">\n \n <li class="tier-2 element-1" role="treeitem"><a href="/downloads/" title="">All releases</a></li>\n \n <li class="tier-2 element-2" role="treeitem"><a href="/downloads/source/" title="">Source code</a></li>\n \n <li class="tier-2 element-3" role="treeitem"><a href="/downloads/windows/" title="">Windows</a></li>\n \n <li class="tier-2 element-4" role="treeitem"><a href="/downloads/mac-osx/" title="">Mac OS X</a></li>\n \n <li class="tier-2 element-5" role="treeitem"><a href="/download/other/" title="">Other Platforms</a></li>\n \n <li class="tier-2 element-6" role="treeitem"><a href="https://docs.python.org/3/license.html" title="">License</a></li>\n \n <li class="tier-2 element-7" role="treeitem"><a href="/download/alternatives" title="">Alternative Implementations</a></li>\n \n</ul>\n\n \n </li>\n \n <li class="tier-1 element-3">\n <a href="/doc/" >Documentation</a>\n \n \n\n<ul class="subnav menu">\n \n <li class="tier-2 element-1" role="treeitem"><a href="/doc/" title="">Docs</a></li>\n \n <li class="tier-2 element-2" role="treeitem"><a href="/doc/av" title="">Audio/Visual Talks</a></li>\n \n <li class="tier-2 element-3" role="treeitem"><a href="https://wiki.python.org/moin/BeginnersGuide" title="">Beginner's Guide</a></li>\n \n <li class="tier-2 element-4" role="treeitem"><a href="https://docs.python.org/devguide/" title="">Developer's Guide</a></li>\n \n <li class="tier-2 element-5" role="treeitem"><a href="https://docs.python.org/faq/" title="">FAQ</a></li>\n \n <li class="tier-2 element-6" role="treeitem"><a href="http://wiki.python.org/moin/Languages" title="">Non-English Docs</a></li>\n \n <li class="tier-2 element-7" role="treeitem"><a href="http://python.org/dev/peps/" title="">PEP Index</a></li>\n \n <li class="tier-2 element-8" role="treeitem"><a href="https://wiki.python.org/moin/PythonBooks" title="">Python Books</a></li>\n \n</ul>\n\n \n </li>\n \n <li class="tier-1 element-4">\n <a href="/community/" >Community</a>\n \n \n\n<ul class="subnav menu">\n \n <li class="tier-2 element-1" role="treeitem"><a href="/community/diversity/" title="">Diversity</a></li>\n \n <li class="tier-2 element-2" role="treeitem"><a href="/community/irc/" title="">IRC</a></li>\n \n <li class="tier-2 element-3" role="treeitem"><a href="/community/lists/" title="">Mailing Lists</a></li>\n \n <li class="tier-2 element-4" role="treeitem"><a href="/community/workshops/" title="">Python Conferences</a></li>\n \n <li class="tier-2 element-5" role="treeitem"><a href="/community/sigs/" title="">Special Interest Groups</a></li>\n \n <li class="tier-2 element-6" role="treeitem"><a href="https://wiki.python.org/moin/" title="">Python Wiki</a></li>\n \n <li class="tier-2 element-7" role="treeitem"><a href="/community/logos/" title="">Python Logo</a></li>\n \n <li class="tier-2 element-8" role="treeitem"><a href="/community/merchandise/" title="">Merchandise</a></li>\n \n <li class="tier-2 element-9" role="treeitem"><a href="/community/awards" title="">Community Awards</a></li>\n \n</ul>\n\n \n </li>\n \n <li class="tier-1 element-5">\n <a href="/about/success/" title="success-stories">Success Stories</a>\n \n \n\n<ul class="subnav menu">\n \n <li class="tier-2 element-1" role="treeitem"><a href="/about/success/#arts" title="">Arts</a></li>\n \n <li class="tier-2 element-2" role="treeitem"><a href="/about/success/#business" title="">Business</a></li>\n \n <li class="tier-2 element-3" role="treeitem"><a href="/about/success/#education" title="">Education</a></li>\n \n <li class="tier-2 element-4" role="treeitem"><a href="/about/success/#engineering" title="">Engineering</a></li>\n \n <li class="tier-2 element-5" role="treeitem"><a href="/about/success/#government" title="">Government</a></li>\n \n <li class="tier-2 element-6" role="treeitem"><a href="/about/success/#scientific" title="">Scientific</a></li>\n \n <li class="tier-2 element-7" role="treeitem"><a href="/about/success/#software-development" title="">Software Development</a></li>\n \n</ul>\n\n \n </li>\n \n <li class="tier-1 element-6">\n <a href="/blogs/" title="News from around the Python world">News</a>\n \n \n\n<ul class="subnav menu">\n \n <li class="tier-2 element-1" role="treeitem"><a href="/blogs/" title="Python Insider Blog Posts">Python News</a></li>\n \n <li class="tier-2 element-2" role="treeitem"><a href="http://planetpython.org/" title="Planet Python">Community News</a></li>\n \n <li class="tier-2 element-3" role="treeitem"><a href="http://pyfound.blogspot.com/" title="PSF Blog">PSF News</a></li>\n \n <li class="tier-2 element-4" role="treeitem"><a href="http://pycon.blogspot.com/" title="PyCon Blog">PyCon News</a></li>\n \n</ul>\n\n \n </li>\n \n <li class="tier-1 element-7">\n <a href="/events/" >Events</a>\n \n \n\n<ul class="subnav menu">\n \n <li class="tier-2 element-1" role="treeitem"><a href="/events/python-events" title="">Python Events</a></li>\n \n <li class="tier-2 element-2" role="treeitem"><a href="/events/python-user-group/" title="">User Group Events</a></li>\n \n <li class="tier-2 element-3" role="treeitem"><a href="/events/python-events/past/" title="">Python Events Archive</a></li>\n \n <li class="tier-2 element-4" role="treeitem"><a href="/events/python-user-group/past/" title="">User Group Events Archive</a></li>\n \n <li class="tier-2 element-5" role="treeitem"><a href="https://wiki.python.org/moin/PythonEventsCalendar#Submitting_an_Event" title="">Submit an Event</a></li>\n \n</ul>\n\n \n </li>\n \n <li class="tier-1 element-8">\n <a href="/dev/" >Contributing</a>\n \n \n\n<ul class="subnav menu">\n \n <li class="tier-2 element-1" role="treeitem"><a href="http://docs.python.org/devguide/" title="">Developer's Guide</a></li>\n \n <li class="tier-2 element-2" role="treeitem"><a href="http://bugs.python.org/" title="">Issue Tracker</a></li>\n \n <li class="tier-2 element-3" role="treeitem"><a href="https://mail.python.org/mailman/listinfo/python-dev" title="">python-dev list</a></li>\n \n <li class="tier-2 element-4" role="treeitem"><a href="/dev/core-mentorship/" title="">Core Mentorship</a></li>\n \n</ul>\n\n \n </li>\n \n</ul>\n\n\n <a id="back-to-top-2" class="jump-link" href="#python-network"><span aria-hidden="true" class="icon-arrow-up"><span>▲</span></span> Back to Top</a>\n \n\n </div><!-- end .container -->\n </div> <!-- end .main-footer-links -->\n\n <div class="site-base">\n <div class="container">\n \n <ul class="footer-links navigation menu do-not-print" role="tree">\n <li class="tier-1 element-1"><a href="/about/help/">Help & <span class="say-no-more">General</span> Contact</a></li>\n <li class="tier-1 element-2"><a href="/community/diversity/">Diversity <span class="say-no-more">Initiatives</span></a></li>\n <li class="tier-1 element-3"><a href="https://github.com/python/pythondotorg/issues">Submit Website Bug</a></li>\n <li class="tier-1 element-4">\n <a href="https://status.python.org/">Status <span class="python-status-indicator-default" id="python-status-indicator"></span></a>\n </li>\n </ul>\n\n <div class="copyright">\n <p><small>\n <span class="pre">Copyright ©2001-2017.</span>\n <span class="pre"><a href="/psf-landing/">Python Software Foundation</a></span>\n <span class="pre"><a href="/about/legal/">Legal Statements</a></span>\n <span class="pre"><a href="/privacy/">Privacy Policy</a></span>\n </small></p>\n </div>\n\n </div><!-- end .container -->\n </div><!-- end .site-base -->\n\n </footer>\n\n </div><!-- end #touchnav-wrapper -->\n\n \n <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>\n <script>window.jQuery || document.write(\'<script src="/static/js/libs/jquery-1.8.2.min.js"><\\/script>\')</script>\n\n <script src="/static/js/libs/masonry.pkgd.min.js"></script>\n\n <script type="text/javascript" src="/static/js/main-min.js" charset="utf-8"></script>\n \n\n <!--[if lte IE 7]>\n <script type="text/javascript" src="/static/js/plugins/IE8-min.js" charset="utf-8"></script>\n \n \n <![endif]-->\n\n <!--[if lte IE 8]>\n <script type="text/javascript" src="/static/js/plugins/getComputedStyle-min.js" charset="utf-8"></script>\n \n \n <![endif]-->\n\n \n\n \n \n\n</body>\n</html>\n'
http://www.python.org
2、通过外面的一层层的函数传递的参数,让最内层的函数可以直接调用外层函数所有参数,从而实现不动原函数的代码,增加新功能的办法。
在python中,最恰当的例子就是装饰器!不动源代码,通过装饰器给源代码加上新的功能!
import time def timer(func):
def wrapper(*args,**kwargs):
start_time = time.time()
func(*args,**kwargs)
stop_time = time.time()
print("run time is %s"%(stop_time-start_time))
return wrapper @timer
def index(): #index = timer(index)
time.sleep(1.5)
print("welcome to beijing!") @timer
def home(name):
time.sleep(1)
print("welcome to %s home page"%name) @timer
def auth(name,passwd):
time.sleep(0.5)
print(name,passwd) @timer
def tell():
print("---***---") index()
home("alex")
auth("alex","alex3714")
tell()
执行结果如下:
welcome to beijing!
run time is 1.5000858306884766
welcome to alex home page
run time is 1.0000572204589844
alex alex3714
run time is 0.5000283718109131
---***---
run time is 0.0
python中对 函数 闭包 的理解的更多相关文章
- [19/10/13-星期日] Python中的函数
一.函数 # 第五章 函数 ## 函数简介(function) - 函数也是一个对象 - 对象是内存中专门用来存储数据的一块区域 - 函数可以用来保存一些可执行的代码,并且可以在需要时,对这些语句进行 ...
- Python中利用函数装饰器实现备忘功能
Python中利用函数装饰器实现备忘功能 这篇文章主要介绍了Python中利用函数装饰器实现备忘功能,同时还降到了利用装饰器来检查函数的递归.确保参数传递的正确,需要的朋友可以参考下 " ...
- Python 中的函数
学了 Python 中的数据类型,语句,接下来就来说一下 Python 中的函数,函数是结构化编程的核心.我们使用函数可以增加程序的可读性.自定义函数时使用关键字def 函数由多条语句组成.在定义函数 ...
- 11、python中的函数(基础)
一.什么是函数? 在数学中,x2+2x2+3=10这样的叫方程. 而ax2+bx2+c=d这样的才叫函数.数学的函数中,abcd等待输入的未知量叫自变量,它需要我们自己去输入,而x这种待求得未知量叫因 ...
- 14.在Python中lambda函数是什么
在Python中lambda函数是什么? It is a single expression anoymous function often used as inline function. lamb ...
- Python中匿名函数与内置高阶函数详解
大家好,从今天起早起Python将持续更新由小甜同学从 初学者的角度 学习Python的笔记,其特点就是全文大多由 新手易理解 的 代码与注释及动态演示 .刚入门的读者千万不要错过! 很多人学习pyt ...
- Python中split()函数的用法及实际使用示例
Python中split()函数,通常用于将字符串切片并转换为列表. 一.函数说明: split():语法:str.split(str="",num=string.count(st ...
- python中range()函数的用法
python中range()函数可创建一个整数列表,一般用在for循环中. range()函数语法: range(start,stop[,step]) 参数说明: star: 计数从star开始.默认 ...
- python中format函数
python中format函数用于字符串的格式化 通过关键字 1 print('{名字}今天{动作}'.format(名字='陈某某',动作='拍视频'))#通过关键字 2 grade = {'nam ...
随机推荐
- 牛客比赛-Wannafly9-A/B/C
A-链接:https://www.nowcoder.com/acm/contest/71/A来源:牛客网 给定n个正整数,请找出其中有多少个数x满足:在这n个数中存在数y=kx,其中k为大于1的整数 ...
- 【Hive】数据类型
1.基本类型 整型:tinyint / samllint / int / bigint 浮点型:float / double / Decimals 布尔型:boolean 字符串:string / v ...
- 使用Jenkins自动编译我的 java 项目 git maven jenkins
之前的项目已经将jenkins部署好,现在添加maven项目 准备工作 安装插件 Git plugin Publish Over SSH 全局设置 key: 是 linux服务器的私钥 Global ...
- webservice SOAP WSDL UDDI简介
WebServices简介 先给出一个概念 SOA ,即Service Oriented Architecture ,中文一般理解为面向服务的架构, 既然说是一种架构的话,所以一般认为 SOA 是包含 ...
- Android自定义控件之仿美团下拉刷新
美团的下拉刷新分为三个状态: 第一个状态为下拉刷新状态(pull to refresh),在这个状态下是一个绿色的椭圆随着下拉的距离动态改变其大小. 第二个部分为放开刷新状态(release to r ...
- MySQL 的中文乱码问题终结
中文正确 1:保存sql脚本文件 utf8 !!!!! ANSI<-->GBK 2:打开mysql窗口 SET NAMES UTF8; 每次新打开窗口执行指令 3:SOURCE d:/1. ...
- C#泛型类的类型约束
是使用泛型时,T默认情况下是不可以被初始化的,只能通过传值来赋值,这个时候可以使用类型约束来保证T是可以被约束的. .NET支持的类型参数约束有以下五种: where T: struct //T必须是 ...
- [面试时]我是如何讲清楚TCP/IP是如何实现可靠传输的 转
[面试时]我是如何讲清楚TCP/IP是如何实现可靠传输的 - shawjan的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/shawjan/article/det ...
- OpenCV-Python cv2.imdecode()和cv2.imencode() 图片解码和编码
cv2.imdecode()函数从指定的内存缓存中读取数据,并把数据转换(解码)成图像格式;主要用于从网络传输数据中恢复出图像. cv2.imencode()函数是将图片格式转换(编码)成流数据,赋值 ...
- laravel 中将DB::select 得到的内容转为数组
$sql = "select count(*) as num from api_log where uid='{$this->uid}'"; $ ...