day-10
1. 函数的定义
-
语法
# 函数的定义阶段:函数定义过程,只检测语法,不执行里面的代码 def 函数名(等同于变量名)(): """对函数(工具)的描述信息""" 代码块(实现函数功能的代码)
# 函数的使用阶段 func() # 执行函数里面的代码
例如:
def func1(): '''打印hello,world!''' print('hello,world!') func1() # print(func1.__doc__) # 可以打印出函数的功能
运行结果:
hello,world! # 打印hello,world! Process finished with exit code 0
2. 定义函数的三种形式
参数:函数用来接收外部信息的媒介。同变量名。
-
空函数
定义一个函数,但不做任何事情,只是用来占个位置,先实现其他功能,未来进行补充,可以用来搭建项目框架。
def func1(): pass def func2(): pass def func3(): pass ……
-
有参函数
在函数定义阶段,括号内有参数,这个函数就是有参函数。
定义时有参,调用时就必须得传参。
def guess(x, y): """给定两个数,打印较大的数""" if x > y: print(x) else: print(y) guess(50, 20)
运行结果:
50 Process finished with exit code 0
-
无参函数
在函数定义阶段,括号内没有参数,这个函数就是无参函数。
定义时无参,调用时就不用传参。
def func(): '''打印hello,world!''' print('hello,world!') func()
运行结果:
hello,world! Process finished with exit code 0
3. 函数的返回值
返回值:返回一个值(函数的返回值可以是任意数据类型)
def max_num():
"""给定两个数,打印较大的数"""
x = 20
y = 30
if x > y:
return x
else:
return y
num = max_num()
print('num:', num)
运行结果:
num: 30
Process finished with exit code 0
return的特性:
-
return 返回一个返回值,如果没有返回值,返回None
def func(): return # 没有返回值 print(func())
运行结果:
None Process finished with exit code 0
def func(): return 1 # 有返回值 print(func())
运行结果:
1 Process finished with exit code 0
-
没有return 默认返回None
def func(): pass # 没有return print(func())
运行结果:
None Process finished with exit code 0
-
return 会终止函数,不运行下面的代码,假设有多个return的时候,运行到第一个就会结束,不会运行第二个
def max_num(): """给定两个数,打印较大的数""" return 1 # 下面的代码不会执行 x = 20 y = 30 if x > y: return x else: return y num = max_num() print('num:', num)
运行结果:
num: 1 Process finished with exit code 0
-
return 通过逗号隔开,可以返回多个值,返回值以元组的形式接收
def func(): return 1,2,[3,4] # 多个return print(func()) print(type(func()))
运行结果:
(1, 2, [3, 4]) <class 'tuple'> Process finished with exit code 0
4. 函数的参数
4.1 形参
函数定义阶段产物,具有描述意义,用来接收实参传的值。
-
位置形参
调用函数时,从左到右依次接收实参的值
def fun1(x, y, z): # 位置形参:x,y,z print(x, y, z) fun1(1, 2, 3) # 调用函数阶段,按照1,2,3的顺序分别将值传给x,y,z
运行结果:
1 2 3 Process finished with exit code 0
-
默认形参
- 调用函数时,如果不给默认形参传值,则使用默认值;如果传值,则使用传的值
- 默认形参必须放在位置形参的后面
def fun1(x, y, z=0): # 位置形参:x,y;默认形参 z = 0 print(x, y, z) fun1(1, 2, 3) # 调用函数阶段,按照1,2,3的顺序分别将值传给x,y,z fun1(1, 2) # 调用函数阶段,按照1,2 的顺序分别将值传给x,y;z使用默认值 0
运行结果:
1 2 3 1 2 0 Process finished with exit code 0
4.2 实参
函数调用阶段的产物,有具体的值,将值传给形参。
-
位置实参
从左到右依次传值给位置形参,和位置形参必须一一对应
def fun1(x, y, z): # 位置形参:x,y,z print(x, y, z) fun1(1, 2, 3) # 调用函数阶段,按照1,2,3的顺序分别将值传给x,y,z
-
关键字实参
- 按照形参名将值传给形参(使用情况基本为 0 )
- 关键字实参必须写在位置实参的后面
def fun1(x, y, z): # 位置形参:x,y,z print(x, y, z) fun1(3, z=2, y=1) # 调用函数阶段,位置实参按照顺序传值给位置形参 ,关键字实参按照形参名传值
运行结果:
3 1 2 Process finished with exit code 0