函数:把具有独⽴功能的代码块组织成的⼩模块
简易函数
<1>定义函数
def 函数名():
代码
<2>调⽤函数
函数名()
<3>查看函数说明
help(函数名)
函数参数 返回值
def 函数名(*arg, **kwarg):
…
return
参数:
- 缺省参数
- 调⽤函数时,缺省参数的值如果没有传⼊,则被认为是默认值
- 带有默认值的参数⼀定要位于参数列表的最后⾯
def para(a, b, c=3):
pass
- 不定⻓参数
def functionname([formal_args,] *args, **kwargs):
pass
加了*的变量args会存放所有未命名的变量参数,args为元组
加了**的变量kwargs会存放命名参数,即形如key=value参数, kwargs为字典
- 引⽤传参
Python中函数参数是引⽤传递(注意不是值传递)。
对于不可变类型,因变
量不能修改,所以运算不会影响到变量⾃身;
⽽对于可变类型来说,函数体中的运算有可能会更改传⼊的参数变量。
Python中的数据结构分为可变(mutable)和不可变(immutable)。
对于可变类型,=和+=有着明显的不同,如上面的list:
+表示连接操作,+=表示追加
对于不可变类型,=和+=就是一样的操作,如上面的tuple
可变类型与不可变类型的本质在于内存空间是否可变
4种函数的类型
函数根据有没有参数,有没有返回值,可以相互组合,⼀共有4种
⽆参数,⽆返回值
⽆参数,⼜反悔
有参数,⽆返回值
有参数,有返回值
函数嵌套
⼀个函数⾥⾯⼜调⽤了另外⼀个函数,这就是所谓的函数嵌套调⽤
局部变量
在函数内部定义的变量 临时保存数据 只能在本函数中使用
全局变量
在函数外边定义的变 能够在所有的函数中进⾏访问
不可变类型的全局变量,不使⽤global时⽆法修改全局变量。
可变类型的全局变量,不使⽤global时也可修改全局变量
递归函数
⼀个函数在内部调⽤⾃⼰本身,这个函数就是递归函数



