Python基础 – 函数

2022/8/10 11:55:14admin0 阅读2 评论

<h2>初识函数</h2>
<p>定义
函数是指封装了某一特定功能的代码块。</p>
<p>简单的讲,函数就是用来<strong>存储代码</strong>的“特殊变量”。</p>
<p>前面接触过的很多“功能”都是函数。</p>
<p>比如在屏幕上输出一些数据的<code>print()</code>,生成一个指定范围整数序列的<code>range()</code>等。</p>
<p><img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-01.png” alt=“” /></p>
<p>函数的功能是如何定义的呢?</p>
<h3>定义函数</h3>
<pre><code class=“language-python”>def sayWelcome():
print("欢迎光临")
print("商品一律九折")</code></pre>
<p><strong>代码的作用</strong>
这3行代码做的事情是定义了一个叫做“sayWelcome”的函数。</p>
<p>这个函数的功能是输出欢迎语内容。</p>
<p><strong>def</strong>
一个关键字,<code>def</code>是<strong>函数定义的关键字</strong>,是define的缩写。</p>
<p><img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-02.png” alt=“” /></p>
<p><strong>sayWelcome</strong>
一个名称,函数名。
<strong>这里的名称其实就是变量名,只不过需要存储的不再是数据,而是代码,我们称为函数名。</strong></p>
<p><img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-03.png” alt=“” /></p>
<p><strong>括号</strong>
一对括号,是函数定义的标准格式。</p>
<p><img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-04.png” alt=“” /></p>
<p><strong>冒号</strong>
一个冒号,表明接下来缩进的代码是属于这个函数的。</p>
<p><img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-05.png” alt=“” /></p>
<p><strong>缩进</strong>
四个空格。</p>
<p>和判断、循环一样,函数内部的代码也需要缩进相应的空格。</p>
<p><img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-06.png” alt=“” /></p>
<p><strong>函数体</strong>
几行代码组成的代码块。</p>
<p>实现该函数功能的代码块,称为函数体。</p>
<p><img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-07.png” alt=“” /></p>
<p><strong>代码小结</strong>
当我们要定义函数时就需要这几个部分。</p>
<p><img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-08.png” alt=“” /></p>
<p>现在我们已经将输出欢迎语的代码打包,并为它贴上了<code>sayWelcome</code>的标签。当我们需要展示欢迎语时,只需要“打电话”(call)给电脑,让它在此处执行<code>sayWelcome</code>的代码。</p>
<p>在代码中使用我们已经定义好的函数,这个过程称为<strong>调用函数</strong>(Call Function)。</p>
<p><img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-09.png” alt=“” /></p>
<h3>调用函数</h3>
<pre><code class=“language-python”>def sayWelcome():
print("欢迎光临")
print("商品一律九折")

sayWelcome()
sayWelcome()</code></pre>
<p><strong>代码的作用</strong>
定义一个sayWelcome函数,实现输出欢迎语的功能。</p>
<p>第5、6行代码,调用了sayWelcome函数。</p>
<p><strong>sayWelcome</strong>
一个名称,被调用的函数名。</p>
<p>程序通过函数名来定位函数体中的代码。</p>
<p><img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-10.png” alt=“” /></p>
<p><strong>括号</strong>
一对括号,调用符号。</p>
<p>表示<strong>在此处执行该函数中的代码</strong>,是调用函数的标准格式。</p>
<p><img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-11.png” alt=“” /></p>
<p><strong>代码小结</strong>
当我们要调用函数时就需要这几个部分。
<img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-12.png” alt=“” /></p>
<p>代码执行顺序
函数体中的代码不是立刻执行的,而是等到该函数被调用时才执行。</p>
<p>我们可以理解为:函数的调用是一个迂回的路径。
<img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-13.jpg” alt=“” /></p>
<p>当程序执行到第七行代码时,开始调用<code>setWatermark</code>函数时,并不会继续执行第八行代码,而是跳转到定义函数<code>setWatermark()</code>的内部
<img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-14.jpg” alt=“” /></p>
<p>从第二行开始执行
<img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-15.jpg” alt=“” /></p>
<p>直到第2,3,4行代码结束
<img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-16.jpg” alt=“” /></p>
<p>再跳回到第7行代码,从而继续执行第8行代码
<img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-17.jpg” alt=“” /></p>
<p>现在我们可以把需要重复使用的代码定义为一个函数,就像刚才的sayWelcome函数。</p>
<p>若我们希望修改函数中的内容怎么办呢?
<img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-19.png” alt=“” /></p>
<p>若定义函数时预留一个位置接收数据。根据不同的情况传递不同的数据,就能更加灵活的解决刚才的问题。</p>
<p>这时候我们需要为函数“挖空”,并在调用函数时“填空”,即设置参数。</p>
<p><strong>我们把提前挖好的“空”称为形参,把用来填空的数据称为实参。</strong></p>
<h3>形参与实参</h3>
<p>定义
形参是形式参数的简称,指定义函数时设置的参数名称。</p>
<p>实参是实际参数的简称,指调用函数时实际传递的数据。</p>
<p><strong>为函数设置参数</strong></p>
<pre><code class=“language-python”>def sayWelcome(discount):
print("欢迎光临")
print(f"商品一律{discount}")

sayWelcome("九折")
sayWelcome("五折")</code></pre>
<p><strong>代码的作用</strong>
定义sayWelcome函数,并为它们设置一个参数discount。</p>
<p>第1行,定义sayWelcome函数并在括号中设置形参名称discount。</p>
<p>第3行,将discount形参放到函数体中使用,使discount中的数据按照指定的格式输出。</p>
<p>第5~6行,多次调用sayWelcome函数,并分别为discount形参传递实参数据“九折”、“五折”。</p>
<p><strong>形参</strong>
定义一个形参,用来接收数据的参数名称。
<img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-20.png” alt=“” /></p>
<p><strong>形参</strong>
在代码中使用形参,接收到的数据会被传递到此处使用。
<img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-21.png” alt=“” /></p>
<p><strong>实参</strong>
实参,调用函数时传递给形参discount的数据。
<img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-22.png” alt=“” /></p>
<p><strong>代码小结</strong>
我们通过下面的代码为函数设置参数。
<img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-23.png” alt=“” /></p>
<p><strong>形参</strong>
形参是定义函数时设置的参数名称。</p>
<p>相当于我们定义了一个变量,但不需要给该变量赋值。</p>
<p><img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-24.png” alt=“” /></p>
<p><strong>实参</strong>
实参是调用函数时传递给形参的数据。</p>
<p>相当于为形参变量赋值的数据。
<img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-25.png” alt=“” /></p>
<p>参数可以定义多个,也可以不定义。</p>
<p>如果参数不止一个,多个参数之间可以用英文逗号“,”隔开。</p>
<p>根据函数的功能不同,我们可以传递不同类型的实参数据。</p>
<p>比如,我们可以把店铺名称与产品折扣都设置为参数。</p>
<p><img src=“https://assets.moshanghua.net/images/2022/06/msh-2557-26.png” alt=“” /></p>
<h3>小练习</h3>
<p>计算BMI指数
请定义一个叫做“getBMI()”的函数,该函数包括2个参数height, weight,分别代表身高和体重。</p>
<p>这个函数的功能是通过一个人的身高和体重计算BMI指数,并用print输出结果。</p>
<p>BMI指数的计算公式为:BMI = 体重 /(身高X身高)</p>
<p>然后分两次调用这个函数:</p>
<p>第一次传入参数(1.83, 60)。</p>
<p>第二次传入参数(1.60, 50)。</p>
<pre><code class=“language-python”>def getBMI(height, weight):
BMI = weight / (height * height)
print(BMI)

getBMI(1.83, 60)
getBMI(1.60, 50)</code></pre>
<p>请定义一个叫做“isOdd”的函数,该函数包括1个参数number,代表一个整数。</p>
<p>这个函数的功能是通过if语句判断number中的数字是否为奇数,并用print输出结果。</p>
<p>若此数为奇数,输出“奇数”,否则输出“偶数”。 然后分两次调用这个函数:</p>
<p>第一次传入参数25。</p>
<p>第二次传入参数10。</p>
<pre><code class=“language-python”># 定义isOdd函数
def isOdd(number):
# 判断number是否为奇数
if number % 2 == 1 :
print("奇数")
else :
print("偶数")

调用isOdd函数

isOdd(25)
isOdd(10)
</code></pre>

评论区

  • UI柒#1
    UI柒2022/8/12 11:53:08

    既学习又记录挺好的

    WindowsChrome

    • 陌上花#1
      陌上花2022/8/14 12:42:57
      @UI柒

      方便忘记语法和用法了能来快速瞄一眼[doge1]

      WindowsFirefox