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

python函数总结(python函数总结报告)



理解函数及其执行过程、函数的参数,以及匿名函数的使用。

在写程序的时候,我们会遇到这样一种情况:需要多次使用相同的功能。如果每次都把实现这个功能的代码写一遍,那也太麻烦了;而且在需要修改的时候,也很麻烦,非常容易遗漏。

为了解决这类麻烦,我们把实现相同功能的代码只写一遍,并且把它作为一个代码块封装起来,再给封装好的代码块起个合适的名字。在任何需要使用该功能的地方,只需要使用之前起好的名字即可,不用重新写一遍相同的代码。

实际上,上面就是创建函数的过程。实现功能的代码块就是函数主体,代码块的名称就是函数名。定义(或创建)函数使用def关键字。示例如下:

使用之前定义好的函数,简称“函数调用”。当我们在调用函数的时候,系统会根据函数名找到对应的函数,然后执行函数的主体代码。

注意:函数要先创建才能调用,所以,调用函数的代码一定要写在定义函数之后;否则,会提示函数未定义。

说明:“函数”也叫作“方法”,在面向过程编程中,通常叫作“函数”;在面向对象编程中,通常叫作“方法”。

上面定义的是最简单、最基本的函数。如果想实现更灵活、更高级的功能,就得给函数设定参数

定义函数的时候,函数名后面有一对小括号,设定的参数都要写在这对小括号里。

参数的数量根据实际需要进行设定,多个参数使用逗号分隔。在调用函数传参的时候,多个参数之间也要用逗号分隔。

注意:调用函数的时候,一定要注意被调用函数的参数设定,如果只设定了一个参数,调用的时候也要传入一个参数;如果设定了两个参数,调用的时候也要传入两个参数。传入参数的数量和设定函数的数量一定要对应,不能多也不能少。同时还要保持参数数据类型一致。

以自我介绍函数为例,在定义函数的时候,设定了两个参数,一个参数名叫“name”,另一个参数名叫“age”,这里的name和age并不是两个实际意义上的变量,并不占用内存地址,它们只是从形式上表达函数主体执行时所需的变量,叫作“形式参数”,简称“形参”。

在调用自我介绍函数时,传入了两个参数,一个参数值为“张三”,另一个参数值为3,这两个数据都会占用内存地址,并且它们是本次函数调用实际使用的参数,叫作“实际参数”,简称“实参”。

可以简单归纳如下:函数定义时类似变量名的参数,叫作形参;函数调用时实际传入的参数,叫作实参。

函数除了函数名参数,还有一个重要要素——返回值

如果函数体内没有return语句,返回值默认为None。如果想让函数返回指定的内容,需要使用return语句。

上面的return语句后面是变量c,就会返回变量c中存放的数据。如果只有return关键词,后面什么都不写,那就是返回None,跟不写return语句是一个效果。

注意:函数的返回值只有一个,默认返回值为None。

函数的返回可以用变量来接收,用于后续操作

思考一下:函数的形参叫作“num”,函数返回值存入的变量也是“num”,这两个“num”会相互影响吗?动手实验一下。

这里牵扯到“作用域”的概念。所谓“作用域”,就是作用范围(或生效区域)的意思。变量只有在自己作用域之内才会执行。

形参的作用域只在函数主体代码范围内生效,是局部生效的变量,简称“局部变量”。上面函数返回值存入的变量,在整个Python文件中都生效,是全局生效的变量,简称“全局变量”。

1、位置参数

位置参数是一种传参方式,是指函数调用时实参以“value”的形式传入函数,被调用函数会根据实参传入的顺序依次赋值给形参。实参顺序的改变会导致函数运行结果的改变。

2、关键字参数

关键字参数也是一种传参方式,是指函数调用时实参以“key=value”的形式传入函数,这样就算打乱实参的传入顺序,也不会影响最终结果。

总结如下:

位置参数和关键字参数的本质区别就是实参的赋值逻辑不同,位置参数根据顺序赋值,关键字参数根据名称赋值。

3、位置参数和关键字参数的混用

在实际使用中,以上两种传参方式可以混合使用。但是关键字参数必须放在位置参数之后,否则会报错。

4、默认参数

默认参数是在定义函数的时候,为形参指定默认值,在函数调用的时候,如果传入实参,Python就会使用指定的实参;如果没有传入实参,Python将自动调用默认值。因此,默认参数的出现,使得函数的调用更加简化、更加灵活。

注意:默认参数必须放在参数列表的最右端。

5、可变参数

有些时候,参数的数量无法预知。比如:分别打印每个班的学生成绩。有的班人数多,有的班人数少,也就是说,需要处理的参数的个数是动态变化的,简称“可变参数”。

根据调用函数时传入参数的方式不同,又分为“可变位置参数”和“可变关键字参数”。

在定义形参时,可变位置参数通常使用“*args”表示,可变关键字参数通常使用“kwargs”表示。

注意:定义函数或调用函数的时候,一定要确保可变位置参数在前,可变关键字参数在后

通过多次试验,不难发现,Python会把可变位置参数封装成一个元组,把可变关键字参数封装成一个字典。既然如此,我们可不可以传入一个列表当做可变位置参数,传入一个字典当做可变位置参数呢?

动手操作一下,验证自己的猜想。

我们希望把实参列表里的元素封装进args原则里面,把实参字典里的元素封装进kwargs字典里面。但是,运行结果和预期的不一样,Python把传入的列表和传入的字典一起封装进了一个args元组里面,kwargs字典是空的。这是为什么呢?

我们再来重新思考一下:无论列表、元组、字典还是集合,都是对若干数据的一种“打包处理”,Python中简称“封包”,封包之后,里面的所以元素对外就变成了一个整体,可以使用列表名、元组名、字典名或集合名直接访问。传入可变参数的时候,我们希望将列表里的每个元素都重新封包到args元组中,将字典里的元素重新封包到kwargs字典中,而不是将实参的整个列表和整个字典分别看作一个整体;所以,首先要把实参列表的“包装”拆开,取出里面的每一个元素,这个过程在Python中简称“解包”,然后,将解包出来的每个元素重新封包进args元组。同理,实参字典也是需要先解包,再封包,最后形成kwargs字典。

这很简单,模仿可变参数的形参定义,只需在实参列表前面加上1个“*”号,在实参字典前面加上2个“*”号,Python识别到解包信号之后,会自动执行解包操作。

现在的运行结果符合预期。实际上,可变位置参数,不一定非要传入列表,只要是一个可迭代对象都行,比如:字符串或元组。

思考:

2、对于不带参数的函数,输入并运行以下代码:

3、对于带参数的函数,输入并运行以下代码:

匿名函数,就是没有函数名的函数。此外,匿名函数还是有一个特点:它的主体程序只有一个表达式,表达式的结果,就是匿名函数的返回值。所以,匿名函数最显著的特点就是简短、灵活,随用随定义,也叫“一句话函数”。

匿名函数使用lambda关键字定义,参数列表和表达式之间使用“:”分隔,多个参数之间使用“,”分隔,具体语法格式如下:

lambda 参数1,参数2[, 参数3 ...]:表达式

lambda匿名函数的参数可以有0个或多个,但表达式有且只能有一个

以上示例中,给每一个匿名函数都起了一个名字,这和一般函数其实没啥两样。实际上,匿名函数通常作为参数,传递给内建函数map()、filter()、reduce()使用,这样才能充分发挥匿名函数的灵活与便捷。

请回看上一节的有关内容:Pyhton少儿编程(16)核心函数(方法)


(一)单选题:

1、以下选项哪一个不属于函数的作用(  )。

A、提高代码的执行速度

B、提高代码的重复利用率

C、增强代码的可读性

D、降低编程的复杂程度

A、lambda r: 3. * r * r

B、result = lambda r: 3. * r * r

C、lambda r, 3. * r * r

D、result = lambda r,3. * r * r


(二、判断题)1、以下代码:

运行结果如下:(  )

<完>

-->参考答案往下翻<--

-->参考答案<--


一、单选题:

1~4:A、B

二、判断题:

1:

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

版权声明


相关文章:

  • win32gui.FindWindowEx的参数python(pywin32 findwindow)2025-02-06 10:09:06
  • python 字典 增加(python字典增加元素代码)2025-02-06 10:09:06
  • python deque函数(python中deque())2025-02-06 10:09:06
  • sigmoid函数输出范围(sigmoid函数python)2025-02-06 10:09:06
  • python怎么编写函数(python编写函数判断三角形)2025-02-06 10:09:06
  • python服务器部署上线流程(python3 服务器)2025-02-06 10:09:06
  • python 函数的类型(python函数有哪几类)2025-02-06 10:09:06
  • sigmoid算法(sigmoid函数python)2025-02-06 10:09:06
  • int怎么用python(int怎么用Excel)2025-02-06 10:09:06
  • conda虚拟环境列表(conda创建虚拟环境 python版本不对)2025-02-06 10:09:06
  • 全屏图片