python的基本原理_python基础1(理论基础)
1.python是什么语⾔
学python编程入门2.python的发展史
3.python2与python3的区别
4.python的语⾔类型
5.python的优缺点
字母z的ascii码是6.IDLE是什么
7.变量是什么
⼀.python是什么语⾔?
python是脚本语⾔,脚本语⾔是电脑编程语⾔,因为也能让开发者编写出让电脑听命⾏事的程序,以简单的⽅式快速完成某些复杂的事情通常是创造脚本语⾔的重要原则,基于这项原则,使得脚本语⾔通常⽐脚本语⾔简单。
特性:
1.结构⽐较简单
2.学习和使⽤⽐较简单
3.通常以修改程序的“解释”作为运⾏⽅式,⽽不是“编译”
4.程序以开发产能优于性能
⼆.Python的发展史
1989年,为了打发圣诞节假期,Guido开始写Python语⾔的编译器。Python这个名字,来⾃Guido所挚爱的电视剧Monty Python's Flying Circus。他希望这个新的叫做Python的语⾔,能符合他的理想:创造⼀种C和shell之间,功能全⾯,易学易⽤,可拓展的语⾔。
1991年,第⼀个Python编译器诞⽣。它是⽤C语⾔实现的,并能够调⽤C语⾔的库⽂件。从⼀出⽣,Python已经具有了:类函数,异常处理,包含表和词典在内的核⼼数据类型,以及模块为基础的拓展系统。
Granddaddy of Python web framewoks,Zope 1 was released in 1999
Python 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,2006
Python 2.6-October 1,2008
Python 2.7-July 3,2010
商城系统是什么In 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 possible
Python 3.0-December 3,2008
Python 3.1-June 27,2009
Python 3.2-February 20,2011
redis的常用命令有哪些Python 3.3-September 29,2012
Python 3.4-March 16,2014
Python 3.5-September 13,2015
三.Python2与3的区别
In summary:Python 2.x is legacy,Pythn 3.x is the present and future of the language
Python 3.0 was released in 2008.The final 2.x branch will see no new major releases after that 3.x is
Under active development and has already seen over five years of stale 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 only
available by default in
Guido van Rossum (the original ceator of the Python language) decide to clean up Python 2.x proper
ly,with less regard for backwards compatibility than is the case fot 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).
Python 2与3的详细区别这⾥就不多讲了,可以去Python官⽹了解详细的改动。
四.Python的语⾔类型
讲到优缺点,先要讲讲Python属于什么类型的语⾔了。⾸先来了解⼀下语⾔的类型。
1.低级语⾔与⾼级语⾔
最初的计算机程序都是⽤0和1的序列表⽰的,程序员直接使⽤的是机器指令,⽆需翻译,从纸袋打孔输⼊即可执⾏得到的结果。后来为了⽅便记忆,就将⽤0、1序列表⽰机器指令都⽤符号助记,这些与机器指令⼀⼀对应的助记就成了汇编指令,从⽽诞⽣了汇编语⾔。⽆论是机器指令还是汇编语⾔都是
⾯向想向机器的,统称低级语⾔。因为是针对特定机器的机器指令的助记符,所以汇编语⾔是⽆法独⽴于机器(特定的CPU体系结构)的。但汇编语⾔也是要经过翻译成机器指令才能执⾏的,所以也有将运⾏在⼀种机器上的汇编语⾔翻译成运⾏在另⼀种机器上的机器指令的⽅法,那就是交叉汇编技术。
⾼级语⾔是从⼈类的逻辑思维⾓度出发的计算机语⾔,抽象程度⼤⼤提⾼,需要经过编译成特定机器上的⽬标代码才能执⾏,⼀条⾼级语⾔的语句往往需要若⼲条机器指令来完成。⾼级语⾔独⽴于机器的特性是靠编译器为不同机器盛承⼀种中间表达,然后拿到不同的机器和系统上去执⾏,这种情况通常⼜需要⽀撑环境,⽐如解释器或虚拟机的⽀持,Java程序编译成bytecode,再由不同平台上的虚拟机执⾏就是很好的例⼦。所以,说⾼级语⾔不依赖于机器,是指在不同的机器或平台上⾼级语⾔的程序本⾝不变,⽽通过编译器编译得到的⽬标代码去适应不同的机器。从这个意义上来说,通过交叉汇编,⼀些汇编程序也可以获得不同机器之间的可移植性,但这种途径 获得的移植性远远不如⾼级语⾔来的⽅便和实⽤性⼤。
2.编译与解释
编译是将源程序翻译成可执⾏的⽬标代码,翻译与执⾏是分开的;⽽解释是对源程序的翻译与执⾏⼀次性完成,不⽣成可存储的⽬标代码。这只是表象,⼆者背后的最⼤区别是:对解释执⾏⽽⾔,程序
运⾏时可以动态改变变量的类型、对程序进⾏修改以及在程序中插⼊良好的调试诊断信息等,⽽将解释器移植到不同的系统上,则程序不⽤改动就可以在移植了解释器的系统上运⾏。同时解释器也有很⼤的缺点,⽐如执⾏效率低,占⽤空间⼤,因为不仅要给⽤户程序分配空间,解释器本⾝也占⽤了宝贵的系统资源。
编译器是把源程序的每⼀语句都编译成机器语⾔,并保存成⼆进制⽂件,这样运⾏时计算机可以直接以机器语⾔来运⾏此程序,速度很快;⽽解释器则是只在执⾏程序时,才⼀条⼀条的解释成机器语⾔给计算机来执⾏,所以运⾏速度是不如编译后的程序运⾏的快的。
3.编译型和解释型
我们先看看编译型,其实它和汇编语⾔是⼀样的:也是有⼀个负责翻译的程序来对我们的源代码进⾏转换,盛承相对应的可执⾏代码。这个过程说得专业⼀点,就称为编译(Compile),⽽负责编译的程序⾃然就称为编译器(Compiler)。如果我们写的程序代码都包含在⼀个源⽂件中,作为不同的模块来组织。这是编译各个⽂件时就会⽣成⽬标⽂件(Object file)⽽不是前⾯说的可执⾏⽂件。⼀般⼀个源⽂件的编译都会对应⼀个⽬标⽂件。这些⽬标⽂件⾥的内容基本上已经是可执⾏代码了,但由于只是整个项⽬的⼀部分,所以我们还不能直接运⾏。待所有的源⽂件的编译都⼤功告成,我们就可以最后把这些半成品的⽬标⽂件“打包”成⼀个可执⾏⽂件了,这个⼯作由另⼀个程序负责完成,由于此过程
好像是把包含可执⾏代码的⽬标⽂件连接装配起来,所以⼜称为链接(Link),⽽负责链接的程序就叫链接程序(Linker)。链接程序除了链接⽬标⽂件外,可能还有各种资源,像图标⽂件啊、声⾳⽂件啊什么的,还要负责去除⽬标⽂件之间的冗余重复代码,等等。链接完成之后,⼀般就可以得到我们想要的可执⾏⽂件了。
“编译”和“解释”的确都有“翻译”意思,他们的区别则在于翻译的时机安排不⼤⼀样。打个⽐⽅:假如你打算阅读⼀本外⽂书,⽽你不知道这门外语,那么你可以⼀名翻译,给他⾜够的时间让他从头到尾把整本书翻译好,然后把书的母语版交给你阅读;或者,你也⽴刻让这名翻译辅助你阅读,让他⼀句⼀句给你翻译,如果你想往回看某个章节,他也得重新给你翻译。
两种⽅式,前者就相当于我们刚才所说的编译型:⼀次把所有的代码转换成机器语⾔,然后写成可执⾏⽂件;⽽或者就相当与我们要说的解释型:在程序运⾏的前⼀刻,还只有源程序⽽没有可执⾏程序;⽽程序每执⾏到源程序的某⼀指令,则会有⼀个称之为解释程序的外壳程序将源代码转换成⼆进制代码以供执⾏,总⾔之,就是不断地解释、执⾏、解释、执⾏、......所以,解释型程序是离不开解释程序的。像早期的BASIC就是⼀门经典的解释型语⾔,要执⾏BASIC程序,就得进⼊BASIC环境,然后才能加载程序源⽂件、运⾏。解释型程序中,由于程序员总是以源代码的形式出现,因此只要有相应的解释器,移植⼏乎不成问题。编译型程序虽然源代码也可以⼀直,但前提是必须针对不同的系统分别进⾏编译,对于复杂的⼯程来说,的确是⼀件不⼩的时间消耗,况且很可能⼀些细节的地⽅还是
要修改源代码。⽽且,解释型程序省却了编译的步骤,修改调试也⾮常⽅便,编辑完毕之后即可⽴即运⾏,不必像编译型程序⼀样每次进⾏⼩⼩改动都要耐⼼等待漫长的这样的编译链接过程。不过凡事有利有弊,由于解释型程序是将编译的过程放到执⾏过程中,这就决定了解释型程序注定要⽐编译型慢上⼀⼤截,像⼏百倍的速度差距也是不⾜为奇的。
4.动态语⾔和静态语⾔
通常我们所说的动态语⾔、静态语⾔是指动态类型语⾔和静态类型语⾔。
(1)动态类型语⾔:动态类型语⾔是指在运⾏期间才去做数据类型检查的语⾔,也就是说,在⽤动态类型的语⾔编程时,永远也不⽤给任何变量指定数据类型,该语⾔会在你第⼀次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是⼀种典型的动态语⾔,其他的各种脚本语⾔如VBScript也多少属于动态类型语⾔。
(2)静态类型语⾔:静态类型语⾔与动态类型语⾔刚好相反,它的数据类型是在编译期间检查,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型的典型代表,其他的静态类型语⾔还有C#、JAVA等。
5.强类型定义语⾔和弱类型定义语⾔
(1)强类型定义语⾔:强制数据类型定义的语⾔。也就是说,⼀旦⼀个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例⼦:如果你定义了⼀个整型变量a,那么程序根本不可能将a当做字符串类型处理。强类型定义语⾔是类型安全的语⾔。
(2)弱类型定义语⾔:数据类型可以被忽略的语⾔。它与强类型定义语⾔相反,⼀个变量可以赋不同数据类型值。
强类型定义语⾔在速度上可能略逊⾊于弱类型定义语⾔,但是强类型定义语⾔带来的严谨性能够有效的避免许多错误。另外,“这门语⾔是不是动态语⾔”与“这门语⾔是否安全”之间是完全没有联系的!
例如:Python是动态语⾔,是强类型定义语⾔(类型安全的语⾔);VBScript是动态语⾔,是弱类型定义语⾔(类型不安全的语⾔);JAVA是静态语⾔,是强类型定义语⾔(类型安全的语⾔)。
通过上⾯这些介绍,我们可以得出,Python是⼀门动态解释性的强类型定义语⾔。那这些基因是成就了Python的哪些优缺点呢?我们继续往下看。
五.Python的优缺点
优点:
Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者Python,不但⼊门容易,⽽且将来深⼊下去,可以编写那些⾮常⾮常复杂的程序。
开发效率⾮常⾼,Python有⾮常强⼤的第三⽅库,基本上你想通过计算机实现任何功能,Python官⽅库⾥都有相应的模块进⾏⽀持,直接下载调⽤后,在基础库的基础上再进⾏开发,⼤⼤降低开发周期,避免重复造轮⼦。
⾼级语⾔:当你⽤Python语⾔编写程序的时候,你⽆需考虑诸如如何管理你的程序使⽤的内存⼀类的底层细节
可移植性:由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够⼯作在不同平台)。如果你⼩⼼地避免使⽤依赖于系统的特性,那么你的所有Python程序⽆需修改就⼏乎可以在市场上所有的系统平台上运⾏
可扩展性:如果你需要你的⼀段关键代码运⾏得更快或者希望某些算法不公开,你可以把你的部分程序⽤C或C++编写 ,然后在你的Python程序中使⽤它们。
可嵌⼊性:你可以把Pyhton嵌⼊你的C/C++程序,从⽽向你的程序⽤户提供脚本功能。
缺点:
oracle中文版安装教程速度慢,Python的运⾏速度相⽐C语⾔确实慢很多,跟JAVA相⽐也要慢⼀些,因此这也是很多所谓的⼤⽜不屑与使⽤Python的主要原因,但其实这⾥所指的运⾏速度慢在⼤多数情况下⽤户是⽆法直接感知到的,必须借助测试⼯具才能体现出来,⽐如你⽤C运⾏⼀个程序花了0.1s,⽤python是0.01s,这样C语⾔直接⽐Python快了10s,算是⾮常夸张了,但是你是⽆法直接通过⾁眼感知的,因为⼀个正常⼈所能感知的时间最⼩单位是0.15-0.4s左右。其实在⼤多数情况下Python已经完全可以满⾜你对程序速度的要求,除⾮你要写对速度要求极⾼的搜索引擎,这种情况下,当然还是建议你⽤C去实现的。
代码不能加密,因为Python是解释性语⾔,它们的源码都是以名⽂形式存放的,不过我不认为这算是⼀个缺点,如果你的项⽬要求源代码必须是加密的,那你⼀开始就不应该⽤Python来去实现。
线程不能利⽤多CPU问题,这是Python被⼈诟病最多的⼀个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语⾔解释器⽤于同步线程的⼯具,使得任何时刻仅有⼀个线程在执⾏,Python的线程是操作系统的原⽣线程。在Linux上为pthread,在Windows上为WIn thread,完全由操作系统调度线程的执⾏。⼀个Python解释器进程内有⼀条主线程,以及多⽤户程序的执⾏线程。即使在多核CPU平台上,由于GIL的存在,所以禁⽌多线程的并⾏执⾏。
易语言精简版任何⼀门语⾔都不是完美的,都有擅长和不擅长做的事情。
六.IDLE是什么?
IDLE是⼀个python shell,shell的意思就是“外壳”。基本上来说,就是⼀个通过键⼊⽂本与程序交互的途径,像我们windows的cmd窗⼝,linux的命令⾏,这些都是shell,利⽤他们就可以给操作系统下达命令,同样,我们通过IDLE这个shell与python进⾏互动。
BIF是什么?
BIF就是Built-in Functions,内置函数。为了⽅便程序员快速编写程序,提供了⾮常多的内置函数,我们直接调⽤即可。
dir(__builtins__) 查看内置函数
help(int) 了解括号内内置函数的作⽤
七.变量是什么?
变量名就想我们显⽰社会的名字,把⼀个值赋给⼀个名字时,他会存储在内存中,称之为变量(variable),在⼤多数语⾔中都把这种⾏为成为“给变量赋值”,或“把值存储在变量中”不过python与⼤多数其他计算机语⾔的做法稍有不同,他不是吧值存储在变量中,⽽更像是把名字贴在值上⾯。
变量使⽤注意事项:
1.使⽤变量前先赋值
2.变量名可以包含字母、数字、下划线,但变量名不能以数字开头。
3.字母可以是⼤写或者⼩写,但⼤⼩写不同,也就是说simple和simplE是不同的两个变量。
4.等号(=)是赋值的意思,左边是名字,右边是值,不可颠倒,例如name = ‘海绵宝宝’
5.变量命名理论可以去任何合法的名字,但是作为⼀个优秀的程序员,要给变量取⼀个专业的名字。
我认为在python中⾮常重要的⼀点
缩进是python的灵魂,缩进的错误使⽤影响代码结果。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论