Python学习笔记系列之000:Python简介

Posted salmond

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习笔记系列之000:Python简介相关的知识,希望对你有一定的参考价值。

一、Python是什么?

Python时候全球4大最流行的编程语言之一,因为其语法简洁、功能强大,目前已广泛应用于人工智能、云计算开发、大数据开发、数据分析、科学运算、网站开发、爬虫、自动化运维、自动化测试、游戏开发金融分析等领域。

 

二、Python的优点

1. Python的定位是“优雅”、“明确”、“简单”。

2. 开发效率非常高。

Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子。包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。记住,只要安装了Python,所有这些功能都是可用的。这被称作Python“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。

3. 高级语言。

当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节。

4. 可移植性。

由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC、Symbian以及Google基于linux开发的Android平台!

5. 可扩展性。

如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。

6. 可嵌入性。

你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。

7.解释性

这一点需要一些解释。一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。当你运行你的程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python更加简单。由于你只需要把你的Python程序拷贝到另外一台计算机上,它就可以工作了,这也使得你的Python程序更加易于移植。

8.规范的代码

Python采用强制缩进的方式使得代码具有极佳的可读性。

9.Python既有动态脚本的特性,又有面向对象的特性。

Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。

10.易于上手,难于精通。

 

三、Python的缺点

1. Python

  Python相对C、C++、Java语言确实慢很多,但其实这里所指的速度慢在大多数时候我们是无法感知的,比如说,是用C语言程序开发了一个程序,执行需要花0.01秒,使用Python实现同样功能的程序,需要花0.1秒的时间,虽然相差10倍,但是我们基本是感知不到的。更多的时候,程序慢是程序员实现功能方式导致的。其实在大多数情况下Python已经完全可以满足你对程序速度的要求,除非你要写对速度要求极高的搜索引擎等,这种情况下,当然还是建议你用C去实现的。

2. 代码不能加密

  因为Python是解释性语言,它的源码都是以明文形式存放的,不过我不认为这算是一个缺点,如果你的项目要求源代码必须是加密的,那你一开始就不应该用Python去实现。

3. 多线程支持不好

    线程不能利用多CPU问题,这是Python被人诟病最多的一个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。关于这个问题的折衷解决方法,我们在以后线程和进程章节里再进行详细探讨。

 

当然,Python还有一些其它的小缺点,在这就不一一列举了。任何一门语言都不是完美的,都有擅长和不擅长做的事情,不要拿一个语言的劣势去跟另一个语言的优势来去比较,语言只是一个工具,是实现程序设计师思想的工具,就像我们之前中学学几何时,有的时候需要要圆规,有的时候需要用三角尺一样,拿相应的工具去做它最擅长的事才是正确的选择。

 

四、Python擅长的领域

Python几乎是万能的。

1.web开发

Django、pyramid、Tornado、Bottle、Flask、WebPy。

Python经常被用于Web开发。比如,通过mod_wsgi模块,Apache可以运行用Python编写的Web程序。Python定义了WSGI标准应用接口来协调Http服务器与基于Python的Web程序之间的通信。

全球第5大web框架的Django框架;

支持异步高并发的Tornado框架;

短小精悍的Flask、Bottle。

2.网络编程

Twisted、Requests、Scrapy、Paramiko。

支持高并发的Twisted框架;py3引入的asyncio是异步编程变得简单。

Python对于各种网络协议的支持很完善,因此经常被用于编写服务器软件、网络爬虫。第三方库Twisted支持异步网络编程和多数标准的网络协议(包含客户端和服务器),并且提供了多种工具,被广泛用于编写高性能的服务器软件。

3.爬虫开发

爬虫领域,Python几乎是霸主地位。Scrapy、Request、BeautifuSoap、Urllib等。

4.人工智能

各种人工智能算法都基于Python编写,尤其PyTorch之后,Python作为AI时代头牌语言的位置基本确立。

5.金融分析

Python是金融分析、量化交易领域里用的最多的语言。

原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测。

6.科学计算

NumPy、SciPy、Matplotilb、Enthought librarys、Pandas、Ipython。

随着NumPy等众多程序库的开发,Python越来越适合做科学计算,绘制高质量的2D和3D图像。和科学计算领域最流行的商业软件Matlab相比。Python是一门通用的程序设计语言,比Matlab所采用的脚本语言的应用范围更广泛。

7.游戏开发

很多游戏使用C++编写图形显示等高性能模块,而使用Python或者Lua编写游戏的逻辑、服务器。相较于Python,Lua的功能更简单、体积更小;而Python则支持更多的特性和数据类型。相比Lua or C++,Python比Lua有更高阶的抽象能力,可以用更少的代码描述游戏业务逻辑,与Lua相比,Python更适合作为一种Host语言,即程序的入口点是在Python那一端比较好,然后用C/C++在非常必要的时候写一些扩展。Python非常适合编写1万行以上的项目,而且能够很好地把网游项目的规模控制在10万行代码以内。

8.GUI图形开发

wxPython、PyQT、Kivy、Tkinter、PySide、PyGTK

可以使用Tkinter/PyQT等框架开发各种桌面软件。

9.自动化运维

OpenStack(云计算)、SaltStack(自动化/主机管理)、Ansible(自动化/主机管理)、腾讯蓝鲸。

在很多操作系统里,Python是标准的系统组件。 大多数Linux发行版以及NetBSD、OpenBSD和Mac OS X都集成了Python,可以在终端下直接运行Python。有一些Linux发行版的安装器使用Python语言编写,比如Ubuntu的Ubiquity安装器,Red Hat Linux和Fedora的Anaconda安装器。Gentoo Linux使用Python来编写它的Portage包管理系统。Python标准库包含了多个调用操作系统功能的库。

 通过pywin32这个第三方软件 包,Python能够访问Windows的COM服务及其它Windows API。

使用IronPython,Python程序能够直接调用.Net Framework。

一般说来,Python编写的系统管理脚本在可读性、性能、代码重用度、扩展性几方面都优于普通的shell脚本。

10. 云计算

云计算最火的语言, 典型应用OpenStack。

 

注:以上为本人学习Python时所记笔记,因参考资料较多,具体来源已不清楚。如有侵权,请私信告知。

 

 

以上是关于Python学习笔记系列之000:Python简介的主要内容,如果未能解决你的问题,请参考以下文章

Python学习笔记系列之002:变量 注释 输入 输出

《Python爬虫学习系列教程》学习笔记

Python学习笔记——列表简介

Python学习笔记

Python学习笔记之语言基础与流程控制

Python数据分析笔记系列之二:Python语法基础,IPython和Jupyter Notebooks