欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python自学简述与认识python

程序员文章站 2022-05-04 13:26:02
讲讲为什么要学Python? 我是一名大学生,在校期间有幸参加了大数据竞赛,然后知道有一门编程语言叫做Python,后来在校期间又去研究linux,发现云计算特别火,Openstack便是基于Python语言开发的,然后我就开始去尝试学习Python。 对于一个0基础的小白,我同样也走过了很多弯路, ......

讲讲为什么要学Python?

  我是一名大学生,在校期间有幸参加了大数据竞赛,然后知道有一门编程语言叫做Python,后来在校期间又去研究linux,发现云计算特别火,Openstack便是基于Python语言开发的,然后我就开始去尝试学习Python。

  对于一个0基础的小白,我同样也走过了很多弯路,这本书写的好,就看看这本书,其他人推荐那本书,我又去看了那本,到最后发现什么都没看,也没有学到;去闲鱼、淘宝上买视频,发现讲来讲去并没有多好,后来到了企业中, 就十分佩服那些会开发的,很喜欢那种一坐就是坐一整天的,那么具体是什么推动我一定要学python的呢?

  在我面试的时候是运维实习生,我以为会去接触到linux服务器,结果是去监控公司1000台服务器,当然,我并不会觉得监控就不好,直到了后来,也不知道自己怎么发展的,就变成了桌面运维,当时还是比较闲,到了后来就发现很烦,一点东西都没有学到,包括我的linux运维这一块,有人曾经和我说:在公司中,并不是你想去干什么就去干什么,而是公司让你干什么你就要去干什么。我也曾拿这句话安慰过自己,后来每天过的超级烦,实在是不想搞了,我是一名学生,学习这个习惯一直没有没落。

  现在规模稍微大一点的公司都会上云,那么传统的运维工程师将在几年之内就会饱满,那么该怎么办,python!python在云计算、自动化运维、数据分析这一块十分有优势,而我也是那种学习就是享受的人,python我必须要学会。

  我是一个十分有理想的人,我为我的以后3-5年做过仔细的职业规划,我很明确的知道自己想要什么,同时需要付出多大的努力,我也不想一直就这样碌碌无味,我不想!!!

  我相信:付出总有回报,时间稍纵即逝。

 

python与其他语言的区别

  • C/C++:学习成本高,学习周期长,偏系统底层,在开发硬件驱动、嵌入式、游戏引擎开发等领域有广泛的应用;
  • Java:目前使用最广泛的编程语言,第一个跨平台运行的语言,在大型ERP软件开发、安卓app开发、网站开发领域使用广泛;
  • PHP:使用最广泛的WEB语言,非常适合中小型网站开发,学习成本较低,开发效率高;
  • Python:使用领域几乎和Java一样广泛,但开发效率要高于Java,且学习成本低,在科学计算、数据分析、网站开发、爬虫开发、云计算、自动化运维、自动化测试等领域优势明显;

关于Java跨平台

  和C++相比,很重要的一点就是:C++编译生成的是纯二进制的机器指令, 而Java编译生成的是非纯二进制的字节码。而这种Unicode字节码是不依赖特定的计算机硬件架构而存在的--这就意味着只要有JVM环境,你的字节码就可以在任何平台上运行。其次,Java字节码的二进制数据以固定的格式进行存储和传输,消除了字节顺序的干扰。

  Java为什么能跨平台?因为字节码实在虚拟机上运行的,而不是编译器,是因为JVM能跨平台安装,所以相应Java字节码便可以在任何平台上运行。只要JVM自身的代码能在相应平台上运行,即JVM可行,则Java的程序员就可以不用考虑所在的程序要在哪里运行,反正都是在虚拟机上运行,然后变成相应的机器语言,而这个转变并不是程序员应该关心的。

 

python生态圈

  • WEB开发----最火的Python web框架Django,支持异步高并发的Tornado框架,短小精悍的Flask\bottle,Django官方的标语把Django定义为the framework for perfectionist with deadlines(大意是一个为了完全主义者开发的高效率web框架);
  • 人工智能----谁会成为AI和大数据时代的第一开发语言?这本已是一个不需要争论的问题。如果说三年前Matlab、Scala、R、Java和Pon还各有机会,局面尚还不清楚,那么三年之后,趋势就已经很明显了,特别是facebook开源了Pytorch之后,Python作为AI时代头牌语言的位置基本确立,未来的悬念仅仅是谁能坐稳第二把交椅;
  • 云计算----目前最火最知名的云计算框架Openstack,Python现在的火,很大一部分是因为云计算;
  • 金融量化分析、自动化交易----到目前,Python是金融分析,量化交易领域里用的最多的语言;
  • 爬虫----爬虫领域,Python几乎是霸主,Scrapy、Request、BeautifuSoap、urllib等,想爬啥就爬啥;
  • 自动化运维----运维人员必须要会的语言,它的名字叫Python;
  • 科学计算----97年开始,NASA就在大量使用Python在进行各种复杂的科学计算,随着NumPy、SciPy、Mailb等众多程序库的开发,使得Python越来越适合做科学计算、绘制高质量2D和3D图像;
  • 游戏开发----在网络游戏开发中,Python也有很多应用,Python非常适合编写1w行以上的项目,而且能够很好的把网游项目的规模控制在10w行以内,知名的游戏《文明》就是用Python编写的;

 

编程语言进化

机器语言

由于计算机内部只能接受二进制代码,因此,用二进制代码0和1描述的指令称为及机器指令,全部机器指令的集合构成计算机的机器语言。

机器语言属于低级语言。

编出的程序全是些0和1的指令代码,直观性差,还容易出错,除了计算机生产厂家的专业人员外,绝大多数的程序员已经不再去学习机器语言了。

机器语言是微处理器理解和使用的,尽管机器语言好像是很复杂,然而它是有规律的。

存在着多至100000种机器语言的指令。这意味着不能把这些种类全部列出来。

汇编语言

汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。

它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序的每一句指令只能对应时间操作过程中的一个很细微的动作。例如移动、自增,因此汇编程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识。

但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言能够实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。

高级语言

高级语言是大多数编程者的选择。和汇编语言相比,它不但将许多的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。

高级语言主要是相对于汇编语言而言,它并不是特殊某一种具体的语言,而是包含了很多编程语言,例如:C/C++,JAVA,PHP,Python都属于高级语言。

相比机器和汇编语言,高级语言对开发人员更友好,在开发效率上大大提高!

 

高级语言分类

高级语言所编制的程序不能直接被计算机识别,必须经过转换才可以执行。

按照转换方式可以将他们分为两类

  • 编译型
  • 解释型

编译型

编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行(编译后生成的可执行文件,是cpu可以理解的2进制的机器码组成的),使用比较方便、效率较高。但应用程序一旦需要修改,就必须先修改源代码,再重新编译新的目标文件才能执行,只有目标文件而没有源代码,修改很不方便。

编译后程序运行时不需要重新编译,直接使用编译的结果就可以了。程序执行效率高,依赖编译器,跨平台性差些,如C,C++等。

解释型

执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器(想运行,就必须要装上解释器,就像跟老外说话,必须要有翻译在场),但这种方式比较灵活,可以动态的调整,修改应用程序。如python、PHP、Java等。

编译型VS解释型

编译型

  • 把源代码编译成机器语言的可执行程序;
  • 执行 可执行程序文件;
优点
  • 执行速度快,不再需要源代码,不依赖语言环境,因为执行的是机器码文件;
  • 执行速度快,因为程序代码已经翻译成了是计算机可以直接理解的机器语言;
缺点
  • 每次修改了源代码,需要重新编译,生成机器码文件;
  • 跨平台性不好,不同操作系统,调用底层的机器指令不同,需为不同平台生成不同的机器码文件;

解释型

  • 用户调用解释器,执行源代码文件;
  • 解释器将源代码文件边解释成机器指令,边交给cpu处理;

优点

  • 天生跨平台,因为解释器已经做好了对不同平台的交互处理,用户写的源代码不需要考虑平台差异性,可谓,一份源代码,所有平台都可直接执行;
  • 随时修改,立刻见效,改完源代码后,直接运行看效果;

缺点

  • 运行效率低,所有的代码均需经过解释器边解释边执行,速度比编译型慢很多
  • 代码是明文

 

小节

机器语言

优点是最底层,速度最快,缺点是最复杂,开发效率最低

汇编语言

优点是比较底层,速度最快,缺点是复杂,开发效率最低

高级语言

编译型语言执行速度快,不依赖语言环境运行,跨平台差

解释型跨平台好,一份代码,到处使用,缺点是执行速度慢,依赖解释器运行

 

Python解释器种类

CPython

当我们从Python官网下载并安装好了Python 2.7后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。

CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行的。

 

IPython

IPython是基于CPython之上的一个交互式解释器,也就是说,IPython知识在交互方式上有所增强,但是执行python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。

 

PyPy

PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用了JIT技术,对Python代码进行动态编译,所以可以显著提高Python代码的执行速度。

 

JPython

JPython是运行在JAVA平台上的python解释器,可以直接把Python代码编译成Java字节码执行。

 

IronPython

IronPython和JPython类似,只不过IronPython是运行在微软.Net平台上的Python编辑器,可以直接把Python代码编译成.Net的字节码。