Python自学笔记11-函数的定义和调用

函数是组织代码的非常有效的方式,有了函数,我们就可以编写大规模的项目。可以说,函数是组织代码的最小单元。

Python函数的定义

函数是代码封装的一种手段,函数中包含一段可以重复执行的代码,在需要用到这些代码时,只需要调用函数,就会运行函数中的代码。

python 函数这么定义:

<span class="hljs-function"><span class="hljs-keyword">def</span>&#xA0;&#x51FD;&#x6570;&#x540D;&#x79F0;<span class="hljs-params">(&#x53C2;&#x6570;<span class="hljs-number">1</span>,&#xA0;&#x53C2;&#x6570;<span class="hljs-number">2</span>)</span>&#xFF1A;<br>&#xA0;&#x51FD;&#x6570;&#x4F53;&#xFF08;&#x8981;&#x8FD0;&#x884C;&#x7684;&#x4EE3;&#x7801;&#xFF09;<br></span>

比如一个很简单的函数定义:

def add(a, b):
    return a + b

现在我们举个例子说明函数的作用。

print('&#x6253;&#x5F00;&#x9AD8;&#x7EA7;&#x8F66;&#x95E8;')
print('&#x5F00;&#x53D1;&#x52A8;&#x673A;')
print('&#x5B89;&#x5168;&#x5E26;')
print('&#x8E29;&#x6CB9;&#x95E8;')
print('&#x638C;&#x63E1;&#x65B9;&#x5411;')

如果要开很多次车,那么每次都需要敲相同的 5 行代码,这样会造成几个问题:

  • 很容易编写不同的代码,或者代码出现错误
  • 代码冗余,可读性不强
  • 不容易维护,当需要修改某个步骤时,要修改多处。

Python函数的调用

现在我们可以把上述代码封装在函数中,当需要运行这些代码时,调用函数就可以了,这样减少了很多复制粘贴或者手工编写多行代码的步骤,函数的名称也表明了代码的作用,当需要修改部分逻辑,只需要修改函数体就可以了。

<span class="hljs-function"><span class="hljs-keyword">def</span>&#xA0;<span class="hljs-title">run_car</span><span class="hljs-params">()</span>:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;print(<span class="hljs-string">'&#x6253;&#x5F00;&#x9AD8;&#x7EA7;&#x8F66;&#x95E8;'</span>)<br>&#xA0;&#xA0;&#xA0;&#xA0;print(<span class="hljs-string">'&#x53D1;&#x52A8;&#x53D1;&#x52A8;&#x673A;'</span>)<br>&#xA0;&#xA0;&#xA0;&#xA0;print(<span class="hljs-string">'&#x7CFB;&#x4E0A;&#x5B89;&#x5168;&#x5E26;'</span>)<br>&#xA0;&#xA0;&#xA0;&#xA0;print(<span class="hljs-string">'&#x8E29;&#x6CB9;&#x95E8;'</span>)<br>&#xA0;&#xA0;&#xA0;&#xA0;print(<span class="hljs-string">'&#x638C;&#x63E1;&#x65B9;&#x5411;'</span>)<br><br>run_car()<br><br>run_car()

Python函数的返回值

return 表示当函数执行完之后,想让函数外面的程序得到函数执行的结果, return 的值可以任意的数据类型。

def add(a, b):
    return a + b

result = add(3,4)
print(result)

  • 函数体当中的代码, 遇到 return 会终止运行。
  • 函数的返回结果可以是任意类型,包括 None
  • 当函数体当中没有 return ,默认返回 None

Python函数可以返回多个值, 只需要在多个值之间加上逗号,得到的是元组类型。

<span class="hljs-function"><span class="hljs-keyword">def</span>&#xA0;<span class="hljs-title">add</span><span class="hljs-params">(a,&#xA0;b)</span>:</span><br>&#xA0;<span class="hljs-keyword">return</span>&#xA0;a,&#xA0;b

参数的四种类型

return 表示函数返回给外部的值,而参数表示函数从外部接收的值。在函数定义时候的参数叫做形式参数,它其实就是一个变量名称,在函数调用时候的参数叫做实际参数,相当于给变量赋值。

<span class="hljs-function"><span class="hljs-keyword">def</span>&#xA0;<span class="hljs-title">get_coffee</span><span class="hljs-params">(suger)</span>:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">if</span>&#xA0;suger&#xA0;>&#xA0;<span class="hljs-number">100</span>:<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">return</span>&#xA0;<span class="hljs-string">'&#x751C;&#x5496;&#x5561;'</span><br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">elif</span>&#xA0;suger&#xA0;< <span class="hljs-number">1:<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">return</span>&#xA0;<span class="hljs-string">'&#x7F8E;&#x5F0F;'</span><br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">else</span>:<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">return</span>&#xA0;<span class="hljs-string">'&#x83AB;&#x540D;&#x5176;&#x5999;&#x7684;&#x5496;&#x5561;'</span><br><br>result&#xA0;=&#xA0;get_coffee(<span class="hljs-number">100</span>)<br>print(result)<br></ <span>

注意,形式参数的个数和实际参数的个数要一样,而且顺序要一致,这种方式叫做位置参数。(和领导吃饭做位置)如果形式参数和实际参数的个数不一致,会导致程序无法分别赋值:

<span class="hljs-function"><span class="hljs-keyword">def</span>&#xA0;<span class="hljs-title">add</span><span class="hljs-params">(a,&#xA0;b)</span>:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;c&#xA0;=&#xA0;a&#xA0;+&#xA0;b&#xA0;-&#xA0;<span class="hljs-number">1</span><br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">return</span>&#xA0;c<br><br>add(<span class="hljs-number">5</span>,&#xA0;<span class="hljs-number">7</span>,&#xA0;<span class="hljs-number">8</span>)&#xA0;

关键字参数:在调用函数的时候,做一个关键字标记,以防传参错误,造成损失。主要是当参数很多的情况,你记不清顺序,关键字去标识数据的意思。

默认参数:在函数定义的时候,给某个变量直接赋值,成为默认值。 就是使用默认值直接赋值,在调用函数的时候,可以少传参数。关键字参数,默认参数也好,都必须放到位置参数的后面。

<span class="hljs-function"><span class="hljs-keyword">def</span>&#xA0;<span class="hljs-title">add</span><span class="hljs-params">(a,&#xA0;b=<span class="hljs-number">0</span>)</span>:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;c&#xA0;=&#xA0;a&#xA0;+&#xA0;b&#xA0;-&#xA0;<span class="hljs-number">1</span><br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">return</span>&#xA0;c<br><br>add(a=<span class="hljs-number">4</span>,&#xA0;b=<span class="hljs-number">6</span>)<br>add(<span class="hljs-number">3</span>)

自动化测试场景:添加多个数据,运行多个用例

<span class="hljs-function"><span class="hljs-keyword">def</span>&#xA0;<span class="hljs-title">write_case</span><span class="hljs-params">(number)</span>:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">for</span>&#xA0;_&#xA0;<span class="hljs-keyword">in</span>&#xA0;range(number):<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;username&#xA0;=&#xA0;input(<span class="hljs-string">"&#x8BF7;&#x8F93;&#x5165;&#x7528;&#x6237;&#x540D;:"</span>)<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;passwd&#xA0;=&#xA0;input(<span class="hljs-string">"&#x8BF7;&#x8F93;&#x5165;&#x5BC6;&#x7801;:"</span>)<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;age&#xA0;=&#xA0;input(<span class="hljs-string">"&#x8BF7;&#x8F93;&#x5165;&#x5E74;&#x9F84;:"</span>)<br><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;user&#xA0;=&#xA0;dict()<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;user.update(username=username,<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;passwd=passwd,<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;age=age)<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">yield</span>&#xA0;user<br><br><span class="hljs-function"><span class="hljs-keyword">def</span>&#xA0;<span class="hljs-title">run</span><span class="hljs-params">(case)</span>:</span><br>&#xA0;&#xA0;&#xA0;&#xA0;print(<span class="hljs-string">f"&#x8FD0;&#x884C;&#x7528;&#x4F8B;-&#x7528;&#x6237;&#x540D;<span class="hljs-subst">{case[<span class="hljs-string">'username'</span>]}</span>"</span>)<br><br>&#xA0;&#xA0;&#xA0;&#xA0;cases&#xA0;=&#xA0;write_case(<span class="hljs-number">2</span>)<br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">for</span>&#xA0;case&#xA0;<span class="hljs-keyword">in</span>&#xA0;cases:<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;run(case)

Original: https://www.cnblogs.com/heniu/p/16637408.html
Author: 和牛
Title: Python自学笔记11-函数的定义和调用

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/803709/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球