python之函数式编程
一、定义和使用
1、函数时编程的作用:降低代码的重复率,增强代码的可读性
2、格式: def 函数名(参数):
函数体
返回值
def表示关键字,代码执行到def时,就知道这是函数,程序会将其放置内存不执行它,只有调用函数时才会被执行
函数名:函数的名称,日后根据函数名来调用函数
参数:为函数提供数据
函数体:执行一系列的操作,如:打印,计算0-100的和等
返回值:当函数执行完毕后,可以给调用返回数据
3、返回值
函数是一个功能模块,该功能是否执行成功与否,需要通过返回值来告诉调用者
需要注意的两点:
1)若没有return,默认返回None
2)一旦遇到return,函数内部return 以下的代码都不执行
4、参数(为函数提供数据,函数根据不同的数据执行不同的功能)
1)实参、形参
1、形式参数:在定义函数时,括号里面没有实际值的参数
2、实际参数:在调用函数时,括号里面有实际值的参数
2)普通参数
在调用时,参数数量要和定义时一致,且按顺序一一对应
3)指定参数
在调用时,直接将实际值赋给形参,这样就不需要位置一一对应了
def main(a,b): print(a) main(1,100) #普通调用 ,a对应1 ,b对应100 main(b=1,a=100) #指定参数的调用,a对应100,b对应1
4)默认参数(默认参数要放在函数尾部,如:def fun(a=1,b)× def fun(b,a=1)√)
在函数定义时,将形参指定默认值,当调用时没有传入实参,则Ⅹ用默认值,若传入实参则使用实参
例:def fun1(a,b=1)
fun1(2) #没传入实参,b等于默认值1
fun1(2,3) #传入实参,b等于实参3
5)动态参数
1、在参数前加 * ,表示允许传入多个参数
a、直接调用,每个实参被当作a的一个元素
def main(*a): print(a,type(a)) main([1,2]) 结果:([1,2]) <class 'tuple'> #a 是元组,每个实参就是 a 的一个元素
b、在实参前加 * ,实参的每个元素相当于形参中的元素
def main(*a): print(a,type(a)) main(*[1, 2]) 结果:(1, 2) <class 'tuple'>
2、在参数前加**,允许传入键值对(**kwargs :kwargs是字典类型)
a、直接调用
b、在参数前加**
3、设置两个参数*args(arguments 参数),**kwargs(key word arguments 关键字参数)
调用同上两种,键值对则放入kwargs,反之放入args
5、局部变量和全局变量
全局变量
用大写,这样便于区分
要修改,前加global
局部变量
用小写,只能在函数内部调用
二、参数传递
python中参数传递是将值的引用传递给形参
其它语言有两种方式可选择:
1、传递引用,指向同一个值
2、重新创建一个值,再传给形参
三、判断对象是不是字符串、列表、元组或字典等数据类型
isinstance(x,A_tuple):判断对象是不是对应的数据类型
输入:x表示对象名,A_tuple表示类名(可以是:str、int、tuple、list、dict等)
功能:判断对象类型
输出:当对象的数据类型和后面的类名一致时,返回True,否则返回False
>>> isinstance(12,int) True >>> isinstance('12',int) False >>> isinstance({1:'12'},dict) True