今天是Python第七天的分享,不知不觉,已经学习Python7天了。 今天给大家分享在Python中函数的一些知识和用法,相比上一条这一篇更详细一些。对于我这个刚进编程大门的小白,还希望看到的大佬多提出一些自己建议和看法,我会积极改善努力学习。
- 函数:
函数是带名字的代码块,用于完成具体的工作。
当你要执行函数定义的特定任务,可调用该函数。需要在程序中多次执行同一项任务时,你无需反复编写完成该任务的代码,而只需调用执行该任务的函数,让Python运行其中的代码。你将发现,通过使用函数,程序的编写、阅读、测试和修复都将更容易。
1、定义函数:
下面是一个简单的函数定义,
首先用def关键字来告诉Python你要定义一个怎样的函数,即函数定义,向Python指定函数名,并让其完成一些什么具体操作。在这里,我定义一个函数叫hello,它的作用就是当你需要输出”Hello world”的时候无需手动输入代码,只需要调出”hello”这个函数即可。
2.引用传递:
引用函数,实质是在传递内存地址
在上图代码中,首先在栈中出现kk函数指向堆中的内容,再将kk函数赋值引用给a(栈中),b即函数kk的调用,输出a即输出函数kk(函数kk返回值4),输出b即调用kk函数(返回值4)。实质就是将kk函数从栈到堆得路径引用给a。
3.函数默认值
在Python中,可以为函数的参数给予默认值,一旦某个存在默认值,那么如果在调用的时候,不传递这个参数,则按照默认值,减少调用时的复杂操作。
#注意:在定义函数时,如果存在有默认值的参数,一定要写在没有默认值的参数后面,否则在调用时,无法确定参数到底传递给哪个对象。
如上图函数,我们把PI的值改为默认3.14:
当我们需要更改时:
4.变量和局部变量
全局全局变量:就是定义在py文件中,能被任何函数、类能够正常访问的变量。
局部变量:定义在函数内部变量,叫做局部变量
注意:函数本身是对象,存储在堆中,但是函数的调用是在栈中调用,压栈
输出结果:
如果想要在函数内增删改全局变量:需要用到global关键字
输出结果:
5、参数问题:
1.默认参数
即参数默认值,在上述中已有提及。
2.可变参数
结果:
3.命名参数
结果:
4.万能参数(命名+可变参数)
结果:
5、匿名函数
lambda表达式
lambda:语言
def a():
print("hello world")
# lambda:print("hello world")
def add(x, y):
return x + y
# lambda x,y: x + y
优点:简化代码书写
缺点:降低了代码的可读性,增加代码的维护成本
----------------------------------------------------------------------------
6、递归
递归的必要条件:
1、函数自身调用自身
2、要有终止条件(死循环)
例如:
结果报错:
我们求0-100和,我们可以调用函数自身完成累加过程,递归函数用的是栈中的堆积,速度相对较快,栈被占满后,速度大幅下降。在python中不超过1000次,否则报错。必须有自身的终止条件。