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


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

    运算符——函数

    运算对象——参数

    赋值——临时中转?

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

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

    执行环境

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

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

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

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

            

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

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

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

    执行环境的各种处理:

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

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

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

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

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

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

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

    执行环境的修改

    1.科里化

    确定一部分执行环境

    2.装饰器

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

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

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

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

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

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

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

  • 相关阅读:
    sql 算法 : Nested Loop,Hash Join,Merge Join介绍
    Win10 上 安装Arduino 驱动 和 Arduino IDE 1.6.9
    Learning Python 012 函数式编程 2 返回函数 匿名函数 装饰器 偏函数
    Learning Python 012 函数式编程 1 高阶函数
    Learning Python 011 高级特性 2
    Learning Python 011 高级特性 1
    Learning Python 010 函数 2
    Learning Python 010 函数 1
    Learning Python 009 dict(字典)和 set
    Could not get lock /var/lib/dpkg/lock
  • 原文地址:https://www.cnblogs.com/qmcj/p/9248485.html
Copyright © 2020-2023  润新知