执行角度看待一切语言特性

执行为主,其余一切提供参数(执行环境)

运算符——函数

运算对象——参数

赋值——临时中转?

带着状态执行(执行环境):闭包

执行环境的切换:协程,生成器(真迭代器?)

执行环境

一个语句的执行环境:前一条语句跳入此句,决定下一条执行语句(跳转)。环境:当前能用(在作用域内的)的对象集合(实现为字典?)

函数的执行环境:函数是个调用语句——所以包含普通语句的执行环境。(各语言可见性控制不同)

        另外,函数在打包屏蔽的同时,暴露出接口(参数,返回值),只有传参完成了,执行环境才完整,可以执行。

        但存在不完整环境,则需要在调用的时候指定(参数)

        

闭包:形式上表现为嵌套函数,外层返回内层函数

给外层提供参数后,内层函数的执行环境完整了(作为可调用对象返回),但还需传递给内层参数,才能进行完整的调用执行

参数的两种语义:提供执行环境,定制化函数行为;提供数据,供操作使用

执行环境的各种处理:

默认参数:定义时绑定,在函数外层搜索变量。语义:与具体执行无关,初始化确定且唯一

嵌套函数多次传参:每完成一次传参,得到的参数(形参)加入执行环境,并暴露出内层可调用对象,

一次次传参,一次次丰富执行环境,一层层解出内层嵌套

方法:绑定对象实例。作用域=自身函数作用域(参数+局部变量)+实例内部作用域(属性访问self.限定符)

类方法:绑定类对象实例。作用域=自身函数作用域(参数+局部变量)+类作用域(声明处,唯一)

搜索机制:作用域里放指针,引用父作用域?

搜索算法:有向图确定拓扑序,分支优先选长路径?

执行环境的修改

1.科里化

确定一部分执行环境

2.装饰器

引入更多的执行环境变量,从而强化函数的语义

可调用对象之间的区分:对象的同一性

1.基于引用复制,得到同一对象不同引用

2.函数多次调用,自身保持不变(连续性)

3.闭包定制可调用对象——闭包作为一种构造函数,返回可调用对象

###从执行环境的角度来说,作用域是执行环境不发生变化的最大区域

执行环境是起效作用域的并?

原文地址:https://www.cnblogs.com/qmcj/p/9248485.html