python0.9-----函数

函数:

概述:在一个完整的项目中,某些功能会反复使用,那么会将功能封装成函数,当要使用功能时,直接调用函数即。

优点:

一:简化代码结构,增加了代码的复用度(重复使用的程度)。

二:如果想修改某些功能,或者修改某些或调试bug,只需要修改某些函数即可。

 

定义函数:

def 函数名(参数列表):

  语句

  return 表达式

解释:

def:函数代码块以def关键字开始。

函数名:遵循标识符规则,是要使用的功能的函数名字。

参数列表(参数1,参数2,......,参数n):任何传入函数的参数和变量必须放在圆括号之间,用逗号分隔.函数从函数的调用者那里获取信息。如果没有参数,小括号也不能省略。

冒号:函数内容以冒号开始,并且缩进。

语句:函数封装的功能。

return:用于结束函数的,并返回信息给函数的调用者.return后面的语句是不用执行的。

表达式:即返回给函数的调用者的信息。

注意:最后的return 表达式,可以不写,相当于return None。

 

函数的调用:

格式:函数调用(参数列表)

 

函数调用的本质:实参给形参赋值的过程。

实参(argument):调用函数是给函数传递的数据,本质是值。

形参(parameter):定义函数是小括号中的变量,本质是变量。

 

参数的传递:

值传递:传递不可变类型。number,string,turple,boolean,函数内部改变这些类型,函数外部对应的值不会改变。

引用传递:传递可变类型。dict,list,set,函数内部改变这些类型,函数外部对应的值会改变。

 

关键字参数:允许函数调用时参数的顺序与定义不一致。                                                       

例如:

def myPrint(str,age)

  print(str,age)

 

myPrint(age=18,str=’boboob’) :调用函数时age和str的顺序与形参的顺序不一致。

 

默认参数:调用函数是,如果没有传递参数,则使用默认参数。

例如:

def myPrint(str=’boboob’,age=0)

  print(str,age)

myPrint()

上述调用仍未出错,因为当没有传递参数时,str默认为‘bobboob’,age默认为0

另外:若使用默认参数,最好将默认参数放在最后。

例如:

def myPrint(str,age=0)

  print(str,age)

myPrint(‘boboob’)

 

不定长参数:

概念:能处理比定义时更多的参数。

加了星号(*)的变量args存放所有未命名的变量参数,如果在函数调用时,没有指定参数,它就是一个空元组。

例如:

def func1 (name,*args)

  print(name)

  for x in arr:      #遍历name的所有内容 

    print(x)

func1(‘bob’,’boboob’,’bobboobob’)

此时name=’bob’,args=(‘boboob’,’bobboobob’)

 

如果变量前面加上两个星号(**),则要求实参必须使用关键字参数,变量kwags为字典类型。如果在函数调用时,没有指定参数,它就是一个空字典。

def func2(**kwags)

  print(kwargs)

func2(x=1,y=2,z=3)

则kwages={‘x’:1,’y’:2,’z’:3}

 

下面这个函数可以接受任何类型的数据(若用关键字参数,则关键字参数应该全部在实参列表的右边)。

def func2(*args,**kwags)

  print(args,kwargs)

func2(1,1,2,x=1,y=2,z=3)

此时agrs=(1,1,2) kwargs={‘x’:1,’y’:2,’z’:3}

 

匿名函数:

概念:不使用def这样的语句定义函数,使用lambda来创建匿名函数。

特点:

1:lambda只是一个表达式,函数体比def简单。

2:lambda的主体是一个表达式,而不是代码块,仅仅只能在lambda表达式中封装简单的逻辑。

3:lambda函数有自己的命名空间,且不能访问自由参数列表之外的或全局命名空间的参数。

4:虽然lambda是一个表达式且看起来与内联函数一样,但事实上它C和C++的内联函数(减少使用的栈空间)不同,lambda表达式不能达到此效果。

格式:lambda 参数1,参数2,......,参数n:expression

例如:

sum=lambda num,num2 : num1 + num2

功能:return返回表达式(num1+num2)的值,给到sum。

猜你喜欢

转载自www.cnblogs.com/yulianggo/p/9195920.html