当前位置:网站首页 > Python编程 > 正文

Python函数的定义和调用例题(python定义函数和调用函数)



在之前的章节中,针对各类对象调用了非常多的函数,这些都是Python的内建函数。这些函数的功能都是预先设计好的,但在实际生产过程中,使用最多的还是自定义函数。

创建函数的目的是封装业务逻辑,实现代码的重用。本小节主要介绍如何创建和调用函数。

1.创建函数

一个完整的函数由函数名、参数列表、返回值构成。创建函数有以下规则。
(1)一个函数若是没有名称,则称为匿名函数。
(2)Python中使用def关键字定义命名函数。
(3)函数可以没有参数,也可以有多个不同类型的参数。
(4)函数可以有多个返回值,也可以不指定返回值,此时默认的返回值为None。
(5)在其他语言中,有函数签名和函数定义的区别,而在Python中,这两个概念统一后,即一个没有具体业务逻辑的函数,在代码块中使用" pass "代替。
创建函数的方式,如下





 
  

执行结果如下

 
  
2.调用函数

与大多数编程语言一样,通过函数名加一对小括号并正常传递参数,即可完成函数调用。需要注意的是,函数调用需要在函数申明之后,否则会触发异常,如下

 
  

执行结果如下,为什么在第6行调用了sub报错,而第2行调用sub就能正常执行了呢?原因是代码是从上往下解析的,调用sub时,sub方法还未创建。sub方法是在第10行创建的,在第13行调用add方法时,sub方法已经创建完成,因此得到正确的结果。

 
  

Python函数的参数具有灵活性,其定义的方法可以接受各种形式的参数,也可以简化函数调用方法的代码。

1.位置参数

如下,func1函数具有1个位置参数,func2函数具有2个位置参数。在对函数进行调用的时候,有几个位置参数就需要传递几个参数,否则会触发异常。并且,传入参数与函数参数列表是一一对应的,如第13行,a等于10,b等于20。

 
  

执行结果如下

 
  
2.可选参数

如下,可选参数是指带有默认值的参数,在对该函数进行调用的时候,可以不必显示传递该函数。当不传递默认函数,函数将使用默认值,如第6行;若传递默认函数,函数将使用传入的值,如第8行。可选参数常用于修改一个现有的函数,避免该函数在其他调用的地方出错。

 
  

执行结果如下

 
  

可选参数在定义的时候,需要写在位置参数的后面,否则会报错。另外,在设计多个可选参数的时候,建议将经常变化的参数写在前面,长期不变的写在后面。在调用有多个可选参数的函数是,参数的对应关系是优先根据传递位置来决定的,除非显示指定参数名。若是没有传递的参数,该参数仍然使用默认值,如下

 
  

执行结果如下

 
  

对参数提供默认值,可以提高调用方代码的灵活性,但也有可能出现bug,如下

 
  

执行结果如下,调用方认为每次都只应该输出一个" hello ",然而实际上输出的内容会随着调用次数的增加而增加。原因是在创建函数时,a对象就已经被创建好了,等于一个空列表。在调用过程中修改了a对象,那么a的默认值就变了,因此每次调用a对象都会使用上次调用改变后的值。

 
  

解决办法是将默认参数修改为不可变对象,如下

 
  

执行结果如下

 
  
3.可变参数与关键字参数

可变参数是指在传递参数时,可以传递任意个数的参数;关键字参数是指可以传递任意个包含名字的参数。如下,func1函数定义的可变参数,适用于传递列表、元组,使用" * “;func2函数适用于传递字典,字典中的键名即为参数名称,使用” ",这一点和参数解包的逻辑是一样的。

 
  

执行结果如下

 
  

以上是对于已有列表、元组、字典对象进行传递,还可以不使用" * ",直接传递,如下

 
  

如下,第2行参数列表中有一个" * “,之后的参数就是关键字参数,其名称是” c " 和" d “,调用方式如第12行所示。当” * “后面紧接着名称,如第7行,则不必单独写一个” * "。

 
  

执行结果如下

 
  

Python中的函数可以使用return返回数据,也可以不用return返回,则默认返回" None "。在Python中,所有事物都被当做对象,函数也是一个对象,因此函数的返回值可以是另一个函数。

1.返回零到多个值

如下,func1函数,没有使用return返回数据,因此默认返回值为" None "。func2函数有多个返回值,默认情况下,这些返回值将构成一个元组进行返回,因此在倒数第5行,变量a是一个元组类型。func2函数返回了两个值,因此在倒数第2行定义了两个变量,分别接收这两个值,这成为返回值解包。

 
  

执行结果如下

 
  
2.返回函数

如下,在fun1函数中返回了fun2的函数名称。那么在第7行,变量fun就是一个函数对象,因此输出fun的类型为<class’function’>。既然fun是函数,那么在fun后面加一对小括号就能对其进行调用,如第9行

 
  

执行结果如下

 
  

全局变量和局部变量是一个相对的概念,在函数内部的变量,称为局部变量;在该函数外的变量,称为全局变量。若是需要将变量对所有函数可见,则需要加global关键字进行修饰。如下,global将var1、var2、var3都变成了全局变量,因此在fun方法外,还能正常访问,访问变量var4,程序则会触发异常。

 
  

执行结果如下

 
  

注意,在Python中,使用global方法,可以获取当前程序内部所有的全局变量
本篇文章就到这里结束了,希望能给小伙伴们一些帮助,喜欢的小伙伴们可以三连支持一下博主!!

到此这篇Python函数的定义和调用例题(python定义函数和调用函数)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • python执行pyc文件(python3.7运行py文件)2025-11-20 07:27:09
  • python删除虚拟环境(虚拟环境 python)2025-11-20 07:27:09
  • py文件如何执行(python执行py文件)2025-11-20 07:27:09
  • python函数大全及详解(python函数大全及详解 pdf)2025-11-20 07:27:09
  • python函数定义及调用(python函数的定义和调用代码)2025-11-20 07:27:09
  • python解析pcap文件(python 解析文件)2025-11-20 07:27:09
  • python字典的增删改查(python 字典 增加)2025-11-20 07:27:09
  • python函数怎么返回多个值(python函数返回多个值的方法(入门必读))2025-11-20 07:27:09
  • python中的函数包括(Python中的函数包括)2025-11-20 07:27:09
  • win32gui.FindWindow(win32gui.FindWindowEx的参数python)2025-11-20 07:27:09
  • 全屏图片