1.函数概述
- 在开发程序时,需要某块代码多次,为了提高编写效率以及代码块的重用性,所以把具有相同独立功能的代码块组织为一个小模块,并且给这个功能一个名称,这就是函数。
2.定义函数
- 语法
- def 函数名([参数列表]): # 参数列表可选项
- 函数体
3.调用函数
- Python内置了很多函数,内置函数可以直接调用。调用一个函数需要知道函数的名称和函数的参数。
- 语法:函数名([参数列表])
- 定义变量指向函数,通过变量可以调用所指向的函数
代码
a = len # 变量a指向len函数
students = ['jack',18,'男','上海']
print(len(students))
print(a(students)) # 可以通过a调用到len函数
运行结果

4.函数参数
4.1)形参和实参
# 定义函数
def PName(userName): #userName就是形参
print("hello"+userName)
# 调用函数
PName('小明') #小明就是实参
4.2)参数传递-可变对象与不可变对象的传递
不可变类型代码
# 定义函数
def getNum(a):
a = 10
print("函数内变量a的值为:",a)
# 调用函数
a = 8
getNum(a)
print("函数外变量a的值为:",a)
运行结果

可变类型代码
students = ['amy','tom','john']
def UpdStudent(student):
student[2] = '小明'
print(student)
UpdStudent(students)
print("修改后的列表为:",students)
运行结果

4.3)实参位置
- 函数定义中允许拥有多个参数,因此函数在调用的时候,也可能包含多个实参,向函数传递参数的方式有很多,通过实参和形参的顺序对应,这就是位置实参。只有位置一直,才能被正确匹配。位置实参是最简单也是最常用的关联方式
4.4)关键字参数
- 关键字实参是传递给函数的名称-值对。直接在实参中将名称和值关联起来,因此向函数传递实参时不会混淆
代码
def animal(pet1,pet2):
print(pet1+"汪汪叫,"+pet2+"喵喵叫")
animal('小狗','小猫') # 位置实参
animal('小猫','小狗')
animal(pet2='小猫',pet1='小狗') # 关键字实参
运行结果

4.5)参数默认值
- 函数定义的时候,设置的参数是形参。那么也可以给每个形参制定一个默认值。当函数调用时,如果没有参数传入,就是用参数的默认值。如果调用的时候传入了实参,那么程序就使用传入的实参。
- 即实参的优先级比形参的优先级高
代码
def animal(pet1,pet2='小猫'):
print(pet1+"汪汪叫,"+pet2+"喵喵叫")
animal(pet1='小狗')
animal(pet2='邻居家的小猫',pet1='小狗')
运行结果

5.函数返回值
5.1)什么是返回值
- 函数并非总是将结果直接输出,相反,函数的调用者需要函数提供一些通过函数处理之后的一个或一组数据,只有调用者拥有了这个数据,才能够做一些其他的操作。那么这个时候,就需要函数返回给调用者数据,这个被称之为返回值,想要在函数中把结果返回给调用者,需要在函数中使用return
5.2)return语句
- return语句用于退出函数,选择性的向调用者返回一个表达式。直接return的语句返回None
代码
def sum(num1,num2):
return num1+num2
total = sum(10,20)
print(total)
运行结果

6.思考题
- 要求:定义一个函数,实现两个数的四则运算,要注意有3个参数,分别是运算符和两个用于计算的数字
- 两个数字和运算符需要接收用户输入的值
代码
# 思考题:定义一个函数,实现两个数的四则运算
# 三个参数:运算符,数字1,数字2
def cal(flg,num1,num2):
if flg == '+':
return num1+num2
elif flg == '-':
return num1-num2
elif flg == '*':
return num1*num2
elif flg == '/':
return num1/num2
else:
return '您输入的运算符不合法'
f = 'N'
while f == 'N':
num1 = input("请输入要进行计算的第一个数字:")
num2 = input("请输入要进行计算的第二个数字:")
flg = input("请输入运算符:")
result = cal(flg,int(num1),int(num2))
print(result)
f = input("是否退出程序(Y/N)")
else:
print("感谢使用程序!下次再见")
运行结果
