怎样通过网址浏览自己做的网站,wordpress所有栏目循环输出,文本资料分享网站 建设,产品的推广方式编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.这是因为计算机不能直接认识并…编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)编译型vs解释型编译型优点编译器一般会有预编译的过程对代码进行优化。因为编译只做一次运行时不需要编译所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。缺点编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码不同的操作系统之间移植就会有问题需要根据运行的操作系统环境编译不同的可执行文件。解释型优点有良好的平台兼容性在任何环境中都可以运行前提是安装了解释器(虚拟机)。灵活修改代码的时候直接修改就可以可以快速部署不用停机维护。缺点每次运行的时候都要解释一遍性能上不如编译型语言。一、低级语言与高级语言最初的计算机程序都是用0和1的序列表示的程序员直接使用的是机器指令无需翻译从纸带打孔输入即可执行得到结果。后来为了方便记忆就将用0、1序列表示的机器指令都用符号助记这些与机器指令一一对应的助记符就成了汇编指令从而诞生了汇编语言。无论是机器指令还是汇编指令都是面向机器的统称为低级语言。因为是针对特定机器的机器指令的助记符所以汇编语言是无法独立于机器(特定的CPU体系结构)的。但汇编语言也是要经过翻译成机器指令才能执行的所以也有将运行在一种机器上的汇编语言翻译成运行在另一种机器上的机器指令的方法那就是交叉汇编技术。高级语言是从人类的逻辑思维角度出发的计算机语言抽象程度大大提高需要经过编译成特定机器上的目标代码才能执行一条高级语言的语句往往需要若干条机器指令来完成。高级语言独立于机器的特性是靠编译器为不同机器生成不同的目标代码(或机器指令)来实现的。那具体的说要将高级语言编译到什么程度呢这又跟编译的技术有关了既可以编译成直接可执行的目标代码也可以编译成一种中间表示然后拿到不同的机器和系统上去执行这种情况通常又需要支撑环境比如解释器或虚拟机的支持Java程序编译成bytecode再由不同平台上的虚拟机执行就是很好的例子。所以说高级语言不依赖于机器是指在不同的机器或平台上高级语言的程序本身不变而通过编译器编译得到的目标代码去适应不同的机器。从这个意义上来说通过交叉汇编一些汇编程序也可以获得不同机器之间的可移植性但这种途径获得的移植性远远不如高级语言来的方便和实用性大。二、编译与解释编译是将源程序翻译成可执行的目标代码翻译与执行是分开的而解释是对源程序的翻译与执行一次性完成不生成可存储的目标代码。这只是表象二者背后的最大区别是对解释执行而言程序运行时的控制权在解释器而不在用户程序对编译执行而言运行时的控制权在用户程序。解释具有良好的动态特性和可移植性比如在解释执行时可以动态改变变量的类型、对程序进行修改以及在程序中插入良好的调试诊断信息等而将解释器移植到不同的系统上则程序不用改动就可以在移植了解释器的系统上运行。同时解释器也有很大的缺点比如执行效率低占用空间大因为不仅要给用户程序分配空间解释器本身也占用了宝贵的系统资源。编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.编译型和解释型我们先看看编译型其实它和汇编语言是一样的也是有一个负责翻译的程序来对我们的源代码进行转换生成相对应的可执行代码。这个过程说得专业一点就称为编译(Compile)而负责编译的程序自然就称为编译器(Compiler)。如果我们写的程序代码都包含在一个源文件中那么通常编译之后就会直接生成一个可执行文件我们就可以直接运行了。但对于一个比较复杂的项目为了方便管理我们通常把代码分散在各个源文件中作为不同的模块来组织。这时编译各个文件时就会生成目标文件(Object file)而不是前面说的可执行文件。一般一个源文件的编译都会对应一个目标文件。这些目标文件里的内容基本上已经是可执行代码了但由于只是整个项目的一部分所以我们还不能直接运行。待所有的源文件的编译都大功告成我们就可以最后把这些半成品的目标文件“打包”成一个可执行文件了这个工作由另一个程序负责完成由于此过程好像是把包含可执行代码的目标文件连接装配起来所以又称为链接(Link)而负责链接的程序就叫……就叫链接程序(Linker)。链接程序除了链接目标文件外可能还有各种资源像图标文件啊、声音文件啊什么的还要负责去除目标文件之间的冗余重复代码等等所以……也是挺累的。链接完成之后一般就可以得到我们想要的可执行文件了。上面我们大概地介绍了编译型语言的特点现在再看看解释型。噢从字面上看“编译”和“解释”的确都有“翻译”的意思它们的区别则在于翻译的时机安排不大一样。打个比方假如你打算阅读一本外文书而你不知道这门外语那么你可以找一名翻译给他足够的时间让他从头到尾把整本书翻译好然后把书的母语版交给你阅读或者你也立刻让这名翻译辅助你阅读让他一句一句给你翻译如果你想往回看某个章节他也得重新给你翻译。两种方式前者就相当于我们刚才所说的编译型一次把所有的代码转换成机器语言然后写成可执行文件而后者就相当于我们要说的解释型在程序运行的前一刻还只有源程序而没有可执行程序而程序每执行到源程序的某一条指令则会有一个称之为解释程序的外壳程序将源代码转换成二进制代码以供执行总言之就是不断地解释、执行、解释、执行……所以解释型程序是离不开解释程序的。像早期的BASIC就是一门经典的解释型语言要执行BASIC程序就得进入BASIC环境然后才能加载程序源文件、运行。解释型程序中由于程序总是以源代码的形式出现因此只要有相应的解释器移植几乎不成问题。编译型程序虽然源代码也可以移植但前提是必须针对不同的系统分别进行编译对于复杂的工程来说的确是一件不小的时间消耗况且很可能一些细节的地方还是要修改源代码。而且解释型程序省却了编译的步骤修改调试也非常方便编辑完毕之后即可立即运行不必像编译型程序一样每次进行小小改动都要耐心等待漫长的Compiling…Linking…这样的编译链接过程。不过凡事有利有弊由于解释型程序是将编译的过程放到执行过程中这就决定了解释型程序注定要比编译型慢上一大截像几百倍的速度差距也是不足为奇的。编译型与解释型两者各有利弊。前者由于程序执行速度快同等条件下对系统要求较低因此像开发操作系统、大型应用程序、数据库系统等时都采用它像C/C、Pascal/Object Pascal(Delphi)、VB等基本都可视为编译语言而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言如Java、JavaScript、VBScript、Perl、Python等等。但既然编译型与解释型各有优缺点又相互对立所以一批新兴的语言都有把两者折衷起来的趋势例如Java语言虽然比较接近解释型语言的特征但在执行之前已经预先进行一次预编译生成的代码是介于机器码和Java源代码之间的中介代码运行的时候则由JVM(Java的虚拟机平台可视为解释器)解释执行。它既保留了源代码的高抽象、可移植的特点又已经完成了对源代码的大部分预编译工作所以执行起来比“纯解释型”程序要快许多。而像VB6(或者以前版本)、C#这样的语言虽然表面上看生成的是.exe可执行程序文件但VB6编译之后实际生成的也是一种中介码只不过编译器在前面安插了一段自动调用某个外部解释器的代码(该解释程序独立于用户编写的程序存放于系统的某个DLL文件中所有以VB6编译生成的可执行程序都要用到它)以解释执行实际的程序体。C#(以及其它.net的语言编译器)则是生成.net目标代码实际执行时则由.net解释系统(就像JVM一样也是一个虚拟机平台)进行执行。当然.net目标代码已经相当“低级”比较接近机器语言了所以仍将其视为编译语言而且其可移植程度也没有Java号称的这么强大Java号称是“一次编译到处执行”而.net则是“一次编码到处编译”。呵呵当然这些都是题外话了。总之随着设计技术与硬件的不断发展编译型与解释型两种方式的界限正在不断变得模糊。动态语言和静态语言通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。(1)动态类型语言动态类型语言是指在运行期间才去做数据类型检查的语言也就是说在用动态类型的语言编程时永远也不用给任何变量指定数据类型该语言会在你第一次赋值给变量时在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言其他的各种脚本语言如VBScript也多少属于动态类型语言。(2)静态类型语言静态类型语言与动态类型语言刚好相反它的数据类型是在编译其间检查的也就是说在写程序时要声明所有变量的数据类型C/C是静态类型语言的典型代表其他的静态类型语言还有C#、JAVA等。强类型定义语言和弱类型定义语言(1)强类型定义语言强制数据类型定义的语言。也就是说一旦一个变量被指定了某个数据类型如果不经过强制转换那么它就永远是这个数据类型了。举个例子如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。(2)弱类型定义语言数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。强类型定义语言在速度上可能略逊色于弱类型定义语言但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的例如Python是动态语言是强类型定义语言(类型安全的语言); VBScript是动态语言是弱类型定义语言(类型不安全的语言); JAVA是静态语言是强类型定义语言(类型安全的语言)。通过上面这些介绍我们可以得出python是一门动态解释性的强类型定义语言。那这些基因使成就了Python的哪些优缺点呢我们继续往下看。Python的优缺点先看优点Python的定位是“优雅”、“明确”、“简单”所以Python程序看上去总是简单易懂初学者学Python不但入门容易而且将来深入下去可以编写那些非常非常复杂的程序。开发效率非常高Python有非常强大的第三方库基本上你想通过计算机实现任何功能Python官方库里都有相应的模块进行支持直接下载调用后在基础库的基础上再进行开发大大降低开发周期避免重复造轮子。高级语言————当你用Python语言编写程序的时候你无需考虑诸如如何管理你的程序使用的内存一类的底层细节可移植性————由于它的开源本质Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。如果你小心地避免使用依赖于系统的特性那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开你可以把你的部分程序用C或C编写然后在你的Python程序中使用它们。可嵌入性————你可以把Python嵌入你的C/C程序从而向你的程序用户提供脚本功能。再看缺点速度慢Python 的运行速度相比C语言确实慢很多跟JAVA相比也要慢一些因此这也是很多所谓的大牛不屑于使用Python的主要原因但其实这里所指的运行速度慢在大多数情况下用户是无法直接感知到的必须借助测试工具才能体现出来比如你用C运一个程序花了0.01s,用Python是0.1s,这样C语言直接比Python快了10倍,算是非常夸张了但是你是无法直接通过肉眼感知的因为一个正常人所能感知的时间最小单位是0.15-0.4s左右哈哈。其实在大多数情况下Python已经完全可以满足你对程序速度的要求除非你要写对速度要求极高的搜索引擎等这种情况下当然还是建议你用C去实现的。代码不能加密因为PYTHON是解释性语言它的源码都是以名文形式存放的不过我不认为这算是一个缺点如果你的项目要求源代码必须是加密的那你一开始就不应该用Python来去实现。线程不能利用多CPU问题这是Python被人诟病最多的一个缺点GIL即全局解释器锁(Global Interpreter Lock)是计算机程序设计语言解释器用于同步线程的工具使得任何时刻仅有一个线程在执行Python的线程是操作系统的原生线程。在Linux上为pthread在Windows上为Win thread完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程以及多条用户程序的执行线程。即使在多核CPU平台上由于GIL的存在所以禁止多线程的并行执行。关于这个问题的折衷解决方法我们在以后线程和进程章节里再进行详细探讨。当然Python还有一些其它的小缺点在这就不一一列举了我想说的是任何一门语言都不是完美的都有擅长和不擅长做的事情建议各位不要拿一个语言的劣势去跟另一个语言的优势来去比较语言只是一个工具是实现程序设计师思想的工具就像我们之前中学学几何时有的时候需要要圆规有的时候需要用三角尺一样拿相应的工具去做它最擅长的事才是正确的选择。之前很多人问我Shell和Python到底哪个好我回答说Shell是个脚本语言但Python不只是个脚本语言能做的事情更多然后又有钻牛角尖的人说完全没必要学Python, Python能做的事情Shell都可以做只要你足够牛B,然后又举了用Shell可以写俄罗斯方块这样的游戏对此我能说表达只能是不要跟SB理论SB会把你拉到跟他一样的高度然后用充分的经验把你打倒。Python解释器当我们编写Python代码时我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码就需要Python解释器去执行.py文件。由于整个Python语言从规范到解释器都是开源的所以理论上只要水平够高任何人都可以编写Python解释器来执行Python代码(当然难度很大)。事实上确实存在多种Python解释器。CPython当我们从Python官方网站下载并安装好Python 2.7后我们就直接获得了一个官方版本的解释器CPython。这个解释器是用C语言开发的所以叫CPython。在命令行下运行python就是启动CPython解释器。CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。IPythonIPython是基于CPython之上的一个交互式解释器也就是说IPython只是在交互方式上有所增强但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同但内核其实都是调用了IE。CPython用作为提示符而IPython用In [序号]:作为提示符。PyPyPyPy是另一个Python解释器它的目标是执行速度。PyPy采用JIT技术对Python代码进行动态编译(注意不是解释)所以可以显著提高Python代码的执行速度。绝大部分Python代码都可以在PyPy下运行但是PyPy和CPython有一些是不同的这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行就需要了解PyPy和CPython的不同点。JythonJython是运行在Java平台上的Python解释器可以直接把Python代码编译成Java字节码执行。IronPythonIronPython和Jython类似只不过IronPython是运行在微软.Net平台上的Python解释器可以直接把Python代码编译成.Net的字节码。小结Python的解释器很多但使用最广泛的还是CPython。如果要和Java或.Net平台交互最好的办法不是用Jython或IronPython而是通过网络调用来交互确保各程序之间的独立性。二、Python发展史1989年为了打发圣诞节假期Guido开始写Python语言的编译器。Python这个名字来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的语言能符合他的理想创造一种C和shell之间功能全面易学易用可拓展的语言。1991年第一个Python编译器诞生。它是用C语言实现的并能够调用C语言的库文件。从一出生Python已经具有了类函数异常处理包含表和词典在内的核心数据类型以及模块为基础的拓展系统。Granddaddy of Python web frameworks, Zope 1 was released in 1999Python 1.0 - January 1994 增加了 lambda, map, filter and reduce.Python 2.0 - October 16, 2000加入了内存回收机制构成了现在Python语言框架的基础Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 诞生Python 2.5 - September 19, 2006Python 2.6 - October 1, 2008Python 2.7 - July 3, 2010In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4 as soon as possiblePython 3.0 - December 3, 2008Python 3.1 - June 27, 2009Python 3.2 - February 20, 2011Python 3.3 - September 29, 2012Python 3.4 - March 16, 2014Python 3.5 - September 13, 2015三、Python 2 or 3?In summary : Python 2.x is legacy, Python 3.x is the present and future of the languagePython 3.0 was released in 2008. The final 2.x version 2.7 release came out in mid-2010, with a statement ofextended support for this end-of-life release. The 2.x branch will see no new major releases after that. 3.x isunder active development and has already seen over five years of stable releases, including version 3.3 in 2012,3.4 in 2014, and 3.5 in 2015. This means that all recent standard library improvements, for example, are onlyavailable by default in Python 3.x.Guido van Rossum (the original creator of the Python language) decided to clean up Python 2.x properly, with less regard for backwards compatibility than is the case for new releases in the 2.x range. The most drastic improvement is the better Unicode support (with all text strings being Unicode by default) as well as saner bytes/Unicode separation.Besides, several aspects of the core language (such as print and exec being statements, integers using floor division) have been adjusted to be easier for newcomers to learn and to be more consistent with the rest of the language, and old cruft has been removed (for example, all classes are now new-style, range() returns a memory efficient iterable, not a list as in 2.x).py2与3的详细区别PRINT IS A FUNCTIONThe statement has been replaced with a print() function, with keyword arguments to replace most of the special syntax of the old statement (PEP 3105). Examples:Old: print The answer is, 2*2 New: print(The answer is, 2*2)Old:print x, #Trailing comma suppresses newline New: print(x, end ) # Appends a space instead of a newlineOld: print #Prints a newlineNew: print() #You must call the function!Old: print sys.stderr, fatal error New: print(fatal error, filesys.stderr)Old:print (x, y) #prints repr((x, y))New: print((x, y)) #Not the same as print(x, y)!You can also customize the separator between items, e.g.:print(There are possibilities!, sep)ALL IS UNICODE NOW从此不再为讨厌的字符编码而烦恼还可以这样玩 (A,*REST,B)RANGE(5) a,*rest,b range(5)a,rest,b(0, [1, 2, 3], 4)某些库改名了Old NameNew Name_winregwinregConfigParserconfigparsercopy_regcopyregQueuequeueSocketServersocketServermarkupbase_markupbasereprreprlibtest.test_supporttest.support还有谁不支持PYTHON3?One popular module that dont yet support Python 3 is Twisted (for networking and other applications). Mostactively maintained libraries have people working on 3.x support. For some libraries, its more of a priority thanothers: Twisted, for example, is mostly focused on production servers, where supporting older versions ofPython is important, let alone supporting a new version that includes major changes to the language. (Twisted isa prime example of a major package where porting to 3.x is far from trivial四、Python安装windows1、下载安装包