python编程的核心知识点总结


Posted in Python onFebruary 08, 2021

一、为什么提出python编程的核心是什么?

我想要Python实现,这已经不是什么秘密了。WebAssembly它不仅会让Python进入浏览器,而且事实是两者都是IOS和安卓支持将JavaScript作为应用程序的一部分运行,它还可以让Python进入移动平台。这一切都让我兴奋。

但是当想到创建Python的新实现这一艰巨任务时,我的大脑也开始问到底是什么东西。是Python?我们一起生活过CPython长期以来,我怀疑我们大多数人只是认为“Python==CPython”。皮皮试着这么做兼容他们将实现CPython的实现细节。基本上,据我所知,Python的大多数实现都力求通过CPython的测试套件,并尽可能与CPython兼容。

这太令人望而生畏了。由CPython实现的Python是非常动态的,并且暴露了许多只有在您使用解释器实现Python时才有意义的事情。例如,PyPy有一个基线解释器,他们使用JIT,但是在Python中可以使用很多东西,这些东西迫使PyPy关闭JIT并继续使用字节码。仅REPL本身就使事情变得非常动态,因为您输入到REPL中的所有内容都是由解释器动态解析、编译和执行的。

这让我思考了到底是什么是Python?语言的核心是什么?所有Python实现都需要覆盖哪些基线,才能真正将自己称为Python的实现,而人们仍然会认识到这一点?或者从我的角度来看,要将Python直接编译到WebAssembly并仍然被认为是Python实现,还需要实现多少呢?

二、Python需要REPL?

真正让我开始思考这个问题的是,当我开始思考如何将Python编译成WebAssembly时?没有实现另一个解释器,但实际上从Python源发出静态WebAssembly,并且仍然合理地称之为“Python”。

我知道的一件事是通过动态编译eval()或compile()很难做到WebAssembly安全模型在加载时验证模块。这意味着在其他代码的内存空间中不存在只运行任意代码的结构化结构,这可能会使REPL的实现变得很棘手。

但这让我想:Python真的需要REPL?不要误解我的意思,它非常方便,但是如果一个实现没有REPL,它会不会不再成Python?我认为没有REPL的Python仍然是Python,它只是缺少一个(可能的键)特性。

三、Python的哪些部分需要被视为“Python”?

你能活下去吗locals()?能够任意地将所有定义的局部变量及其值收集到字典中是一件非常动态的事情。如果您是在一个整数(如CPython)中,您只需从当前执行框架中收集一些内容,就可以得到局部变量。但是在编译语言中,这需要做更多的工作,因为您必须知道何时收集所有这些信息,因为不一定只是在调用时躺在那里。locals().
或者其他人locals()本身?再说一次,这在CPython中并不是什么大问题,因为builtins模块有一个__dict__您可以覆盖它,它将简单地传播到任何未来的调用。但是在一种编译语言中,做这种检测需要付出更多的努力,这样的检查最终要花费性能。

关于sys.settrace()?它实际上会触发每个字节码的回调,如果编译了代码,这就不太起作用了。您可以通过检查在每一行之后是否设置了跟踪函数来伪造它,但是当大多数时候没有设置这样的钩子时,这看起来就有点麻烦了(不过,在这种支持下编译可能是一个编译器标志)。

那你觉得呢?sys._getframe()?编译后的语言不一定会直接访问执行框架,所以您是否需要进行模拟呢?由于任何函数都可以请求执行框架,因此您需要随时准备按需提供执行帧。

正如您所看到的,Python中有很多东西使得编译变得困难(因此更强大到努特卡接受这个挑战)。但我敢打赌,我上面提到的东西--你不会在99.9%的时间里使用它们,所以如果一个实现忽略了它们,它还能被认为是“Python”吗?

四、需要多少兼容性才能有用?

我对这个问题没有很好的答案。但它的答案决定了实现Python有多困难,以及它与现有软件的兼容性。我要说的是,我认为WebAssembly不需要支持大量的Python软件才有用。WebAssembly可以访问其他语言生态系统,如Rust和JavaScript,因此您需要用另一种语言实现一些您可以使用的其他语言的可能性肯定在零以上。

我没有答案

开发一个直接将Python代码转换为WebAssembly并为性能牺牲一些兼容性的编译器可能是有意义的。开发一个针对WebAssembly设计但与已有代码保持大量兼容性的解释器可能是有意义的。简单地支持RustPython在他们的WebAssembly的努力中。也许吧皮笛会把我们带到那里。我不认为任何这些可能性本质上都是错误的,它很可能会归结到任何一个足以激发人们的兴趣,看到它对他人有用的程度。

到此这篇关于python编程的核心知识点总结的文章就介绍到这了,更多相关python编程的核心是什么内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python解析json实例方法
Nov 19 Python
pyqt4教程之widget使用示例分享
Mar 07 Python
Python闭包的两个注意事项(推荐)
Mar 20 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
May 19 Python
python微信跳一跳系列之色块轮廓定位棋盘
Feb 26 Python
PyQt5每天必学之QSplitter实现窗口分隔
Apr 19 Python
Python线程下使用锁的技巧分享
Sep 13 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
Aug 05 Python
对Django的restful用法详解(自带的增删改查)
Aug 28 Python
python 读取二进制 显示图片案例
Apr 24 Python
tensorflow转换ckpt为savermodel模型的实现
May 25 Python
详解Python的爬虫框架 Scrapy
Aug 03 Python
python上下文管理器异常问题解决方法
Feb 07 #Python
python中@contextmanager实例用法
Feb 07 #Python
python tkinter实现下载进度条及抖音视频去水印原理
Feb 07 #Python
python gui开发——制作抖音无水印视频下载工具(附源码)
Feb 07 #Python
Python中全局变量和局部变量的理解与区别
Feb 07 #Python
Python抖音快手代码舞(字符舞)的实现方法
Feb 07 #Python
Python图像处理之膨胀与腐蚀的操作
Feb 07 #Python
You might like
一个PHP缓存类代码(附详细说明)
2011/06/09 PHP
PHP学习笔记 IIS7下安装配置php环境
2012/10/29 PHP
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
PHP网站开发中常用的8个小技巧
2015/02/13 PHP
php文件上传后端处理小技巧
2016/05/22 PHP
php使用parse_str实现查询字符串解析到变量中的方法
2017/02/17 PHP
使用jQuery操作Cookies的实现代码
2011/10/09 Javascript
使用AngularJS处理单选框和复选框的简单方法
2015/06/19 Javascript
jQuery仿京东商城楼梯式导航定位菜单
2016/07/25 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
2018/01/23 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
2018/04/17 Javascript
jQuery实现每隔一段时间自动更换样式的方法分析
2018/05/03 jQuery
vue中使用protobuf的过程记录
2018/10/26 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
angularjs自定义过滤器demo示例
2019/08/24 Javascript
微信小程序 行的删除和增加操作实现详解
2019/09/29 Javascript
JS写滑稽笑脸运动效果
2020/05/28 Javascript
python基于隐马尔可夫模型实现中文拼音输入
2016/04/01 Python
Python中基础的socket编程实战攻略
2016/06/01 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
Python深拷贝与浅拷贝用法实例分析
2019/05/05 Python
softmax及python实现过程解析
2019/09/30 Python
Python面向对象之继承原理与用法案例分析
2019/12/31 Python
tensorflow 实现数据类型转换
2020/02/17 Python
django为Form生成的label标签添加class方式
2020/05/20 Python
python 实现"神经衰弱"翻牌游戏
2020/11/09 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
2021/01/24 Python
英国儿童图书网站:Scholastic
2017/03/26 全球购物
医学毕业生自我鉴定
2013/10/30 职场文书
大学毕业生自我鉴定
2013/11/05 职场文书
千元咖啡店的创业计划书范文
2013/12/29 职场文书
财产公证书格式
2014/04/10 职场文书
幼儿评语大全
2014/04/30 职场文书
房屋认购协议书
2015/01/29 职场文书
2016民族团结先进个人事迹材料
2016/02/26 职场文书
RestTemplate如何通过HTTP Basic Auth认证示例说明
2022/03/17 Java/Android