函数 函数是对功能的封装 语法: 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