仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 824|回复: 12
打印 上一主题 下一主题

[其他Linux] Linux教程之Python注释器简介(4):静态言语仓酷云

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:21:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
开发linux发行版的人都是通读过linux内核代码,对linux原理极其精通的人。
这是Python注释器简介的第四部分。浏览第一部分、第二部分和第三部分。假如你喜好这个系列的话,那就把它分享到HackerSchool吧。我是那边的办理员。
当我入手下手研讨python外部事情的时分,我一向很狐疑为何可以举行“编译”的python仍是“静态言语”。一般,我们都将这两个词作为一对反义词——“静态言语”1包含Python、Ruby和Javascript等,而“编译言语”则包含C、Java和Haskell等。
人们一般所说的“编译言语”是指可以编译出合用于x86、ARM等的指令2(感化于真实的呆板)的言语。一种“注释性”言语不是基本就没有编译器3就是只编译成一其中间暗示,好比字节码。字节码的指令不是感化于任何硬件的,而是假造机。Python就属于后者:Python的编译器将天生的字节码传送给Python注释器。4
Python注释器将经由过程假造机做很多事情使得字节码得以注释。至于假造机,我们会在第五部分会商。
今朝为止,我们对编译息争释的观点仍是笼统的。经由过程上面这个例子我们能加倍明晰:
1
2
3
4
5
6
7
8
9
10
>>>defmodulus(x,y):
...returnx%y
...
>>>[ord(b)forbinmodulus.func_code.co_code]
[124,0,0,124,1,0,22,83]
>>>dis.dis(modulus.func_code)
20LOAD_FAST0(x)
3LOAD_FAST1(y)
6BINARY_MODULO
7RETURN_VALUE

这是一个函数和它的字节码经由过程反汇编程序的了局。一旦我们界说了modulus函数,它就被编译了而且天生了一个不克不及被修正的代码对象。
这应当很简单推算。键进modulus(%)使编译器收回指令BINARY_MODULO。以是假如我们要盘算一个余数的话,这个函数就可以够发扬感化了。
1
2
>>>modulus(15,4)
3

如许看,它一般事情。但假如我们不传送数字给它呢?
1
2
>>>modulus("hello%s","world")
helloworld

慢着,这是怎样了?你之前大概见到过,但它一般是这么写的:
1
2
>>>print"hello%s"%"world"
helloworld

当BINARY_MODULO处置两个字符串的时分,它默许实行字符串插值而不是求余数。这就是静态范例的典范例子。编译器在天生modulus的代码对象的时分,它完整不晓得x和y是字符串、数字仍是别的范例。它只是收回一些指令罢了:加载一个名字,加载另外一个名字,BINARY_MODULO这个两个对象,然后前往了局。至于弄清BINARY_MODULO真正指甚么则是注释器的事情。
我想我们疏忽了一些工具。我们的函数modulus可以盘算余数大概格局化字符串,另有吗?假如我们界说一个可以呼应__mod__的自界说对象的话,我们还能做良多。
<p>1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>>classSurprise(object):
<p>...def__init__(self
飘飘悠悠 该用户已被删除
沙发
发表于 2015-1-20 21:11:02 | 只看该作者
发问的时候一定要注意到某些礼节。因为Linux社区是一个松散的组织、也不承担回复每个帖子的义务。它不是技术支持。
老尸 该用户已被删除
板凳
发表于 2015-1-30 05:19:19 | 只看该作者
掌握硬件配置,如显卡,声卡,网卡等,硬件只要不是太老或太新一般都能被支持,作为一名Linux系统管理员建议多阅读有关硬件配置文章,对各种不支持或支持不太好的硬件有深刻的了解。
飘灵儿 该用户已被删除
地板
发表于 2015-1-30 21:08:46 | 只看该作者
和私有操作系统不同,各个Linux的发行版本的技术支持时间都较短,这对于Linux初学者是往往不够的。
分手快乐 该用户已被删除
5#
发表于 2015-2-5 20:58:56 | 只看该作者
和私有操作系统不同,各个Linux的发行版本的技术支持时间都较短,这对于Linux初学者是往往不够的。
因胸联盟 该用户已被删除
6#
发表于 2015-2-8 07:43:53 | 只看该作者
学习Linux,应该怎样学,主要学些什么,一位Linux热心学习者,一段学习Linux的风云经验,历时十二个小时的思考总结,近十位网络Linux学习者权威肯定,为您学习Linux指明方向。
山那边是海 该用户已被删除
7#
发表于 2015-2-18 01:11:52 | 只看该作者
Linux操作系统这个名词记得在很早以前就听过,但当时并不知道具体是什么样的操作系统,只知道是一个与嵌入式密切相关的操作系统。
蒙在股里 该用户已被删除
8#
发表于 2015-2-28 03:16:03 | 只看该作者
可以说自己收获很大,基本上完成了老师布置的任务,对于拔高的题目没有去做,因为我了解我的水平,没有时间和精力去做。?
爱飞 该用户已被删除
9#
发表于 2015-2-28 21:58:29 | 只看该作者
安装一个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手安装,这样遇到问题就知道为什么。如果Linux说明文档不看,结果出了问题再去论坛来找答案反而浪费时间。
愤怒的大鸟 该用户已被删除
10#
发表于 2015-3-9 14:34:56 | 只看该作者
为了更好的学习这门课程,我不仅课上认真听讲,课下也努力学习,为此还在自己的电脑上安装了Ubuntu系统。
只想知道 该用户已被删除
11#
发表于 2015-3-11 11:40:38 | 只看该作者
Linux是参照Unix思想设计的,理解掌握Linux必须按照Unix思维来进行。思想性的转变比暂时性的技术提高更有用,因为他能帮助你加快学习速度。
第二个灵魂 该用户已被删除
12#
发表于 2015-3-18 09:04:15 | 只看该作者
得到到草率的回答或者根本得不到任何Linux答案。越表现出在寻求帮助前为解决问题付出的努力,你越能得到实质性的帮助。
深爱那片海 该用户已被删除
13#
发表于 2015-3-25 14:29:40 | 只看该作者
说实话小时候没想过搞IT,也计算机了解也只是一些皮毛,至于什么UNIX,Linux,听过没见过,就更别说用过了。?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 01:34

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表