函数
调试相关
- F8 step over单步执行会把函数调用视作一行,直接执行,不会进入函数内部
- F7 step into也可以单步执行,如果是函数,会进入函数内部
- 函数注释使用三对引号
参数相关
- 形参和实参:定义函数时使用的参数是形参,调用函数时传入的函数是实参
- 局部变量和全局变量:局部变量是在函数内部定义的变量,全局变量是在函数外部定义的变量,所有函数内部都可以使用这个变量
- 当列表作为实参进入函数时,如果在函数内部对列表进行+=操作,实际上是调用了列表的extend方法,没有赋值的过程,因此会影响函数外全局变量的结果,而如果在函数内部对列表进行
list = list +list
,则等号左边的list被视为局部变量,不会影响函数外部的全局变量 - 缺省参数:具有默认值的参数叫做缺省参数,定义缺省参数时要放在最后一个的位置
- 多值参数:参数前有个
*
可以接收元组,参数前有**
可以接收字典;*args
代表变量arguments,**kwargs
中的kw代表keyword,可以记忆键值对参数 *agrs
在调用时只需要用逗号隔开就可以
def demo(num, *nums, **person):
print(num)
print(nums)
print(person)
demo(1)
out:
1
()
{}
demo(1,2,3,4,name="小明")
out:
1
(1,2,3,4)
{"name":小明}
- 拆包:在调用多值参数的时候,如果希望将一个元组变量,直接传递给agrs,可以在元组变量前加一个
*
,如果希望传递一个字典,可以在变量前加**
- 递归:一个函数内部调用自己,当参数满足某一个条件时,不再执行,这通常被称为函数的出口,如果不指定函数的出口,会形成死循环