定义函数: def funcname(parameter_list): #名称以及参数列表
pass #占位符,空语句(函数体)
1、参数列表是可以没有的 2、return value(有return返回结果,没有就返回None)
a=1.23843
result=round(a,2)
print(result)
保留2位小数,结果为1.24
def add(x,y): #形式参数xy
result=x+y
return result
def print_code(code):
print(code)
a=add(1,2) #实际参数,实参1,2
b=print_code('python')
print(a)
结果为,Python 3
def damage(skill1,skill2):
damage1=skill1*3
damage2=skill2*2+10
return damage1,damage2 返回多个结果用逗号隔开
# damages=damage(3,6)
# print(damages)
# print(damages[0],damages[1])
skill1_damage,skill2_damage2=damage(3,6)
print(skill1_damage,skill2_damage2)
结果为:9 22
参数:1、必须参数 2、关键字参数 3、默认参数
def add(x,y): (必须输入xy,必须参数)
result =x+y
c=add(y=1,x=2) #关键字参数
#打印学生档案
def print_student_files(name,age=18): #age=18,默认参数,在默认参数之后不能再放非默认参数
print('我叫'+name)
print('我今年'+str(age)+'岁')
*args可变参数,tuple类型;**kw是关键字参数,dict类型
def print_x(x,y,*args,**kw):
print(x,y)
print(args)
print(kw)
a=[1,2,3]
b={'bianhao':11,'age':33}
print_x(6,7,a,b)
结果:
6 7
([1, 2, 3], {'bianhao': 11, 'age': 33})
{}
def print_x(x,y,*args,**kw):
print(x,y)
print(args)
print(kw)
a=[1,2,3]
b={'bianhao':11,'age':33}
print_x(6,7,*a,**b)
结果为:
6 7
(1, 2, 3){'bianhao': 11, 'age': 33}
递归函数:
# 计算阶乘,用递归的方式写
def cacul(i):
if i ==1:
return 1
return i*cacul(i-1)
print(cacul(6))
结果为720
用循环做阶乘:
k=int(input('number'))
n=1
result=1
while n<=k:
result*=n
n+=1
print(result)
还有汉诺塔也是用递归:
# 汉诺塔
def move(n,a,b,c):
if n==1:
print(a,'--->',c)
else:
move(n-1,a,c,b) #把n-1个从a移到b,c做辅助
print(a,'--->',c)
move(n-1,b,a,c) #把n-1个从b移到c,a做辅助
k=int(input('输入块数:'))
move(k,1,2,3)
1 ---> 3
1 ---> 2
3 ---> 2
1 ---> 3
2 ---> 1
2 ---> 3
1 ---> 3
匿名函数:lambda parameter_list:expression
def add(x,y):
result=x+y
和 f=lambda x ,y:x+y 结果是一样的
# 用sort排序
list=[{'number':3,'age':10},{'number':5,'age':17},{'number':2,'age':14}]
print(list)
list.sort(key=lambda x:x['number'],reverse=True)
print(list)