当前位置: 首页 > news >正文

成都网站建设制作公司河南高端网站高端网站建设

成都网站建设制作公司,河南高端网站高端网站建设,哈尔滨一恒建设,大庆网络推广hello#xff0c;这里是Token_w的文章#xff0c;主要讲解python的基础学习#xff0c;希望对大家有所帮助 整理不易#xff0c;感觉还不错的可以点赞收藏评论支持#xff0c;感谢#xff01; 目录 一. Python执行原理二. Python内部执行过程2.1 编译过程概述2.2 过程图解… hello这里是Token_w的文章主要讲解python的基础学习希望对大家有所帮助 整理不易感觉还不错的可以点赞收藏评论支持感谢 目录 一. Python执行原理二. Python内部执行过程2.1 编译过程概述2.2 过程图解2.4 codeobject对象的属性 一. Python执行原理 这里的解释执行是相对于编译执行而言的。我们都知道使用C/C之类的编译性语言编写的程序是需要从源文件转换成计算机使用的机器语言经过链接器链接之后形成了二进制的可执行文件。运行该程序的时候就可以把二进制程序从硬盘载入到内存中并运行。 但是对于Python而言Python源码不需要编译成二进制代码它可以直接从源代码运行程序。当我们运行Python文件程序的时候Python解释器将源代码转换为字节码然后再由Python解释器来执行这些字节码。这样Python就不用担心程序的编译,库的链接加载等问题了。 对于Python解释语言有以下3方面的特性 每次运行都要进行转换成字节码然后再有虚拟机把字节码转换成机器语言最后才能在硬件上运行。与编译性语言相比每次多出了编译和链接的过程性能肯定会受到影响。由于不用关心程序的编译和库的链接等问题开发的工作也就更加轻松啦。Python代码与机器底层更远了Python程序更加易于移植基本上无需改动就能在多平台上运行。 在具体计算机上实现一种语言首先要确定的是表示该语言语义解释的虚拟计算机一个关键的问题是程序执行时的基本表示是实际计算机上的机器语言还是虚拟机的机器语言。这个问题决定了语言的实现。根据这个问题的回答可以将程序设计语言划分为两大类编译型语言和解释型语言。 编译实现的语言如C、C、Fortran、Pascal、Ada。由编译型语言编写的源程序需要经过编译,汇编和链接才能输出目标代码然后由机器执行目标代码。目标代码是有机器指令组成不能独立运行因为源程序中可能使用了一些汇编程序不能解释引用的库函数而库函数又不在源程序中此时还需要链接程序完成外部引用和目标模板调用的链接任务最后才能输出可执行代码。解释型语言解释器不产生目标机器代码而是产生中间代码这种中间代码与机器代码不同中间代码的解释是由软件支持的不能直接使用在硬件上。该软件解释器通常会导致执行效率较低用解释型语言编写的程序是由另一个可以理解中间代码的解释程序执行的。和编译的程序不同的是,解释程序的任务是逐一将源代码的语句解释成可执行的机器指令不需要将源程序翻译成目标代码再执行。对于解释型语言需要一个专门的解释器来执行该程序每条语句只有在执行是才能被翻译这种解释型语言每执行一次就翻译一次因而效率低下。Java解释器java很特殊java是需要编译的但是没有直接编译成机器语言而是编译成字节码然后在Java虚拟机上用解释的方式执行字节码。Python也使用了类似的方式先将Python编译成Python字节码然后由一个专门的Python字节码解释器负责解释执行字节码。Python是一门解释语言但是出于效率的考虑提供了一种编译的方法。编译之后就得到pyc文件存储了字节码。Python这点和java很类似但是java与Python不同的是Python是一个解释型的语言所以编译字节码不是一个强制的操作事实上编译是一个自动的过程一般不会在意它的存在。编译成字节码可以节省加载模块的时间提高效率。除了效率之外字节码的形式也增加了反向工程的难度可以保护源代码。这个只是一定程度上的保护反编译还是可以的。 二. Python内部执行过程 2.1 编译过程概述 当我们执行Python代码的时候在Python解释器用四个过程“拆解”我们的代码最终被CPU执行返回给用户。 首先当用户键入代码交给Python处理的时候会先进行词法分析例如用户键入关键字或者当输入关键字有误时都会被词法分析所触发不正确的代码将不会被执行。 下一步Python会进行语法分析例如当for i in test:中test后面的冒号如果被写为其他符号代码依旧不会被执行。 下面进入最关键的过程在执行Python前Python会生成.pyc文件这个文件就是字节码如果我们不小心修改了字节码Python下次重新编译该程序时会和其上次生成的字节码文件进行比较如果不匹配则会将被修改过的字节码文件进行覆盖以确保每次编译后字节码的准确性。 那么什么是字节码字节码在Python虚拟机程序里对应的是PyCodeObject对象。.pyc文件是字节码在磁盘上的表现形式。简单来说就是在编译代码的过程中首先会将代码中的函数、类等对象分类处理然后生成字节码文件。有了字节码文件CPU可以直接识别字节码文件进行处理接着Python就可执行了。 2.2 过程图解 2.3 编译字节码 Python中有一个内置函数compile()可以将源文件编译成codeobject首先看这个函数的说明 compile(...) compile(source, filename, mode[, flags[, dont_inherit]]) - code object参数1源文件的内容字符串 参数2源文件名称 参数3exec-编译modulesingle-编译一个声明eval-编译一个表达式 一般使用前三个参数就够了 使用示例 #src_file.py #some function def f(d0):c1print hello a9 b8 f()aopen(src_file.py,r).read() #命令行模式中打开源文件进行编译cocompile(a,src_file,exec)type(co) type code #编译出了codeobject对象2.4 codeobject对象的属性 codeobject有哪些变量接上节的内容分析一下 print(co.co_names) #所有的符号名称 # (f, a, b) print(co.co_name)#模块名、函数名、类名 # module print(co.co_consts) #常量集合、函数f和两个int常量a,bd # (0, code object f at 0xb7273b18, file src_file, line 2, 9, 8, None) print(co.co_consts[1].co_varnames) #可以看到f函数也是一个codeobject,打印f中的局部变量 # (c,) print(co.co_code) #字节码指令 # dZdZdZedS print(co.co_consts[1].co_firstlineno) #代码块在文件中的起始行号 # 2 print(co.co_stacksize) #代码栈大小 # 2 print(co.co_filename) #文件名 # src_file #模块名、函数名、类名 codeobject的co_code代表了字节码这个字节码有什么含义我们可以使用dis模块进行Python的反编译 import dis dis.dis(co) print(output) 2 0 LOAD_CONST 0 (0)3 LOAD_CONST 1 (code object f at 0xb7273b18, file src_file, line 2)6 MAKE_FUNCTION 19 STORE_NAME 0 (f)5 12 LOAD_CONST 2 (9)15 STORE_NAME 1 (a)6 18 LOAD_CONST 3 (8)21 STORE_NAME 2 (b)7 24 LOAD_NAME 0 (f)27 CALL_FUNCTION 030 POP_TOP 31 LOAD_CONST 4 (None)34 RETURN_VALUE 从反编译的结果来看Python字节码其实是模仿的x86的汇编将代码编译成一条一条的指令交给一个虚拟的cpu去执行。 第一列行号第二列指令在代码块中的偏移量第三列指令第四列操作数第五列操作数说明
http://www.hkea.cn/news/14292135/

相关文章:

  • 英文网站推广公司wordpress关键词屏蔽
  • 上海虹口建设局官方网站装修免费出效果图
  • 达州市建设局网站盛世阳光-网站建设
  • 公司做网站的费用入账网页界面设计的尺寸
  • 新乡公司网站建设敦煌网网站评价
  • 住房和城乡建设厅门户网站重庆技术网站建设
  • 南昌做网站kaiu工业产品设计与创客实践赛题库
  • 购物网站模板站比分网站怎么做
  • 正能量网站免费入口不用下载网站获取用户
  • 用群晖做网站江门网站平台建设
  • 淄博哪里有网站建设平台物联网流量卡
  • 学用mvc4做网站广州软件外包公司排名
  • 做外贸需掌握的网站建设公司网站需要什么技术
  • 公司网站后台导航链接怎么做网站开发硬件
  • html5网站多少钱海外房地产网站建设
  • 广州营销网站制作网站建设维护公司排名
  • 网站开发工具设备要求百度搜图
  • 重庆营销型网站随做的好处用wordpress 登录界面
  • 电脑网站开发学习目前哪些企业需要做网站建设的呢
  • 企业网站建设2017工程施工合同协议书范本
  • 北京市网站设计-推广公司火车站网站建设方案
  • 网站开发与维护的工作内容标题关键词优化技巧
  • 专业做logo的网站网络营销的多种形式和特点
  • 网站建设代理公司wordpress背景图片插件
  • 第三方网站wordpress google fonts 360
  • 安防公司做网站图片wordpress自动关键词
  • 微信小程序源代码上海搜索引擎优化
  • 电子商务网站费用wordpress 加入代码
  • 国产做爰全免费的视频网站企业网站访问量的第一来源是( )
  • 房山石家庄网站建设广州技术网站建设