python怎么运行,python写完程序之后怎么运行

解释运行程序回忆上次内容py文件的程序是按照顺序一行行挨排解释执行的我们可以python3-mpdbhello.py来对程序调试调试的目的是去除bug别害怕bugbug会有提示我们也就知道如何debu

解释运行程序

回忆上次内容

py 文件的程序是按照顺序

一行行挨排解释执行的

我们可以 python3 -m pdb hello.py 来对程序调试

调试的目的是去除 bug

别害怕 bug

bug 会有提示

我们也就知道如何 debug 调试

python怎么运行

顺序执行

程序在文本中从上到下是一行行写的

调试的时候也是从头到尾一行行执行的

但是执行的时候是如何把代码一行行解释执行的呢?

说到底 python3 到底是个啥呢?

python3 又是怎么解释 hello.py 的?

这两这节课相当复杂

如果感觉太过复杂

可以直接跳过

不影响后面的理解

我们先要看看python3对Guido.py做了些什么???

tokenize

操作软件:python design 1、打开你的功能文件,如下图所示:2、把功能封装成函数然后按CTRL+V粘贴在Design里复制的代码,如下图所示:3、加入信号,链接到函数,如下图所示:4、最后,加入让窗体运行的代码,如下图所示:

首先把字符分组成词

词法分析(lexical analysis)中

把原来的字符流

变成了词的流

token(令牌)流

词法分析之后输出的是一个token流

什么是token流呢?

首先要知道什么是token

token

token

令牌

古人说听我号令

号指的是号角

令指的是令牌

急急如律令

令行禁止

怎么把源文件变成一个token流呢?

python3模块

这个东西是python3的一个模块

具体怎么运行呢?

token流

我们尝试运行

python3 -m tokenize guido.py

对guido.py进行词法分析

分析出来的词(token)流长什么样子呢?

第一,交互式,通过Windows命令行工具进行交互式运行python。同时按下Windows键和R键,启动“运行”,在“运行”中输入cmd然后回车,即弹出命令行工具,然后输入python回车,即出现如下界面。第二,然后输入print('Helloworld!'。

这个词怎么理解呢?

token流

第0行设置了编码格式

第1行[0,5)字符是第1行第1个token

print

print是一个Name(名字)

第1行[5,6)字符是第1行第2个token

(

(是一个Operator(操作符)

第1行[6,30)字符是第1行第3个token

&34;

这是一个String(字符串)

第1行[30,31)字符是第1行第4个token

)

)是一个Operator(操作符)

第1行[31,32)字符是第1行第5个token

\n

\n是一个NewLine(换行符)

换行符意味着第一行结束

第2行...

词分析出来之后呢?

组词

词分析出来就是怎么组词的问题

哪些词和哪些词先组合

哪些词和哪些词后组合

生成一棵抽象语法树

AST(Abstract Syntax Tree)

具体怎么生成这棵ast树呢?

引入ast模块

具体怎么做呢?

流程

先把这个ast模块导入(import)进来

然后读取guido.py并送到s

然后对于s进行语法分析(parse)

不过这乱七八糟堆一起怎么理解呢?

缩进换行

把分析的结果进行dump(转储)

目前lanqiao.cn上面的python是3.8

这个换行需要在3.9以上完成

只能在本地演示一下

缩进演示

这个就是把词组成语法树的样子

但是语法树还不能直接执行

什么才能直接执行呢?

翻译成字节码

字节码(指令)才能真正执行

怎么把ast转化为字节码(指令)呢?

需要编译

从一种语言到另一种语言

从py文件

到字节码(指令)

我可以看看这个编译过程么?

compile

这个东西完全是乱码

我看不懂啊?

vi打开这个这个pyc文件

二进制形态

:set wrap设置换行

首先打开pycharm软件,我们右键单击新建一个python文件,如下图所示 在python文件中简单的写一点程序语句,如下图所示 接下来点击顶部的Run菜单,然后点击要执行的python文件,如下图所示 最后在底部的输出窗口就可以看到输出结果。

可以看到他的二进制形态么?

二进制

当你创建完.py文件后,而且输入代码,必须告诉Python去执行这个文件。也就是说,从头到尾按照顺序一个接一个地运行文件中的语句。可以通过命令行,从IDE中点击其图标或者其他标准技术来运行Python程序。Python解释器简介:Python。

:%!xxd

把文件转化为二进制

实在是看不懂啊

能把这个字节码(指令)变成我们人能看懂的么?

反编译

disassembler这个词由两部分组成

dis (反着来的)

assembler (汇编语言)

整体就是

把py源文件编译成的字节码(指令)

反编译(disassembler)成这些字节码对应的助记符(指令的含义)

这可以用么?

去试试!

反编译(dis)

python3 -m dis guido.py

我们可以看见

前面是行号

每行对应4条指令

LOAD_NAME 装载函数名

LOAD_CONST 装载参数

CALL_FUNCTION 调用函数

POP_TOP 弹栈返回

每条指令对应一个字节码

那具体这个LOAD_NAME是什么意思呢?

指令

指令对应着一个字节码状态

但是LOAD_NAME这条指令

具体对应什么二进制字节状态呢?

二进制状态

我们找找程序中的4条指令对应的字节状态

4条指令

指令助记符

指令含义

十进制状态

十六进制状态

LOAD_NAME

装载函数名称

LOAD_CONST

装载参数

CALL_FUNCTION

调用函数

0x8e

POP_TOP

弹栈返回

可以找到源代码的对应关系么?

好像找到了

但是0x83 对应的是 GET_AWAITABLE

显然00 83是从表中的0号位置取得字符串变量

那这些代码究竟是什么指令集的呢?

龙芯

intel

还是arm呢?

虚拟机的虚拟cpu

这些字节码(bytecode)对应的是python虚拟机上面虚拟cpu的指令集

怎么还有虚拟机

虚拟cpu呢?

我们先把这节课总结一下

总结

我们把python源文件

词法分析 得到 词流(token stream)

语法分析 得到 抽象语法树(Abstract Syntax Tree)

编译 得到 字节码 (bytecode)

反编译 得到 指令文件

不过这个指令文件是基于虚拟机的虚拟cpu的指令集

怎么这么虚呢?

我们下次再说

本文章来自于《oeasy教您玩转python》()中第6个实验。

上一篇 2023年02月28 11:33
下一篇 2023年02月13 05:42

相关推荐

  • pr怎么复制,pr怎么把v1复制到v2

    从Finder/Windows资源管理器/桌面从源监视器pr怎么把v1复制到v2,最常见的方法是,可以将“入”和“出”点放在“源监视器”中,然后直接插入或覆盖到“时间轴”面板。您可以使用源面板上的插入

    2023年02月13 230
  • 苹果平板怎么截图,平板屏幕出现两层影像

    截屏操作,无论是在使用iPhone还是iPad,都是十分实用的。在看电影时想分享一些台词、在看视频教程时截取重点内容记录,等等。总之,截屏操作可以说是使用iPad的最基础功能之一。特别是在今年iPad

    2023年02月04 211
  • 还原所有设置会怎么样,安卓还原所有设置会怎么样

    当一部手机用久了之后,出现卡顿、内存不足甚至死机的时候,你会怎么做?又或者是某种原因,你忘记了锁屏密码开不了手机的时候,你又会怎么做?在这种情况下,相信有很多小伙伴都会直接选择恢复出厂设置或者去刷机。

    2023年02月05 211
  • 怎么打开qq邮箱,手机QQ怎么看QQ邮箱

    IT之家10月11日消息,QQ邮箱团队今日向用户发出通知,为了保障QQ及QQ邮箱帐号的安全,将从2022年11月1日起,在使用POP3/IMAP/SMTP/ExchangeActiveSync/Car

    2023年02月13 285
  • 电瓶充电器多少钱,电瓶充电器有用吗

    中国质量新闻网讯近日,深圳市市场监管局发布2021年个护健康器具等11类产品质量监督抽查结果。本次抽查了深圳市16家受检单位销售的22批次电动自行车用蓄电池及其充电器产品,发现不合格产品3批次。其中,

    2023年03月03 287
  • 彩铃怎么换,中国移动彩铃怎么更换

    唐僧饿了说:“悟空,为师饿了,你去化点斋饭吧!”悟空很快回来,手里只拿了几根黄瓜。唐僧:“这是到哪里了?”悟空:“方圆百里都是黄瓜地,我也不知道是哪里!”唐僧:“扶我起来,想必到了女儿国了!”客服人员

    2023年02月13 283
  • 淘宝保证金怎么交,淘宝开店30元交费

    淘宝新手盈利宝典相信很多有了解过淘宝开店或者是有开过淘宝店的商家都知道,经营大部分类目都是需要缴纳保证金的,这个保证金就相当于我们去开这个店铺的一个押金,淘宝开店30元交费入口,能够更好的保障消费者的

    2023年02月14 237
  • 电池电压多少正常,5号电池电压多少正常

    干电池(Drycell)是一种以糊状电解液来产生直流电的化学电池(湿电池则为使用液态电解液的化学电池),干电池是一次性电池,是日常生活中普遍使用、轻便的电池,常用的干电池是锌锰干电池。作为家里的小帮手

    2023年03月01 279
  • 开网店要多少钱,开一家网店需要投资多少钱

    好的我们进入今天的主题吧,这次案例是一个比较有基础的店铺,新店铺做起来的压力很大的,毕竟各种数据都是新的,店家的资源也不是很正规和成熟,导致出现的结局也不是一样的。但是有一定的基础的店铺,那么青年是一

    2023年02月18 264
  • 中通快递号码多少,中通快递

    京东快递员正在电话联系收件人近年来,宁波市也推出了“小哥驿站”等服务点关心关爱快递行业从业人员。同时,《浙江省快递业促进条例》还指出,要加强快递公司会重视起配送体验,加强对快递员的培训,那么派送前打电

    2023年03月09 221
  • iphone怎么恢复出厂设置,苹果手机未激活设置了密码

    苹果恢复出厂设置怎么操作?我们知道,当iPhone/iPad出现内存不足、黑屏、卡死、APP闪退等问题时,可使用恢复出厂设置来解决设备问题,一般非硬件问题,苹果手机未激活设置了密码,都可以通过恢复出厂

    2023年02月05 293
  • 小2寸照片是多少厘米,小2寸证件照是多少厘米

    二寸照片的尺寸是多少?大家在学习或工作中上传电子材料时,小2寸证件照是多少厘米,经常会需要用到证件照,而证件照的尺寸也会有不同要求,那么二寸照片的尺寸是多少呢,很多朋友们对此还不太清楚,下面小编就为大

    2023年02月19 259
  • ppt怎么变成图片,ppt怎么单独导出一页成图片

    哈喽大家好,我是氢元素网小氢,今天来学习一下PPT中如何用一张图片制作表格图片。ppt怎么单独导出一页成图片,1.首先——插入——图片——此设备(准备一张你所需的图片素材保存电脑即可)——然后把图片铺

    2023年02月15 259
关注微信