python 3.x 学习笔记4(函数)
1.编程方式分:面向对象、面向过程、函数式编程
2.区分
面向对象----》类----》class
面向过程----》过程----》def
函数式编程----》函数----》def
3.编程语言中函数的定义:
函数是逻辑结构化和过程化的一种编程方法
4.过程是没有返回值的函数
5.使用函数的优点:
1)代码可重复使用
2)代码可保持一致性
3)可扩展性
6.
当一个函数/过程没有使用return显示的定义返回值时,python解释器会隐式的返回None,所以在python中即便是过程也可以算作函数。
7.返回值
返回值的数等于0,返回None
返回值的数等于1,返回object
返回值的数大于1,返回tuple
8.参数
1)形参和实参形参:形式参数,不是实际存在的,是虚拟变量 。在定义函数体的时候使用形参,目的是在函数 调用时接受参数(形参参个数、类型与实参一一对应)
实参:实际参数,调用函数时传给函数的参数,可以是常量、变量、表达式、函数,传给形参
2)位置参数和关键字参数
标准调用:实参与形参位置一一对应;
关键字调用:位置无需固定
3)默认参数
特点:调用函数的时候,默认参数非必须传递
4)参数组
*args 接收n个位置参数,转换成元组的方式
**kwargs 接收 n个关键字参数,转换成字典的方式
9.局部变量
只在局部范围内发生作用,即只在函数内部发生作用
10.全局变量
全局变量作用域是整个程序,要把局部变量变成全局变量用global,但是不建议在函数里使用,可能会出现很严重bug
11.局部变量除了整数、字符串不能影响全局变量,像字典、元组、列表、类都可以更改,并影响到全局变量
12.递归
如果一个函数在内部调用自身,这个函数就是递归函数
13.递归特性
1)必须有一个明确的结束条件
2)每次进入更深一层递归时,问题规模相比上次递归都应有所减少
3)递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出
14.高阶函数
变量可以指向函数,函数的参数能接收变量,那么一个函数可以接收另一个函数作为参数,这种 函数就称之为高阶函数。
15.函数详解: