2019-05-28
函数总结:
在一个完整的项目中,某些功能会反复使用。那么会将功能封装成函数,当我们要使用这个功能的时候直接调用这个函数即可。
1、本质:函数就是对功能的封装
2、优点:
1、简化代码结构,增加了代码的复用度(重复使用的程度)
2、如果想修改某些功能或者修改某个BUG,修改函数的对应的错误即可
3、定义函数:
def 函数名(参数1,参数2,参数n):
语句
return 表达式
def:函数代码块以def关键字开始
函数名:遵循标识符规则
():是参数列表的开始与结束
参数列表(参数1,参数2,......,参数n):任何传入函数的参数和变量必须放在圆括号之间,用逗号分隔。函数从函数的调用者哪里获取的信息
冒号:函数内容(封装的功能)以冒号开始,并且要缩进
语句:函数封装的功能
return:一般用于结束函数,并返回信息给函数的调用者,
表达式:即为要返回给函数的调用者的信息
注意:最后的return 语句表达式,可以不写,相当于return None
传递参数:
1、值传递
传递的是不可变类型(string,tuple,number不可变的)
2、引用传递
传递的是可变类型(list,dict,set是可变的)
关键字参数
允许函数调用时参数的顺序与定义时不一致
使用关键字参数
默认参数
调用函数时,如果没有传递参数,则使用默认参数。
以后要用默认参数,最好将参数放到最后。
不定长参数
能处理比定义时更多的参数
def func(name,*arr)://arr可以随便写 print(name) for x in arr: print(x) func("sunck","good","nice","handsom")
加了*arr的变量存放所有未命名的变量参数,如果在函数调用时没有指定参数,他就是一个空元组
**代表键值对的参数字典,和*所代表的意义类似
函数种类:
1、匿名函数
不使用def这样的语句定义函数,使用lambda来创建函数
特点 :
1.lambda只是一个表达式,函数体比def简单
2、lambda主体是一个表达式,而不是代码块,仅仅只能在lambda表达式中封装简单的逻辑
3、lambda函数有自己的命名空间,且不能访问自由参数列表之外的或全局命名空间里的参数
4、虽然lambda是一个表达式且看起来只能写一行,与C和C++内联函数不同,
格式:
lambda参数1,参数2,...参数n:expression
sum=lambda num1,num2:num1+num2
print(sum(1,2))
2、偏函数
使用base进制
把一个参数给固定住,形成一个新的函数
引入import functools模块,例如下面:
int3=functools.partial(int,base=2) print(int3("111"))
变量的作用域
变量可以使用的范围
程序的变量并不是在所有位置都能使用,访问的权限决定于变量的在哪里赋值的