一、函数的定义方式:
使用的是
def functionname():的结构。
def functionname():
"funcation_documnent_string"
方法体
二、Python中的函数的特点
1、Python中的
函数不允许在未声明前使用,也就是在调用这个函数之前最好的以及将这个函数写在前面了。
2、函数中是可以嵌套函数的。(个人建议不要这样做)
3、
函数是可以作为形参和实参的,可以传递给具体的方法。例如有函数fun1(),作为参数传递给fun2(fun1,其他参数),那么在fun2中使用fun1的时候写成fun1()即可。
三、函数的参数(重点)
1、位置参数:所谓的位置参数就是像fun(n1,n2)中的n1,n2这种的。
位置参数必须以在调用函数中定义的
准确顺序传递
,在没有默认参数的情况下传递函数的参数的精确数目必须和生命的数字一致。也就是在调用fun()函数的时候必须用两个参数,且两个参数的顺序不可以变动。
2、默认参数:
默认参数必须在
所有位置参数的前面;所谓的默认参数就是fun(n1,n2,n3="default");中的n3就是默认参数,n3必须在n2,n1后面,在调用这个函数的时候可以三个参数或者是两个参数,两个参数的时候,默认最后一个参数为n3;
3:关键字参数:
在调用的时候,可以直接使用函数中参数的名称,所以这样就在调用的时候就不需要按照指定的位置(可以不按照参数的指定顺序调用)。例如:有函数fun(age,name="gao",value="no")
那么在调用的时候可以使用fun(name="zhang",age=55,value="haha");
使用关键字参数的话不管函数处世位置参数还是默认参数都是可以的。
4、非关键可变长参数(元组):可变长的参数元组
必须在位置参数和默认参数的后面,使用的是
*
来
作为元组参数的;它可以吸纳多余的参数,让多余的参数作为一个元素传递给函数
例如有函数fun(n1.n2="name",*n3);n3位一个变长的参数元组,要是再调用这个函数的时候为fun(23,"gao","zhang","li")调用的时候是四个参数,那么n3将会吸纳后面两个参数作为元组(n3,n4)传递给函数fun()使用。
5、关键字变量参数(字典):
参数被放在一个字典中,字典中的键为参数名,值为相应的参数值。使用的是两个*号:
**
;关键字变量参数
必须放在非关键字可变参数的后面
,也就
是参数的最后面
例如有函数fun(n1,n2="gao",*n3,**n4)
要是再调用的时候为fun(20,"gao","zhang",you="you",me="me");
其次要注意的是,要是默认参数后面有关键字变量参数或者是非关键字可变参数的话,那么是不可以的省略的,也就是不可以为fun(20,
"gao","zhang",you="you",me="me");
20:位置参数;gaozhang:默认参数:zhang(注意没有关键字);因为后面的you 和me都是关键字参数,那么他们就是关键字变量参数;
在fun()函数中使用的时候可以为n4.keys()找到他们的key或者是n4.values()找到他们的值
四、匿名函数与lambda
lambda的使用: lambda 参数
:
表达式;
举例:def add(x,y):
return x+y
可以等价为 lambda x,y:x+y
lambda表达式返回可调用的函数对象;就拿上面a= lambda x,y:x+y;那么可以使用a(5,2)就可以得到7的结果。
当然lambda也可以使用默认参数的;其余的函数参数都可以雷同;
lambda参数和执行体必须要放在同一行中且用
:
分开;返回一个函数调用
五、变量的作用域
其实Python中变量的作用域和c,java都是类似的;函数中为局部变量,外面的位全局变量,全局变量可以范围包括函数;但是在PHP中,全局变量的范围不包括函数,也就是在函数中是不起作用的。