Python基础 – 函数结构
<h2>函数结构</h2>
<blockquote>
<p>假设,一位农场主想要统计自己的圈地面积有多少,面对大大小小的多个圈地,用代码该如何实现呢?
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2589-01.jpg” alt=“” /></p>
</blockquote>
<p>可以设定⼀个计算⾯积的函数,多次调⽤。</p>
<p>农场主的圈地均为正方形,测量面积的函数编写好后,如代码所示。</p>
<p>第 1 到第 3 行代码,定义了一个名为 getArea 的函数,用于计算正方形面积并输出。
第 5 和第 6 行代码,调用这个函数,传入参数,就可以获得不同边长的正方形面积大小。</p>
<pre><code class=“language-python”>def getArea(length):
area = length*length
print(area)
getArea(13)
getArea(7)</code></pre>
<p>计算好了圈地的⾯积,想要计算边长为 13 的圈地⾯积是不是大于 160,如果大于 160 就用来种⻄⽠。</p>
<p><img src=“https://assets.moshanghua.net/images/2022/08/msh-2589-02.png” alt=“” /></p>
<p>如本例所示,程序虽然输出了⾯积大小,但是不能在函数外比较数据的大小。
这是因为函数内输出的数据,没有传递到函数外。这时候,我们就需要设置函数返回值。</p>
<h2>函数返回值</h2>
<pre><code class=“language-python”>def getArea(length):
area = length*length
return area
result = getArea(13)
print(result)</code></pre>
<p>代码的作用:
在本例中,第 1 到第 3 行代码定义了一个名为 <code>getArea</code> 的函数,其功能为计算正方形面积,并将结果返回。</p>
<p>第 5 行调用函数 <code>getArea()</code> 传入参数,将返回值赋值给变量 <code>result</code>。</p>
<p>第 6 行代码,输出变量 <code>result</code>。</p>
<p><strong>return</strong>
在函数中,使⽤关键字 <code>return</code> 设置要返回的数据。
<strong><code>return</code> 位置一般都是在函数的末尾</strong>,这样才能停止函数内的代码运行并将 <code>return</code> 后的值返回。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2589-03.png” alt=“” /></p>
<p><strong>返回值</strong>
<strong>return</strong> 后面是指定的返回值,返回值会返回到调用的地方。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2589-04.png” alt=“” /></p>
<p><strong>变量</strong>
调用函数 <code>getArea()</code>,传入参数 13,函数将运算结果 169 返回,并赋值给变量 <code>result</code>。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2589-05.png” alt=“” /></p>
<p><strong>代码小结</strong>
要定义函数和调用函数就需要这几个部分
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2589-06.png” alt=“” /></p>
<p>在函数中使用关键字 <code>return</code> 时,要注意它的位置。
函数内部程序按照从上到下的顺序执行,如本例所示,函数内部有 <code>for</code> 循环,程序会等 <code>for</code> 循环执行完毕后,再执行 <code>return</code> 语句。
这样就可以得到传入列表中全部元素的累加值。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2589-07.png” alt=“” /></p>
<p><strong>如果 <code>return</code> 的位置在函数的循环内部,函数内的循环只会执行一次。</strong>
因为执行到 return 语句,函数就返回当时的值,并且停止此次调用。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2589-08.png” alt=“” /></p>
<p>函数经过内部代码的执⾏<strong>会产⽣⼀个结果,这个结果可以是⼀个具体的值也可以是多个值。</strong>
在本例中,函数计算出正⽅形的周长和面积,函数返回了两个值。
<strong>当函数同时返回多个值时,以逗号 "," 隔开,并且返回值以元组的格式返回。</strong>
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2589-09.png” alt=“” /></p>
<p>再来看这个案例。如图所示,左边的函数计算出正方形的面积,但是函数中没有 <code>return 语句</code>。
此时,函数运行结束会<strong>返回一个空值(也就是None)</strong>,作为返回值。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2589-10.png” alt=“” /></p>
<h3>小练习</h3>
<p>定义了一个叫做 "getSize" 的函数,该函数包含 1 个参数 length。</p>
<p>这个函数的功能是计算正方形周长和面积,并将两个结果作为函数的返回值返回。</p>
<p>现在分两次调用这个函数:
第一次传入参数 6 并输出结果。
第二次传入参数 8 并输出结果。</p>
<p>正方形周长 = 4 <em> 边长
正方形面积 = 边长 </em> 边长</p>
<pre><code class=“language-python”>def getSize(length):
perimeter = 4length
area = lengthlength
return perimeter,area
result = getSize(6)
print(result)
result = getSize(8)
print(result)</code></pre>
<p>刚才农场主在函数中使用了 <code>print()</code>,程序输出了圈地面积,但是不能在函数外比较数据的大小。
在函数内使用 <code>print()</code> 可以得到数据,但是这个数据不能在函数外使用。
在函数内使用 <code>return </code>可以将数据传递到函数外。</p>
<p><img src=“https://assets.moshanghua.net/images/2022/08/msh-2589-11.png” alt=“” /></p>
<p>学完了函数结构中的每个部分,总结⼀下函数的结构。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2589-12.png” alt=“” /></p>
<p><strong>函数名</strong>
为函数取名是为了方便我们重复使用。在 Python 中,函数的命名规则和变量类似。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2589-13.png” alt=“” />
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2589-14.png” alt=“” /></p>
<p><strong>参数</strong>
参数可以理解为函数的输入。
形参指定义函数时设置的参数名称,实参指调用函数时实际传递的数据。在本例中,num 为形参,8 为实参。
参数可以定义多个,也可以不定义。如果参数不止一个,多个参数之间用英文逗号 “,” 隔开。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2589-15.png” alt=“” /></p>
<p><strong>函数体</strong>
函数体是函数内部实现特定功能的代码。就像做菜之前需要先想好具体的烹饪方式,等到做菜的时候再使用一样。
在本例中,函数体是为了计算一个数的二次幂(平方)和三次幂(立方)。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2589-16.png” alt=“” /></p>
<p><strong>返回值</strong>
返回值可以理解为函数的输出。
就像对做菜的原材料进行烹饪加工,最后会得到我们想要的菜品一样,函数经过内部代码的执行也会产生一个结果。
这个结果可以是具体的值,也可以是一项具体的操作。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2589-17.png” alt=“” /></p>
<p><strong>调用函数</strong>
在代码中使用我们已经定义好的函数,这个过程称为调用函数。
调用函数获得的返回值,可以用一个变量存储下来,就可以在函数外使用这个数据了。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2589-18.png” alt=“” /></p>
<p><strong>代码小结</strong>
函数的结构
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2589-19.png” alt=“” /></p>
<p>学习了函数结构后,还有一类函数就不得不提。
既然函数的使用顺序是先定义后调用,之前使用的很多函数, 比如 <code>print()</code>,<code>range()</code>,<code>append()</code> 等等,它们没有被我们定义,为什么还能直接被使用呢?
是因为,在 Python 中还有一类函数叫内置函数。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2589-20.png” alt=“” /></p>
<h2>内置函数</h2>
<p>和其他编程语言一样,Python也会将一些经常使用的函数预先写好,内置在编程环境中,提供许多常用的基本功能。
这些函数不需要我们去定义,可以直接使用,也被称为内置函数。
<img src=“https://assets.moshanghua.net/images/2022/08/msh-2589-21.png” alt=“” /></p>
<p>程序中使用内置函数也就是在调用函数。
例如,调用<code> len()</code> 函数,它可以返回字符、列表、元组等长度或元素个数。</p>
<p><img src=“https://assets.moshanghua.net/images/2022/08/msh-2589-22.png” alt=“” /></p>
<p>如图所示:
<code>len</code> 为函数名;
<code>() </code>为调用符号,在此处执行该函数中的代码;
列表 <code>["a","b","c","d"] </code>为实参。</p>
<p>程序将 len(["a","b","c","d"]) 的返回值 4 ,赋值给变量data;接着,输出变量data。</p>
