定义函数: 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)