当前位置: 首页 > 后端技术 > Python

【Python基础】Python函数

时间:2023-03-26 12:45:37 Python

1.函数是python中使用最多的对象。函数定义的简单规则:1.用def定义,后面是函数名、参数和冒号,格式:2.函数内部代码块需要缩进3.使用return返回函数值,默认returnvalueisNone格式:deffunctionname(Parameter):codeblockreturn#可选,可以在代码块的任何地方使用2.函数中return的使用:return可以在函数的任何地方使用,直接跳转跳出当前函数,忽略其他代码块。return也可以没有参数,returnNone或者没有return,returnNonereturn也可以返回字典,list,function(装饰器就是返回的函数代码块)。1、可以跳出if、while、for等语句defuse_return():i=0whileTrue:i+=1forjinrange(i):print(j,end='')ifj==5:returnjprint()use_return()#运行结果:当i等于5时,函数直接结束"""001012012301234012345"""上面的函数改变了调用方式:print(use_return())#The最后一行是0123455,最后5是return函数的值,也就是j的值。尝试将最后5个换行。2.调用函数:使用函数名和括号来调用函数。调用函数体时不加括号,相当于别名。使用上面的例子调用1ifuse_return()==5:print(5)#call2foriinrange(0,use_return()):print(i)#不能使用因为use_return()返回的是一个数字,但不是int类型,必须先赋值给一个变量,然后调用变量v=use_return()foriinrange(0,v):print(i)#call3s=use_return()print(s)#callthefunctionbodyfunc=use_returnprint(func)#打印use_return函数所在的内存地址func()#运行use_return函数三、函数变量与外部变量的关系:1、可变(mutable)和不可变(immutable)对象strings,tuples,numbers是不可修改的对象,而list,dict等是可修改的对象。2.不可变类型:变量先赋值a=5,再赋值a=10。这并不是说a的值发生了变化。变量相当于一个指针,只是指针指向变了。5本身没有变化,指向的10是新地址,而不是把5变成10。不可变类型传入函数。函数修改后,外部变量的值不受影响。3、变量类型:变量赋值la=[1,2,3,4],然后赋值la[2]=5,虽然la指向的内存地址没有变,但是内部值变了,所以是多变的。传入函数的变量类型是la本身,所以在函数内部修改la[2]也会在函数外部修改la[2]defmodify_la2(la_value):la_value[2]=99999la=[0,1,2,3,4,5]modify_la2(la)print('la=%s'%la)#运行结果la=[0,1,99999,3,4,5]4.查找函数变量最finddefmodify_la2()从内层到外层:la[2]=99999la=[0,1,2,3,4,5]modify_la2()print('la=%s'%la)#modify_la2notfoundla,在函数外寻找la,la必须写在调用modify_la2()的前面五、函数的参数传递形式:1、必填参数:调用函数时,按照变量的先后顺序写入对应的值2.关键字参数:调用函数时,使用变量名赋值,variable=value3.默认参数:定义函数时,参数有值,defuser(name,age=20):,age=20为默认参数4.变长参数meter:(*args)不定长参数,只能接收必要的参数,将参数转为列表存储(**kwargs)不定长参数,只能接收关键字参数,将参数转为字典存储5、参数顺序existing:requiredparameters,Defaultparameters,args,*kwargsdefmodify_la2(name,age=20,args,*kwargs):age默认参数没有作用,必须赋值。defmodify_la2(name,age=20,*args,**kwargs):print('name=',name)print('age=',age)print('args=',args)print('kwargs=',kwargs)modify_la2('dage','men',175,skill='pain',father='Adw')#运行结果name=dageage=menargs=(175,)kwargs={'father':'Adw','skill':'pain'}6.匿名函数lambdalambda的主体是一个表达式,不是代码块。lambda表达式只能封装有限的逻辑。lambda函数有自己的命名空间,不能访问自己的参数列表之外或全局命名空间中的参数。格式:lambda[arg1[,arg2,.....argn]]:表达式#梯形面积公式:result=lambdax1,x2,h:(x1+x2)*h/2print(resault(1,2,4))七。总结:函数是完成某种功能的代码集合。函数名和变量名一样,指向内存的地址,指向的内存存储就是函数的代码。函数名()是调用函数返回的结果;只有函数名没有括号,函数本身被调用。没有return的返回定义,默认返回None。将某个函数定义为函数,重复调用,减少代码量。定义函数也可以达到批量修改的效果,只修改函数,所有调用都会改变。函数是python中最常用的对象。