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通过ftplib登录到ftp服务器的方法
May 08 Python
Python语言描述连续子数组的最大和
Jan 04 Python
python:print格式化输出到文件的实例
May 14 Python
Python 调用 zabbix api的方法示例
Jan 06 Python
如何用Python做一个微信机器人自动拉群
Jul 03 Python
通过python实现随机交换礼物程序详解
Jul 10 Python
python+openCV调用摄像头拍摄和处理图片的实现
Aug 06 Python
python 进程的几种创建方式详解
Aug 29 Python
Python可变参数会自动填充前面的默认同名参数实例
Nov 18 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
Feb 25 Python
简单了解Python字典copy与赋值的区别
Sep 16 Python
Python爬虫基础之简单说一下scrapy的框架结构
Jun 26 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
dedecms防止FCK乱格式化你的代码的修改方法
2007/03/17 PHP
PHP实现的简单mock json脚本分享
2015/02/10 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
ie和firefox中img对象区别的困惑
2006/12/27 Javascript
javascript在一段文字中的光标处插入其他文字
2007/08/26 Javascript
Jquery下判断Id是否存在的代码
2011/01/06 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
2013/12/13 Javascript
JS调用Android、Ios原生控件
2017/01/06 Javascript
vue一步步实现alert功能
2017/07/05 Javascript
浅谈原生JS中的延迟脚本和异步脚本
2017/07/12 Javascript
bootstrap table表格客户端分页实例
2017/08/07 Javascript
Bootstrap实现翻页效果
2017/11/27 Javascript
ionic2中使用自动生成器的方法
2018/03/04 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
2018/08/17 Javascript
微信小程序实现简单跑马灯效果
2020/05/26 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
JavaScript迭代器的含义及用法
2019/06/21 Javascript
[58:59]完美世界DOTA2联赛PWL S3 access vs CPG 第一场 12.13
2020/12/16 DOTA
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
浅谈Python中的全局锁(GIL)问题
2019/01/11 Python
Python使用指定端口进行http请求的例子
2019/07/25 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
2020/06/04 Python
印度尼西亚在线时尚购物网站:ZALORA印尼
2016/08/02 全球购物
瀑布模型都有哪些优缺点
2014/06/23 面试题
自考生自我评价分享
2014/01/18 职场文书
科技之星事迹材料
2014/06/02 职场文书
舞蹈教育学专业自荐信
2014/06/15 职场文书
专题组织生活会方案
2014/06/15 职场文书
元旦趣味活动方案
2014/08/22 职场文书
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
导游词欢迎词
2015/02/02 职场文书
用golang如何替换某个文件中的字符串
2021/04/25 Golang
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL
python随机打印成绩排名表
2021/06/23 Python
springboot集成flyway自动创表的详细配置
2021/06/26 Java/Android
Nginx虚拟主机的搭建的实现步骤
2022/01/18 Servers