函数浅析
来源:互联网 发布:python 捕捉ctrl c 编辑:程序博客网 时间:2024/06/07 08:09
函数
函数分为面向三种
1
2
3
4
5
6
7
1、面向对象
2、面向过程
3、函数式编程
函数的特点是重用(简化代码)、保持一致性、可扩展性
函数是有返回值的方法如下面代码
1
2
3
4
5
6
7
8
9
defdemo_fuc(): # 函数有返回值
'''testing'''
print("in the demo_fuc")
demo1()
return0
1
过程是没有返回值的,如下面代码
1
2
3
4
5
6
7
defdemo_fuc1(): # 过程是没有返回值的函数
'''testing1'''
print("in the demo_fuc1")
demo1()
函数之间的传参
形参和实参的区分
1
2
3
4
5
6
# 形参和实参是一一对应的
defdemo_parameter(x,y): # x y 代表形参
print(x)
print(y)
1
demo_parameter(1,2) # 12是实参 这是位置参数调用 参数化与位置对应
参数的调用分为位置参数调用、关键字参数调用
1
2
3
demo_parameter(y=3,x=4) # 关键字调用 与形参顺序无关
demo_parameter(1,y=8) # 关键参数必须写在位置参数后面
Python中有默认参数的概念
1
2
3
4
5
6
7
8
9
10
11
# 默认参数
# 默认参数的特点:默认参数可有可无 非必填像
# 用途:默认安装值 True or false,数据库端口号
defdefault(x,y=3): # y 有默认参数
print(x)
print(y)
Python中有参数组的概念
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 参数组*args
# 参数组定义完单个* 转成元组
defparameter_group(*args): # 参数组 只接受N个位置参数 转换成元组的形式
print(args)
parameter_group(1,2.3,3)
defblend_parameter(x,*args): # 扩展参数 相传多少穿多少 args是规范
print(x)
print(*args)
Python中还可以传key value 这种格式的参数 在形参写为**args
1
2
3
4
5
6
7
8
9
10
defdict_parameter(**args): # 将传的N个 关键字 参数转成字典的方式 关键字
print(args)
print(args['name']) # 获取字典的value
print(args['age'])
dict_parameter(name='hyf',age=11)
各种参数的使用是有顺序的看下面代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 位置参数、默认参数、可变参数、关键字参数4种一起用的话,必须按照前面的顺序来使用
defAll(name,age=18,*args,**kwargs):
print(name)
print(age)
print(args)
print(kwargs)
All('houyafan',1,23)
高阶函数
1
2
3
4
5
6
7
defadd(a,b,f):
returnf(a)+f(b)
a=add(1,-2,abs())# 将函数传进去去处理里面的值 没什么卵用 one day i can do it
print(a)
五、局部变量
1
2
3
4
5
1、局部变量只在函数中生效,这个函数就是这个变量的作用域
2、全局变量是在整个程序都生效的变量
3、函数中是不更改全局变量的如果要更改需要声明globalteacher
4、只有字符串和数字不能在函数里面更改
<strong>*****禁忌:不应该在函数里面更改全局变量*****</strong>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
teacher='alxe'
defchang_name():
globalteacher # 声明更改全局变量 禁忌:不应该在函数里面更改全局变量
teacher='houyafan'
print(teacher)
chang_name()
print(teacher)
六、递归
递归的定义
1
2
3
4
5
6
7
8
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
递归特性:
1.必须有一个明确的结束条件
2.每次进入更深一层递归时,问题规模相比上次递归都应有所减少
3.递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧<emid="__mceDel">每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,</em>
1
2
<em>所以,递归调用的次数过多,会导致栈溢出)
</em>
1
2
3
4
5
6
7
8
9
10
11
12
13
# 最简单的递归函数
defcalc(x):
print(x)
ifint(x/2)>0:
returncalc(int(x/2))
print(x)
calc(10)
阅读全文
0 0
- 函数浅析
- 函数浅析
- oracle分析函数浅析
- 构造函数浅析
- 浅析拷贝构造函数
- 浅析gethostbyname函数
- 构造函数浅析
- 虚函数浅析
- 构造函数浅析
- linux fork函数浅析
- 浅析函数指针
- 浅析gethostbyname函数
- linux fork函数浅析
- 拷贝函数浅析
- 浅析C#构造函数
- 浅析函数指针
- fork函数浅析
- linux fork函数浅析
- SSH架构的应用开发—部署SSH(一)
- strcpy和strncpy函数实现
- 八,发送项目
- 九、完善信息
- MySQL数据库中delimiter的作用概述
- 函数浅析
- 分治 第k小元素
- 【Java利器之】Intellij Idea创建一个简单的java项目
- 洛谷 P1965 转圈游戏
- 微信蓝牙BLE接入调试指引
- Java类加载器总结
- 系统启动流程(七)
- FPGA资料
- windows下Solr安装