函数
函数是对功能的封装
语法:
def函数名(形参列表)
函数体(代码块,return)
调用:函数名(实参列表)
2,返回值
return: 在函数执行的时候,如果遇到return,直接返回
1,如果函数什么都不写,不写return,就没有返回值,得到的是none
2,在函数中间或者末尾写return,返回的是none
3,在函数中写return 值,返回一个值
4,在函数中可以返回多个返回值,return 值1,值2,值3...,接收的是元组
3,参数
参数执行的时候给参数传递信息
*形参:函数声明的位置的变量
*实参:函数调用的时候给的具体的值
传参:把实参交给形参的过程
1,实参:
位置参数:按照形参的参数位置,给形参传值
关键字参数:按照形参的名字给形参传值
混合参数:既用位置参数,也用关键参数
2,形参:
位置参数
默认值参数: 先位置参数,后默认值参数
动态参数
1,函数的动态参数
1, *args 位置参数动态传参
2, *kwargs 关键字参数动态传参
顺序: 位置参数 *args 默认值参数 *kwargs
dec func(*args,*kwargs):
pass
形参的位置*,** : 聚合
实参的位置*,** : 打散
2,命名空间
1,内置名称空间
2,全局名称空间
3,局部名称空间
作用域:
1,全局作用域: 内置 + 全局
2,局部作用域: 局部(函数被调用)
globals():查看全局中的内容
locals():查看作用域中的内容
3,函数的嵌套
函数可以互相的嵌套
4,global和nonlocal的关键
global:在局部访问全局中的内容
nonlocal:在局部访问外层函数离它最近的那个变量
函数名的应用:(第一类对象)
函数名的命名规范和变量是一样的
函数名其实就是变量名
可以作为列表中的元素进行存储
def func1():
pass
def func2():
pass
list = [func1,func2]
for el in list:
el()
可以作为参数传递给函数
def func():
pass
def proxy(fn):
fn()
proxy(func)
可以作为函数的返回值
def func():
def inner():
pass
return inner)
func()()
2,闭包
在内层函数中访问外层函数的局部变量
好处:
1,保护你的变量不受外界影响
2,可以让变量常驻内存
写法:
def outer():
a = 10
def inner():
print(a)
return inner