python_day11_函数知识点

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37361758/article/details/83795760

name sapce 名称空间

简单来说 x=1 中, 1被存入 内存中, 而x 与1 的绑定关系以字典形式被存入内存中 被叫做 命名空间
不同变量的作用域不同就是由这个变量所在的命名空间决定的.

LEGB: 变量查找顺序.

locals -> enclosing function-> globals->builtins
locals : 函数内的名字空间.包括局部变量和形参
enclosing: 外部嵌套函数.的名字空间
globals: 全局变量, 函数定义所在模块的名字空间
builtins : 内置模块的名字空间.

  • locals :是函数内所有的内的名称空间,包括局部变量和形参
    globals: 全局变量.函数定义所在的 模块的名字空间
    builtins: 内置模块的名字空间

闭包

  • 关于闭包,即函数定义和番薯表达式位于另一个函数的函数体内(嵌套函数).而且,这些内部函数可以访问他们所在的外部函数中声明的所有局部变量/参数.当其中一个这样的内部函数在包含他们的外部函数之外被调用时,就会形成闭包.也就是说, 内部函数会在外部函数返回后被执行.而当这个内部函数执行时,它任然必须访问其外部函数的局部变量/参数以及其他的内部函数.这些局部变量/参数和函数声明(最初时)的值是外部函数返回时的值, 但也会受到内部函数的影响.
  • 闭包的意义: 返回的函数对象,不仅仅是一个函数对象,在该函数外还包裹了一层作用域,这使得,该函数无论在何处调用,优先使用自己外层包裹的作用域.

装饰器

软件开发原则: 开放-封闭

  • 封闭: 已实现的功能代码不应该被修改
  • 开放: 对现有的功能的扩展开放

猜你喜欢

转载自blog.csdn.net/weixin_37361758/article/details/83795760