# 再谈函数 我们在定义函数的时候,如果不能确定参数有几个,可以使用星号(*)加上变量名的方式,来一次性收集多个传入的参数。使用这种方法拿到的多个参数,会被保存在一个元组里。 - def 函数名(普通参数1,普通参数2,...,普通参数n,* 变长参数) - 一次传入多个参数并保存在元组中 - 普通参数要放在不限个数的特殊参数之前 - def 函数名(普通参数1,普通参数2,...,普通参数n,* 变长参数,** 字典参数) - 一次传入多个参数并转换成字典 - 少用全局变量 - 对多个方法的代码块都有影响,不好排查问题 - 局部变量和全局变量的名称要避免冲突,否则会可能导致bug - 递归: - 函数循环地调用自己 - 要注意递归的退出条件 - 所有循环的代码都可以通过递归来实现 - 但是递归比循环用的场合少 - 递归占用资源多 - 循环更容易编写 - 斐波那契函数就适合使用递归编写