目录
什么是函数?
函数:一系列Python语句的组合,可以在程序中运行一次或者多次,一般是完成具体的独立的功能
为什么要使用函数:
代码的复用最大化以及最小化冗余代码,整体代码结构清晰,问题局部化 。
函数基础
函数的定义:
def 函数():
代码块
函数调用:直接写函数名即可
举例:
def printInfo2(name,height,weight,hobby,pro):
#函数代码块
print("%s的升高是%f" % (name,height))
print("%s的体重是%f" % (name,weight))
print("%s的爱好是%s" % (name,hobby))
print("%s的专业是%s" % (name,pro))
pass
#调用带参数的信息
printInfo2('小李',189,200,'打游戏','咨询师')
printInfo2('peter',175,160,'敲代码','计算机')
函数参数
参数分类:
必选参数、默认参数、可变参数、关键字可选参数
1.必选参数--必须赋值
def sum(a,b): #a和b叫做形参--只是意义上的一种参数,在定义的时候是不占内存地址的
sum=a+b
print(sum)
pass
sum(20,15) #20和15是实参:实际占用内存地址的
2.默认参数
def sum1(a=20,b=30): #a可以省默认参数值,b不可以 (a,b=30)
print('默认参数的使用=%d'%(a+b))
pass
#默认参数的调用
sum1(10) #调用时如果为赋值,就会用默认参数的给定值
sum1(2,56)
3.可变参数--当参数的个数不确定时使用,接收元组类型
def getComputer(*args):
'''
计算累加和
:param args: 可变长的参数类型
:return:
'''
#print(args)
result = 0
for item in args:
result += item
pass
print(result)
pass
getComputer(1,2)
getComputer(1,2,3)
4.关键字可变参数--**来定义,在函数体内,参数关键字是一个字典类型key是一个字符串
def keyFunc(**kwargs):
print(kwargs)
pass
#调用
dictA={'name':'leo','age':35}
keyFunc(**dictA)
keyFunc(name='peter',age=26)
keyFunc()
5.组合使用举例
def complexFunc(*args,**kwargs):
print(args)
print(kwargs)
pass
complexFunc(1,2,3,4,name='pater') #前面元组传第一个参数,后面字典传第二个参数
complexFunc(age=36) #自动识别传给第二个参数
def TestMup(**kwargs,*args): #这种不符合规定,可选参数必须放在可变关键字之前
pass
函数返回值
概念:函数执行完以后会返回一个对象,如果在函数内部有return就可以返回实际值,否则返回None
类型:可以返回任意类型,返回值类型应该取决于return后面的类型
用途:给调用方返回数据
在一个函数体内可以出现多个return值,但肯定只能返回一个return #如果在一个函数体内执行了return, 意味着函数就执行完成退出了,如return后面的代码语句将不再执行。
举例:
1.
def Sum(a,b):
sum=a+b
return sum #将计算结果返回
pass
rs=Sum(10,20)
print(rs) #函数返回值返回到调用的地方
2.
#计算累加和
def calComputer(num):
li=[]
result = 0
i=1
while i<=num:
result+=i
i+=1
pass
li.append(result)
return li
value=calComputer(10)
print(value)
函数嵌套调用
举例:
def fun1():
print('--------fun1 start------')
print('--------执行代码------')
print('--------fun1 end-----')
pass
def fun2():
print('--------fun2 start------')
#调用第一个函数
fun1()
print('--------fun2 end-----')
pass
fun2()
函数举例:
1.写函数,接收n个数字,求这些参数数字的和
def Sum(*args):
result = 0
for item in args:
result+=item
pass
return result
rs=Sum(1,2,3,4,5)
print('rs={}'.format(rs))
2.写函数,找出传入的列表或元组的奇数位对应的元素,并返回一个新的列表
def process_Func(con):
'''
处理列表信息
:param con:接收一个列表或者元组
:return:新的列表对象
'''
listNew=[]
index=1
for item in con:
if index%2==1:
listNew.append(item)
index+=1
pass
return listNew
rs=process_Func([1,2,3,4])
print(rs)
rs1=process_Func(tuple(range(10,30)))
print(rs1)
3.写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。PS:字典中的value只能是字符串或列表
def dictFunc(**kwargs): #也可以直接写字典变量
'''
处理字典类型数据
:param kwargs: 字典
:return:
'''
dictA={}
for key,value in kwargs.items():
if len(value)>2:
value[0:2]
dictA[key]=value[0:2] #向字典添加数据
pass
else:
dictA[key]=value
pass
pass
return dictA
pass
dictB={'name':'小明','hobby':['唱歌','跳舞','编程'],'pro':'计算机'}
rs=dictFunc(**dictB)
print(rs)