函数的基本使用
一、函数三问
1、什么是函数
函数相当于具有某种功能或多种功能的能够重复使用的工具,像扳手什么的能够用来拧螺丝还可以用来防身......
函数跟变量一样也是先定义后使用。
2、为什么要用函数
当需要重复用一段代码实现某一功能的时候,如果不用函数的话,
1、会使主程序组织结构不清晰,可读性差
2、由于多次代码一样,修改起来很麻烦,可维护性和扩展性都很差
3、代码很low,显得冗长
———》而函数能够解决以上问题
3、函数怎么使用
先定义:
三种定义方式
后调用:
三种调用方式
返回值:
三种返回值的形式
二、函数的基本使用
1、函数定义的语法
'''
def 函数名(参数1,参数2,...):
"""文档描述"""
函数体
return 值
'''
2、函数的三种定义方式
函数定义的时候会发生的事:
2.1、首先会在内存中申请内存空间用于保存函数体的代码,与列表类似
2.2、将用于保存函数体空间的内存地址绑定给函数名,与变量名的绑定相同
2.3、需要注意的事定义函数的时候不会立即执行函数体代码,在调用的时候才会执行,但是定义的时候会检测函数体的语法是否有误
2.1、无参函数定义
def bar(): # bar=函数的内存地址
"""说实话函数""" #文档字符串对函数体功能进行简单的描述
#x x变量不存在定义时不会报错
#print( 会报错,函数体语法有问题
print('你好帅') # 函数体内容
应用场景:
def interactive():
name = input('username>>: ')
age = input('age>>: ')
gender = input('gender>>: ')
msg = '名字:{} 年龄:{} 性别'.format(name, age, gender)
print(msg) #不需要有返回值
interactive()
interactive()
interactive()
interactive()
2.2、有参函数定义
def func(x,y): # x,y表示的是形参,用于接收向函数传入的实参
print(x,y)
func(1,2) #调用函数,向函数传入实参1和2
应用场景:
def multiply(x,y): # 参数-》原材料
res=x * y
print(res)
return res # 返回值-》产品
multiply(1,100)#传入实参1,100,返回值100
2.3、空函数,函数体代码为pass
def func(x, y):
pass
应用场景:(主程序的架构)
def auth_user():
"""user authentication function"""
pass
def download_file():
"""download file function"""
pass
def upload_file():
"""upload file function"""
pass
def ls():
"""list contents function"""
pass
def cd():
"""change directory"""
pass
3、函数调用的三种形式
调用函数发生的事情:
1、通过函数名找到函数的内存地址
2、然后加口号就是在触发函数体代码的执行
print(func)
func()
3.1、语句的形式:只加括号调用函数
interactive()
add(1,2)
3.2、表达式形式:
def add(x, y): # 参数-》原材料
res = x + y
return res # 返回值-》产品
3.2.1 将函数放入数学表达式内
res = add(1, 2) * 10
print(res)
3.2.2 赋值表达式,将函数调用赋值给变量名
res = add(1, 2)
print(res)
3.2.3 函数调用可以当做另一个函数调用的参数
res = add(add(1, 2), 10)
print(res)
4、函数返回值,有三种返回值的方式,取决于函数体类的return
强调:return 是函数结束的标志,只要函数体执行到如return则立即终止函数的运行,并把return后面的值当成本次运行的结果返回。
4.1、返回None:函数体内没有return,或者return后跟的就是None
def func():
print('hhh') #
#return None
res=func() #没有返回值
print(res) #None
4.2、返回一个值,即return后只有一个值
def func():
return 10 #有一个返回值:10
res = func()
print(res) #打印10
4.3、返回多个值:用逗号分隔开多个值,会被return返回成元组
def func():
return 10, 'aa', [1, 2]
res = func()
print(res, type(res))