函数是一块实现某个功能的代码集合
定义
def func():
代码块
调用函数
func()
应用场景
1.重复代码块
2.代码过长
面向过程编程:按照代码逻辑顺序从上往下编程
函数式编程:利用函数进行编程
参数
形式参数
在创建函数时预写入的参数
实参
在调用函数时实际传入的参数
位置传参
调用函数时通过传入参数的前后位置关系赋值给形参
关键字传参数
通过调用形参名字赋值
注意:
关键字和位置传参可以一起使用,但是位置传参数得写在前面,关键字传参得写在后面
传入的参数要与形参数量相同
默认参数
在定义形参时,给它赋一个初始值,它就是一个默认参数,在调用函数时,可传不可不传参数给他,不传这个参数就是默认的那个值
动态参数
当不确定需要传入多少参数时,形式参数可写成*args,*后的字母随意不影响默认写成args,这就叫动态参数,只能按位置传参,默认是一个元组
写成**kwargs时只能通过关键字传参,默认是一个dict
开发中会混合用
format参数就是通过动态参数传参的
返回值
在执行函数时,希望有结果能够返回给我们来使用就使用return关键字返回一个值
def func()
i = 1+1
return i
print(func()) #2
如果没写return 默认返回的是None
函数遇到return立即终止
函数进阶
内置函数id可以获取数据地址
id(1)
函数执行参数传参时,传递的是内存地址
作用:节省内存地址
返回值也是内存地址
函数执行完以后,内部的变量会被释放
函数名相当于是一个指向函数的变量
先定义再执行,这是解释型语言的特点
函数可以当作容器的元素
作用域
一块公共空间,空间的所有的资源是共享的并且互相独立的
函数就是一个作用域,假如函数里面有一个for循环,那么循环出来的值可以被函数内部调用
def func():
for i inrange(10)
print(i)
print(i)
全局作用域(变量),函数之外的变量
局部作用域(变量),函数里面的变量
在函数中在局部变量中没有要用的变量就去全局变量中去找
在局部作用域操作全局变量时默认只能修改和查询,不能重新赋值
利用global关键字课在局部对全局变量重新赋值