本节内容
- 函数基本语法和特性
- 参数与局部变量
- 返回值
- 递归
- 匿名函数
- 函数式编程
- 高阶函数
- 内置函数
函数式编程
- 面向对象-----类class—class
- 面向过程----过程-----def
- 函数式编程—函数—def
函数的定义:函数是逻辑结构化和过程化的一种编程方法。
python中的定义方法:
def test(x):
"The function definations"
x+=1
return x
注释:
def 定义函数的关键字
test 函数名
() 内可定义形参
代码块+返回值
1 基本定义的例子:

结果显示:

2 日志功能函数:

结果测试:

记录日志的txt文件内容:

3 总结函数的功能:
- 代码重用
- 保持一致性
- 可扩展性
4 函数的返回值

结果测试:

总结:
- 返回值数=0 返回None
- 返回值数=1 返回object
- 返回值数>1 返回tuple(元组)
ps: 为什么函数一定要有返回值?
因为可能后面函数中的逻辑会用到该函数的结果,e.g.登录场景中,根据用户名和密码判断是否是合法用户,从而是否允许获取信息。
参数
1 形参


总结:
关键字 与形参顺序无关
位置 与形参一一对应

默认位置参数,且关键字不能写在位置参数前,否则会报错




2 默认参数
特点:调用函数的时候,默认参数非必须传递
用途:例如安装软件时,一键安装
3 参数组
*常规 args:
接受N个位置参数(不接受字典类型)
两种传参方式:传入参数 直接传或者传入一个列表 前面加*

用途:传入参数的个数不太确定 为以后预留一点空间
测试结果:参数组里的内容整体会变成一个元组
*字典 **kwargs:
把N个关键字参数转换成字典的方式

测试结果:
可以看出 采用关键字传参数 结果保存成字典形式

两种传参方式:
想要打印参数组中的某些项(对字典key-value):

多种参数同时出现:

测试结果:

局部变量

测试结果:

由此可见,函数中的name的作用域只限于局部(函数范围内),非全局变量
- 局部变量->全局变量
“ global+变量名”

测试结果:

问题:
这种用法不符合规范 不应该在函数中去更改全局变量(主要是字符串和单独的整数等) ,出问题时候不容易排查。
若是列表,字典等可以更改
递归
即 在函数内部调用自己的函数----->递归
递归的特性:
1 必须有一个明确的结束条件
2 每次进入更深一层递归时,问题规模比上次递归都有所减少
3 递归的效率不高,递归层次过多会导致栈溢出。


函数式编程
定义:
一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量。只要输入是确定的,则输出就是确定的。
例子:
ps: python不是纯函数式编程语言。
e.g.
(1+2)*3-4
函数式编程写作:
var result = subtract(multiply(add(1,2),3),4);
高阶函数
定义:
变量可以指向函数,函数的参数能够接受变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

测试结果:

本文深入讲解Python函数的基本语法和特性,包括参数与局部变量、返回值、递归、匿名函数等概念,以及函数式编程和面向对象编程的区别与联系。通过实例演示了不同类型的参数使用方法,探讨了局部变量与全局变量的作用范围,并介绍了递归函数的特点。
710

被折叠的 条评论
为什么被折叠?



