python之函数专题

一.函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。有了函数,我们可以在很大程度上减少复制及粘贴代码的次数,我们可以把相同的代码可以提炼出来做成一个函数,在需要的地方只需要调用即可。那么,这样就提高了代码的复用率了,整体代码看起来比较简练。
下面我们讲解有关函数的知识点:
函数在Python中是最基本的程序结构,用来最大化地让我们的代码进行复用;与此同时,函数可以把一个错综复杂的系统分割为可管理的多个部分,简化编程、代码复用。

1.更简洁的讲,什么是函数?

函数:就是一个功能,一个解决某一个问题的一个过程

(C语言是面向过程的程序语言,此处的过程便是函数,定目标→分成N个小目标→一一去实现)

2.为什么使用函数

有可能重复的代码封装起来,起一个名字,当用到这段代码时调用这个名字,本质是这段代码被调用了,这段代码具有特定功能,用来解决一个或一类问题。

3.python如何定义函数
#规则:def ===> define function 定义函数
#函数的名称定义和变量的命名规则保持一致

 def 函数名称([参数列表…])
	函数体
	return 返回值

函数是一个标准的代码块

4.如何调用函数

函数名称([实参列表])

当函数定义时,为了函数更加灵活和方便,把一些不能确定的值写成参数

5.函数的类型
可以根据以下条件归纳函数的类型:

1.函数有没有参数,可以将函数分为有参函数和无参函数
2.函数有没有返回值
3.函数的定义者:
	1>.通过有无参数
		①有参函数
		②无参函数
	2>.通过有无返回值
		①有返回值
		②无返回值
	3>.第三方定义的函数(开元公司,机构,组织)

如果我们需要函数运算,最后需要得到运算结果,那么我们就需要将该函数定义有返回值的函数

解释性的代码是从上而下执行的

3.全局变量和局部变量

函数内部定义的变量叫做局部变量
定义在函数外部的变量叫做全局变量

此时便要引出一个知识点:函数的调用。

函数的调用:函数的调用本身是一个压栈过程,等函数执行完成,函数就会立刻出栈(弹栈)所以一般情况下不能修改全局变量,要想修改全局变量,便要声明,声明如下:

global 全局变量

如果强制修改全局变量结果会报错,因为压栈出栈的问题,一个生命周期短的操作不能修改一个生命周期长的全局变量(在函数里面的操作都会压栈出栈),如下图:
在这里插入图片描述
报错如下:
在这里插入图片描述

应该改成
在这里插入图片描述
结果:
在这里插入图片描述
二.引用传递(传递的是地址)

在这里插入图片描述
a最后显示出来的是test的地址
在这里插入图片描述
原因如下:
在这里插入图片描述
a此时也是一个函数了
在这里插入图片描述
在这里插入图片描述
三.函数参数(默认值参数,命名参数,可变参数,万能参数)
当函数参数特别多时,为了解决调用时传参麻烦,有下:

1.默认值参数:在python中有些参数一般而言,值是固定的,给该值一个默认值,调用这个函数,如果给该参数传递了一个值,则按传递的值算;如果没有传递值,则按默认值算(有默认值的必须放在普通参数的后面)

2.可变参数:在python中,当一个参数特别多时,可以使用可变参数来接收这些参数,* 参数名(不能和其他参数名一样),当不是普通参数时,剩余的参数都会被该可变参数接收(注意,可变参数类型是元组),依然写在普通参数后面
3.命名参数:**参数名,以字典的接收并输出键值对(只匹配键值对)

(print(“abc”,end="")) #end=""是命名参数,默认是end = “\n”

4.万能参数:组合参数,当定义函数的时候,有时候需要保留扩展函数功能时,使用可变和命名参数来完成

,和** 参数位置是固定的,因为就是用来接收普通参数剩下的参数)

四种参数的位置是(普通参数-->默认值参数-->可变参数-->命名参数)

四.函数递归
1.递归:函数自身调用自身,函数调用是以压栈的形式调用,但因为栈的空间是有限的,容易栈溢出
2.在递归中,如果没有结束条件,则递归是一个死循环
在这里插入图片描述
五.lambda表达式
1.匿名函数的使用,因为python不支持匿名函数的使用,所有引入lambda表达式
在这里插入图片描述
2.匿名函数的标准写法:

lambda [参数1,参数2,,,,参数n] :语句
lambda x,y:x+y

等价于–>

def add(x,y)
	return x+y

注意: 在python中,lambda虽然简化了代码书写,增强了代码的维护成本,但是代码的可读性下降了

发布了17 篇原创文章 · 获赞 2 · 访问量 369

猜你喜欢

转载自blog.csdn.net/qq_44487069/article/details/104469246