为了说明什么是函数就先用一个例子吧:
#比如我定义一个求和运算
def sum_1(x,y):
a=x+y
return a
print(sum_1(2,5))
输出:7
注意:函数是使用def定义的,def后边是函数名,括号中是参数,括号中的参数也可以为空
当你需要使用这个函数的时候就可以直接调用了
sum_1()函数是带有参数的,调用时也必须有参数,并且参数需要按照定义时的参数顺序,如上调用就是x=2,y=5,这叫做位置参数,就是必须体现先后顺序
如果不想按照顺序输入参数,可以采用一下形式:sum_1(y=5,x=2),不影响输出结果,这里不够明显,可以换成其他的函数,比如打印英语人名,区分firstname和lastname,就比较明显了
1、函数中传递列表
以班里新来了三个同学为例,做成列表,对三位同学表示欢迎:
#定义一个函数,将names列表作为函数的形参(定义函数时的参数叫形参)
def student(names):
for name in names:
message='欢迎 '+name+' 同学加入高一三班'
print(message)
std_names=['yangmi','zhaoliying','tangyan']
#调用函数,并将列表作为函数的实参(调用函数时的参数叫实参)
student(std_names)
输出:
欢迎 yangmi 同学加入高一三班
欢迎 zhaoliying 同学加入高一三班
欢迎 tangyan 同学加入高一三班
2、在函数中修改列表
以点名为例,点名前站一列,点名后站到另一列,学习怎么在函数中修改列表
#打印点名的信息,需要使用到循环,和pop()删除列表元素及append()添加列表元素
def roll_call(student_l,student_r):
while student_l:
current_call=student_l.pop()
print(current_call+'同学到了吗')
student_r.append(current_call)
#打印已经点过名的队列
def call_over(student_r):
for name in student_r:
print(name)
student_l=['yangmi','zhaoliying','tangyan']
student_r=[]
roll_call(student_l,student_r)
call_over(student_r)
输出:
tangyan同学到了吗
zhaoliying同学到了吗
yangmi同学到了吗
tangyan
zhaoliying
yangmi
注意:在设计函数时,尽量让一个函数只实现一个具体的工作
练习
1、建一个学生列表,并将列表传递给函数,并打印每个学生的名字
def show_student(students):
for student in students:
print(student+'是一个学生')
students=['yangmi','zhaoliying','tangyan','zhangjiaxin']
show_student(students)
输出:
yangmi是一个学生
zhaoliying是一个学生
tangyan是一个学生
zhangjiaxin是一个学生
2、结合上例增加一个函数,添加说明是三好学生的说明,并打印验证
def show_student(students):
for student in students:
print(student)
def make_great(students):
i=0
for student in students:
student=student+'是三好学生'
students[i]=student
i=i+1
return students
students=['yangmi','zhaoliying','tangyan','zhangjiaxin']
make_great(students)
show_student(students)
输出:
yangmi是三好学生
zhaoliying是三好学生
tangyan是三好学生
zhangjiaxin是三好学生
3、由于修改时我不想修改原始列表,因此增加一个副本进行修改,将副本和原始列表都输出
def show_student(students):
for student in students:
print(student)
def make_great(students):
i=0
for student in students:
student=student+'是三好学生'
students[i]=student
i=i+1
# print(students)
return students
students=['yangmi','zhaoliying','tangyan','zhangjiaxin']
students_2=students[:]
make_great(students_2)
show_student(students_2)
show_student(students)
输出:
yangmi是三好学生
zhaoliying是三好学生
tangyan是三好学生
zhangjiaxin是三好学生
yangmi
zhaoliying
tangyan
zhangjiaxin