函数03

函数的嵌套

  函数的嵌套调用:在调用一个函数的过程中,其内部代码;又调用了其他函数

    其好处是可以简化外层函数的代码,使结构更清晰

    可以将一个大的复杂的功能拆分为多个简单的小功能

  函数的嵌套定义:一个函数内部又定义了另外一个函数

    需要注意的是:内部定义的函数,只能在内部使用,外界无法直接访问

名称空间

  namespace

  就是存储名字的内存区域

名称空间的分类

  内置名称空间,存的是解释器自带的名称,其特点是在程序运行过程中一直有效

  特点:是在程序运行过程中一直有效

  生命周期:随着解释器的启动而生效,解释器运行结束则失效

  全局名称空间,只要是顶着最左边写的,没有任何缩进的

  特点:只在文件运行时有效

  生命周期:在文件运行时生效,在文件运行完毕后失效

  局部名称空间:存的是函数内定义的名字

  特点:仅在函数调用时生效

  生命周期:随着函数的调用而生效,函数调用结束则失效

  名称空间的加载顺序

    内置   》 全局 》 局部

  名字的查找顺序

    局部 》 全局 》 内置

作用域

  域指的是范围,作用域指的是作用的范围,

  全局作用域:包含的是内置名称空间和全局名称空间的名字

  特点:全局有效

  局部作用域:包含的是局部名称空间中的名字

  特点:局部有效

  global:在局部声明一个名字时来自全局作用域的,可以用来在局部修改全局的不可变类型

  nonlocal:声明一个名字时来自当前层外一层作用域,可以用来在局部修改外层函数的不可变类型

函数对象

  函数是第一类对象:指的是函数名指向的值可以被当作数据去使用

  可以被引用

  可以当中参数传给另一个函数

  可以当作一个函数的返回值

  可以当作容器类型的元素

闭包函数

  闭:指的是闭包函数是定义在一个函数内部的函数

  包:该内部函数包含对外层函数作用域名字的引用

  闭包函数提供了一种为函数体传值的解决方案

原文地址:https://www.cnblogs.com/LinChengcheng/p/10266852.html