函数简介:内置函数是python提前给你写好的,用户可以直接调用
函数必须先定义后调用,定义了的函数可以在定义位置的后面任意位置进行调用
函数的返回值:函数内部要是想返回内容给调用者,使用return关键字(所有的函数都有返回值,无论你写不写return,python中所有的函数都是有返回值的,不写return的话默认返回None)
1、不写return:函数是默认返回None
2、只写return:return除了可以返回值之外 还可以直接结束掉整个函数的运行,但是这样只写一个return返回的也是None(None表示的是什么都没有)
3、写return None:这个跟上面的只写return的效果是一样的
4、写return返回一个值:这个值可以是python任意数据类型
5、写return返回多个值:return会自动将多个值以元组的形式返回给调用者 返回元组的原因是因为函数不希望自己处理好了的结果被修改 如果不想返回元组的话就要自己手动加上你想要返回的数据类型符号
要是光写return或者是return None的话并不是为了考虑返回值,而是为了快速的结束掉当前运行的函数
函数的参数:
位置参数:在函数定义的阶段按照位置从左往右依次书写的变量名 叫做函数位置形参
位置参数在调用的时候必须为他传值,不能多也不能少,必须一一对应
注意:在函数的调用阶段 位置参数和关键字参数可以混合使用但是必须保证1、位置参数必须在关键字参数的前面(越短的靠前,越长的越复杂的就靠后) 2、同一个形参不能够被多次赋值
默认参数:在函数的定义阶段,形参(变量名)就已经被赋值了在调用的时候可以不为默认值形参传值,默认使用定义阶段就已经绑定的值,在调用的时候如果可以给默认形参传值,传了那么就可以使用你传的值
应用场景:当形参接收的值比较单一的情况下通常就可以考虑使用默认值形参了
函数在定义的阶段 内部使用的变量都已经初始化完毕了。 不会因为调用的位置的变化而影响到内部的值
函数无论在什么位置进行调用都会跑到函数定义阶段去执行代码,形参中用到的值都是往函定义阶段代码往上找的
可变长参数:站在调用函数传递实参的角度 实参的个数是不固定的情况下,也就意味着形参也是不固定的
定义:可以用*和**来接受多余的(溢出的)位置参数和关键字参数
*:在形参中只会接收多余的位置实参,不能接收关键字实参,它能接收列表 元组 集合 字符串,内部可以看成是一个for循环
**:会接收所有多余的关键字参数,并将关键字参数转换成字典的格式 字典的key就是关键字的名字,字典的value就是关键字的名字的指向的值 将字典交给**后面的变量名
总结*和**:
*在形参中能够接收多余的位置参数 组织成一个元组赋值给*后面的变量名
**在形参中能够接收多余的关键字参数 组织成一个字典赋值给**后面的变量名
python推荐的写法:*args,**kwargs