函数参数详解
1.概述
编程方式:面向对象&面向过程 函数式编程 面向过程一般没有返回值 例如:c 面向过程 就是执行上下文 没有返回值
函数定义:就是封装好的功能 关键字 def
函数的优点: 优化代码 避免重复,方便修改 通用功能的调用 可重用 一致性 可扩展
2. 函数参数详解(形参,实参),(有参函数,无参函数,空函数),(位置参数,关键字参数,默认参数) ( 可变长参数)
1.(形参,实参)
形参:是在函数定义阶段就规定的参数,它就相当于定义变量时的变量名
实参:是在函数调用阶段传入的参数,它相当于定义变量时的变量值
2.(有参函数,无参函数,空函数)
1、无参函数: def index(): print('ok') 2、空函数: def login(): pass 3、有参函数: def login(username): print(username)
3. 关键子参数,位置参数,默认参数
4、参数的详细描述 1、位置参数 在函数定义阶段按照顺序从左到右书写的变量名就叫位置形参 在函数调用阶段按照顺序从左到右书写的具体的值就叫位置实参 位置参数定义之后一定要传递参数 2、关键字参数 在函数调用阶段,以key=value形式进行,关键子参数 3、默认值参数 在函数定义阶段提前给形参赋值的操作就叫默认值参数 4、可变长参数 * ** * 在函数定义阶段:接收所有溢出的位置参数,将接受的值以元组的形式传入* 后面的变量中 * 在函数调用阶段:将列表、元组、字符串、集合等可以使用的for循环的容器类型打散成位位置参数 ** 在函数定义阶段:接收所有溢出的关键字参数,将接受的值以字典的形式传入** 后面的变量中 ** 在函数调用阶段:将字典打散成关键字参数传入形参
def t01(x,y,z): print(x) print(y) print(z) t01(1,2,3) # 位置参数和参数一一对应 t01(4,y=1,z=2) # 形式参数不能放在位置参数前面 # 默认参数 def connect(x,port=3306): 默认参数不能不能放在位置参数前面 print(x) print(port) connect('127.0.0.1')
# 传参方式:位置参数 注意:位置参数必须放在关键字参数前面 def check_bigger(a,b): if a > b: return a else: return b s = check_bigger(1,3) #位置参数 print(s) s1 = check_bigger(b=1,a=3) # 关键字参数 print(s1) s2 = check_bigger(1,b=3) # 位置参数必须放在关键字参数前面 print(s2) # 默认参数 def check_bigger1(a,b=3): if a > b: return a else: return b s3 = check_bigger1(4) print(s3)
4.可变长参数
# *args: 接收所有溢出的位置参数,接收的值都被存入一个元组 # **kwargs:接收所有溢出的关键字参数,接收的值都被存入一个字典 # *:打散传入容器类型 # ###*args:接收所有溢出的位置参数,接收的值都被存入一个元组 def func(a,b,*args): print(a,b,args[0],args) #args为元组 func(1,2,3,4,5,6) ###**kwargs: 接收所有溢出的关键字,接收的值被存入字典 def func(a,b,*args,**kwargs): print(a,b,args[0],kwargs) #kwargs为字典 func(1,2,3,4,5,6,c=6) ### *: 将实参打散传入函数 注意 * 与 *args **kwargs 没有关系 def func(a,b,c,d,e): print(a,b,c,d,e) func(1,2,3,*(4,5))