Python学习--函数篇

本文详细介绍了Python函数的创建、调用、参数传递方式(位置实参、关键字实参、默认值参数、可变参数)、返回值、参数定义、变量作用域以及递归函数的概念和特性。通过实例解析,帮助读者掌握Python函数的核心概念。
摘要由CSDN通过智能技术生成

一、函数的创建和调用

函数就是执行特定任务以完成特定功能的一段代码

函数可以提高代码复用率,隐藏实现细节,提高可维护性,提高可读性以便于调试

1. 函数的创建格式

2. 定义一个不带参函数并调用

 3. 定义一个带参函数并调用

 

 二、函数的参数传递

函数的参数传递分为 位置实参传递关键字实参传递

关键字实参:是根据形参的名称进行实参传递

位置实参:是根据形参的名称进行实参传递

函数主体

 关键字实参

 位置实参

还有另一种传递参数的分类方式,那就是按照传递的参数是可变还是不可变来分类

不可变对象:在函数体的修改不会影响实参的值

可变对象:在函数体的修改会影响实参的值

其中n1是不可变对象,n2是可变对象,将n1,n2传入函数中,函数调用后第一次的输出结果为n1,n2的值,第二次输出的结果为arg1,arg2的值 ,其中n1的值不会发生改变,但是n2的值会发生改变与arg2相等。

结果

三、函数的返回值

函数返回多个值的时候,返回的是元组

函数只有一个返回值时,返回的是原类型

函数不需要返回值时可以不写return语句

 运行结果

四、函数的参数定义 

 1. 函数定义默认值参数

函数定义时,给形参设置默认值,只有与默认值不符的时候需要传递实参

例如:

 其中给形参b赋了值,当调用函数只传入一个实参时,就会默认形参b = 10

但是如果传入两个参数时,就会输出实际传入的参数值

2. 定义个数可变的参数

 个数可变的位置参数

定义函数时,可能无法事先确定传递的位置实参的个数,就可以使用可变位置参数

使用*定义个数可变的位置形参

位置形参的结果是一个元组

 个数可变的关键字参数

定义函数时,可能无法事先确定传递的关键字实参的个数,就可以使用可变关键字参数

使用**定义个数可变的关键字形参

结果为一个字典

例如:

 函数fun()中定义的就是个数可变的位置参数,可以看到调用函数后输出的参数值的类型为元组型

 函数fun1()中定义的是个数可变的关键字参数,调用函数后输出的参数值类型为字典型

tips:可变的位置参数/关键字参数只能有一个,可以同时有一个关键字参数和一个位置参数,但是必须位置参数在前面,关键字参数在后面。

 3. 总结

函数调用时传入的是位置实参/关键字实参

函数定义时传入的是位置形参/关键字形参,可变的位置形参/关键字形参

tips:如果想要将元组或者列表利用位置传参传入有多个形参的函数中,可以在变量名前加上*

如果想要将字典利用关键字传参传入有多个形参的函数中,可以在变量名前加上**

如果在形参加上*,那么后面的形参只能利用关键字传参,不能利用位置传参

五、变量的作用域

程序代码能够使用的区域,分为局部变量全局变量

局部变量:只在函数内部有效

全局变量:可作用于函数内外

如果想将函数内部调用的变量变成全局变量,需要在变量名前面加上一个global关键字

 

 六、递归函数

如果在函数体内部调用这个函数,那么这个函数就叫做递归函数

递归函数是由递归调用递归终止条件组成的

递归的调用过程:每次递归调用一次函数,就会在栈内分配一个栈帧,每执行完一次函数就会释放相应的空间

递归的优点:思路和代码简单 缺点:占用内存多,效率低下

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值