Python基础知识-pycharm版 第7节
083.嵌套函数(内部函数)_数据隐藏
嵌套函数:在函数内部定义的函数!
上面程序中,f2()就是定义在f1 函数内部的函数。f2()的定义和调用都在 f1()函数内部。
一般在什么情况下使用嵌套函数?
- 封装 - 数据隐藏
外部无法访问“嵌套函数”。 - 贯彻 DRY(Don’t Repeat Yourself) 原则
嵌套函数,可以让我们在函数内部避免重复代码。 - 闭包
后面会详细讲解。
084.nonlocal_global
nonlocal 用来声明外层的局部变量。
global 用来声明全局变量。
085.LEGB规则
Python在查找“名称”时,是按照LEGB规则查找的:
Local–>Enclosed–>Global–>Built in
- Local
指的就是函数或者类的方法内部 - Enclosed
指的是嵌套函数(一个函数包裹另一个函数,闭包) - Global
指的是模块中的全局变量 - Built in
指的是Python为自己保留的特殊名称。
如果某个name映射在局部(local)命名空间中没有找到,接下来就会在闭包作用域 (enclosed)进行搜索,如果闭包作用域也没有找到,Python就会到全局(global)命名空间中进行查找,最后会在内建(built-in)命名空间搜索 (如果一个名称在所有命名空间 中都没有找到,就会产生一个NameError)。
依次将几个str注释掉,观察控制台打印的内容,可以体会LEBG的搜索顺序。
086.(第6章(1) 面向对象初步)面向对象和面向过程的区别_执行者思维_设计者思维
- 面向过程(Procedure Oriented)思维
面向过程编程更加关注的是“程序的逻辑流程”,是一种“执行者”思维,适合编写小规模的程序。
面向过程思想思考问题时,首先思考“怎么按步骤实现?”并将步骤对应成方法, 一步一步,最终完成。 这个适合简单任务,不需要过多协作的情况下。比如,如何开车? 很容易就列出实现步骤:
发动车 → \to → 挂挡 → \to → 踩油门