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

python函数详解

时间:2023-03-25 21:27:30 Python

函数函数是代码的一种组织形式函数应该能够完成特定的工作,一般一个函数只完成一个工作在某些语言中,有函数和过程两个概念。通俗的解释是,有返回结果的称为函数,不返回结果的称为进程。Python不区分函数的使用。首先需要定义函数的使用。Space#2.函数名,自己定义,name需要遵循顺序的命名规则,作为约定,bighumpCase只用于classes#3.后面的括号和冒号不能省略,参数可以包含在thebrackets#4.函数中的所有代码都缩短了Enterdeffunc():print("Iamafunction")print("Lovelife")print("Thefunctionisover")函数结束了#函数调用#直接写函数名,后面的括号不能省略。括号里的内容视情况而定func()我是一个热爱生活的函数#函数定义deffunc():print('A')print('B')func()AB函数的参数和返回值parameters:负责传递给函数一些必要的数据或信息形参(formalparameter):定义函数时使用的参数,没有具体值,只是一个占位符号实参(actualparameter):调用函数时输入的值函数返回值:调用函数时的执行结果,使用return返回结果。如果没有返回值,我们推荐使用returnNone来表示函数结束。一旦函数执行return,函数立即结束。如果函数没有return关键字,函数默认返回None#参数有实参的情况#参数person只是一个符号#调用的时候用另外一个defhello(person):print("{},怎么样you?".format(person))returnNonep="XiaoMing"#Call函数需要将p作为实参传入hello(p)Xiaoming,howareyou?p="小吴"hello(p)小吴,你好吗?pp=hello("小七")print(pp)小七,你好吗?无#returncasedefhello(person):print("{0},howareyou?".format(person))return"Endearly!"print(1)p="小明"rst=hello(p)print(rst)小明,你好吗?提前关闭!#help负责随时为你提供帮助help(None)#相当于help(peint())helponbuilt-infunctionprintinmodulebuiltins:print(...)print(value,...,sep='',end='\n',file=sys.stdout,flush=False)将值打印到流,或默认打印到sys.stdout。可选关键字参数:file:类文件对象(流);默认为当前sys.stdout。sep:插入值之间的字符串,默认一个空格。end:在最后一个值之后附加的字符串,默认为换行符。flush:是否强制flush流。#九九多达表#version1.0foroinrange(1,10):#控制外循环从1到9foriinrange(1,o+1):#内循环,每次从第一个数字开始,打印到与行数相同的数字print(o*i,end="")print()12436948121651015202561218243036714212835424981624324048566491827364554637281帮助(打印)模块内置函数打印的帮助:打印(...)打印(值,...,sep='',end='\n',file=sys.stdout,flush=False)将值打印到流,或者默认打印到sys.stdout。可选的关键字参数:file:一个类似文件的对象(stream);默认为当前sys.stdout。sep:插入值之间的字符串,默认一个空格。end:在最后一个值之后附加的字符串,默认为换行符。flush:是否强制刷新流。#尝试使用打印九九乘法表的函数defjiujiu():foroinrange(1,10):#控制外层循环从1到9foriinrange(1,o+1):#内层循环,每次从第一个数开始,打印到与行数相同的数print(o*i,end="")print()returnNonejiujiu()jiujiu()1243694812165101520256121824303671421283542498162432404856649182736455463728112436294812016525612182821304361735424981624324048566491827364554637281#将上述函数de变换fprintLine(line_num):'''line_num;代表行号打印一行九九乘法表'''foriinrange(1,line_num+1):print(line_num*i,end="")print()defjiujiu():foroinrange(1,10):#控制外循环从1到9printLine(o)returnNonejiujiu()12436948121651015202561218243036714212835424981624324048566491827364554637281参数详细参考python参考:headfirstpython->零基础学习python(小乌龟),smoothpython->练习参数分类普通参数/positionalparameterDefaultparameterKeywordparametercollectionparameter普通参数c参考上例定义直接定义变量名调用时直接将变量或值放到指定位置def函数名(参数1,参数2,.....):Functionbody#调用函数名(value1,value2,...)#调用时,具体值指的是位置,th默认参数按位置分配。形参有默认值调用时,如果没有给相应的参数赋值,则使用默认值deffunc_name(p1=v1,p2=v2,...):func_blockcalls1func_name()calls2value1=100value2=200func_name(value1,value2)关键字参数语法deffunc(p1=v1,p2=v2....):func_body调用函数;func(p1=value1,p2=value2....)比较麻烦,但也有优点:容易混淆,一般实参和形参只是按照位置一一对应就够了,容易出错使用关键字参数,可以不考虑参数位置来收集参数把没有位置和不能对应定义的参数位置的参数放到具体的数据结构中语法deffunc(*args):func_bady按照List使用方式访问args获取传入参数调用:func(p1,p2,p3....)参数名args不一定要这样写,但是建议使用直接参数。参数名前习惯有星号argsNumber集合参数可以和其他参数共存#普通参数情况defnormal_para(one,two,three):print(one+two)returnNonormal_para(1,2,3)3#默认参数case1defdefault_para(one,two,three=100):print(one+two)print(three)returnNonedefault_para(1,2)default_para(1,2,3)310033#默认参数case2#注册函数,需要知道学生的性别#学python的同学基本上都是男生因此,如果注册时没有特别指定,我们认为是男孩defreg(name,age,gender="male"):ifgender=="male":print("{0}is{1},andheisagoodstudent".format(name,age))else:print("{0}is{1},andsheisagoodstudent".format(name,age))#calldefaultparameterfunctioncasereg("明月",21)reg("小静",23,"女")明月21岁,好学生小静23岁,好学生#关键字参数case1defkeys_para(one,two,three):print(one+two)print(three)returnNonekeys_para(one=1,two=2,three=30)keys_para(three=30,two=2,one=1)330330#关键字参数case2defstu(name,age,addr):print("我是学生")print("我叫{0},今年{1}岁,住在{2}".format(name,age,addr))n="jingjing"a=18addr="我家"#普通参数,只根据位置传,容易出错stu(a,n,addr)defstu_key(name="Noname",age=0,addr="Noaddr"):print("我是学生")print("我叫{0},今年{1}岁,住在{2}".format(name,age,addr))n="jingjing"a=18addr="我家"#普通参数,只根据位置传递,容易出错stu_key(name=n,age=a,addr=addr)我是student我18岁,今年晶晶岁,住在我家我是学生我叫晶晶,今年18岁,我住在我家#收集参数案例#函数模拟了一个student自我介绍一下,具体内容不清楚#args把他当做一个Listdefstu(*args):print("大家好,自我介绍一下,随便说几句:")#type的功能函数是检测变量类型print(type(args))foriteminargs:print(item)stu("柳营",18,"北京大通州区","wangxiaojing","single")stu("ZhouDashen")大家好,让我自我介绍一下:北京市大通州区六营18号wangxiaojingsingle大家好,让我自我介绍一下:周大神#收起Parameter实例#说明调用集合参数可以不加任何参数,这里当集合参数为空时tuplestu()大家好,自我介绍一下,simply说几句:#如果使用关键字参数格式调用,会有问题stu(name="刘英")collectparameters关键字集合参数将关键字参数以字典形式存储在集合参数中语法:deffunc(**kwargs):func_bodycall;func(p1=v1,p2=v2,p3=v3....)kwargs一般约定在调用的时候,把多余的关键字参数放到kwargs中去访问kwargs需要以字典形式访问#收集参数案例#自我介绍#调用时需要使用关键字参数来调用defstu(**kwargs):#函数体中对于kwargs的使用不需要星号print("大家好,先自我介绍一下:")print(type(kwargs))#对于字典访问,python2和python3对于k,vinkwargs.items()不同:print(k,"---",v)stu(name="Liuying",age=19,addr="北京大通州区",lover="王晓静",work="老师")print("*"*50)stu(name="周大神")大家好,我先说我自己介绍一下:name---刘英阁---19addr---北京市大通州区情人---王晓静工作---老师*****************************************************大家好,让我先自我介绍一下:name---周大神#集合参数可以为空casestu()大家好,先自我介绍一下:集合参数混合调用的顺序集合参数,关键字参数,commonparameters可以混合使用的规则是,在先定义普通参数和关键字参数时,通常会找到普通参数、关键字参数、集合参数tuple、集合参数dict。#集合参数混合调用case#stu模拟一个学生的自我介绍defstu(name,age,*args,hobby="none",**kwargs):print("大家好")print("我叫{0},我{1}岁。".format(name,age))ifhobby=="none":print("我没有爱好,很抱歉")else:print("我的爱好是{0}".format(hobby))print("*"*20)foriinargs:print(i)print("#"*30)fork,vinkwargs.items():print(k,"---",v)#开始callingfunctionname="Liuying"age=19#调用的不同格式stu(name,age)stu(name,age,hobby="swimming")stu(name,age,"王小静","刘诗头",hobby="swimming",hobby2="cooking",hobby3="chatingwithdifferentgirls")大家好,我叫流影,今年19岁,没什么爱好,不好意思*******************#################################大家好,我是柳英,我今年19岁。我的爱好是游泳*********************################################大家好,我叫柳英,今年19岁。我的爱好是游泳*********************王小静刘石头###############################hobby2---烹饪hobby3---和不同的女孩聊天解包集合参数将参数放入List或字典中,直接将List/dict中的值放入收集参数语法:参考案例#收集参数的解包问题defstu(*args):print("hahahaha")#n用来表示循环次数#主要用于调试n=0foriinargs:print(type(i))print(n)n+=1print(i)#stu("刘英","王小静",19,20)l=["刘英",19,20,"王小静"]stu(l)#此时args的表示是字典中List类型的一个元素,即args=(["刘英",19,23,"王小静",])#这显然和我们原来的相反idea#这个时候我们调用需要对符号进行解包,也就是在调用之前加一个星号stu(*l)haha??haha0['Liuying',19,20,'Wangxiaojing']hahahaha0Liuying1192203Wangxiaojing同样,dict类型的集合参数也可以解包,但是dict类型的解包需要两个星号来解包functionDocumentation函数的文档的作用是提供与当前函数使用相关的参考信息。文档的写法:函数开头的第一行使用三引号。字符串定界符一般有特定的格式。参考案例文档查看。使用help函数,形式为help(func)使用__doc__,见case#文档casedefstu(name,age,*args):'''ThisisthefirstlineThisisthesecondlineThisisthe第三行'''print("Thisishanshustu")pass#查看函数文档help(stu)stu.__doc__Helponfunctionstuinmodule__main__:stu(name,age,*args)这是第一行这是第二行这是第三行'\n这是firstline一行\n这是第二行\n这是第三行\n'defstu(name,age):'''这是文档的文本内容:paramname:表示学生姓名:paramage:表示学生年龄:return:Thisfunctionhasnoreturnvalue'''passprint(help(stu))print("*"*20)print(stu.__doc__)Helponfunctionstuinmodule__main__:stu(name,age)Thisis文档的文本内容:paramname:表示学生姓名:paramage:表示学生年龄:return:该函数无返回值None**********************This是文档的正文内容:paramname:表示学生姓名:paramage:表示学生年龄:return:该函数无返回值