Python简介
Python官方的介绍是:
Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程。Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语言,特别适用于快速的应用程序开发。
Python是一种解释型语言、交互式语言、面向对象语言
- 创始人:吉多·范罗苏姆(Guido van Rossum),荷兰人。人称“龟叔”
- 名称来源:龟叔是BBC电视剧——蒙提·派森的飞行马戏团(Monty Python's Flying Circus)的爱好者
- 创造初衷:龟叔想设计一种基于C和shell之间、功能全面、易学易用、可拓展的语言。
- 设计哲学:“优雅”、“明确”、“简单”
- 开发哲学:“用一种方法,最好是只有一种方法来做一件事”
- Python格言:
>>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!
Python发展历史
- 1989年圣诞:龟叔开始写Python语言的编译器
- 1991年:第一个Python编译器诞生。他用C语言实现,并能调用C语言的库文件。从一出生,Python就已经具有了:类、函数、异常处理、包含表和词典在内的核心数据类型,以及以模块为基础的拓展系统
- Python1.0--1994年1月:增加了lambda、map、filter和reduce
- zope1--1999年:Python第一个web框架诞生
- Python2.0--2000年10:增加了内存回收机制,构成了现在Python语言框架的基础
- Python2.4--2004年11:Python最流行的web框架Django诞生
- Python2.5--2006年9月
- Python2.6--2008年10月
- Python3.0--2008年12月:Python2.0版本的有许多重复的功能模块、有些代码也不够简洁。Python3.0的升级秉承着去繁从简,合并重复功能。Python3.0版本不兼容2.0
- Python3.1--2009年6月
- Python2.7--2010年7月
- Python3.2--2011年11
- Python3.3--2012年9月
- Python3.4--2014年3月
- Python3.5--2015年9月
- Python官方在2014年11月宣布:Python2.7只会被支持到2020年,不会再有2.8版本,所有人都要尽快的迁移到Python3版本上。
Python的优缺点
优点
- 简单、易学
Python具有相对较少的关键字、结构简单和一个明确定义的语法,学习起来更加简单。它使你能够专注于解决问题本身而不是去搞明白语言本身。
- 免费、开源
Python是FLOSS(自由/开放源码软件)之一。你可以自由的发布这个软件的拷贝、阅读它的源代码、对它进行改动、把它的一部分用于新的软件中。它由一群希望看到一个更优秀的Python的人人创造并改进着!
- 高层语言
当你使用Python编写程序时,你不需要去担心系统底层的一些细节,比如你的程序管理内存的使用等。
- 可移植性
由于Python是免费开源的,所以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!
- 解释性
一般的编译型语言写的程序在程序执行之前,需要一个专门的编译过程,通过编译系统把高级语言翻译成机器语言,把源高级程序编译成机器语言文件。以后就可以直接运行而不需要编译了,因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率较高。Python程序在运行的时候不需要一个专门的编译过程,你只需要从Python源代码直接运行程序。在计算机内部,Python解释器会把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。由于你不需要考虑如何编译程序,如何确保链接转载正确的库等等,所以这使得Python更加简单。这使得Python程序更加易于移植。
- 面向对象
Python即支持面向过程的编程也支持面向对象的编程。在面向过程 的语言中程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象 的语言中,程序是由数据和功能组合而成的对象构建起来的。Python以一种非常强大而又简单的方式实现面向对象的编程。
- 可拓展
如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
- 可嵌入
你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。
- 丰富的库
Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。
缺点
- 运行速度慢
和C程序相比非常慢,因为Python是解释型语言,程序代码在执行时需要一行一行的翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序时运行前直接编译成CPU能执行的代码,所以非常快。如果有速度需求,可以用C++改写关键部分。但是大量的应用程序不需要那么快的运行速度,因为用户根本感觉不出来。例如开发一个网络下载程序,C程序运行的时间为0.001秒,而Python需要0.1秒。但是由于网络原因,需要等待1秒,你认为用户能感觉到1.0001秒和1.1秒的区别么。
- 代码不能加密
如果要发布程序,编译型语言只需要把发布编译后的机器码发布出去,而解释型语言必须把源码发布出去。
Python应用
- Web编程:Django、Pyramid、Bottle、Tornado、Flask、web2py
- GUI开发:wxPython、tkinter、PyGtk、PyGObject、PyQt
- 科学运算:SciPy、Pandas、IPython
- 软件开发:Buildbot、Trac、Roundup
- 系统管理:Ansible、Saltstack、OpenStack
使用的Python的公司有:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。互联网公司广泛使用Python来做的事有:自动化运维、自动化测试、大数据分析、爬虫和web。
最新的TIOBE排行榜
Python种类
- Cpython
Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。
- Jyhton
Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。
- IronPython
Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)
- PyPy(特殊)
Python实现的Python,将Python的字节码字节码再编译成机器码。
- RubyPython、Brython ...
以上除PyPy之外,其他的Python的对应关系和执行流程如下:
PyPy,在Python的基础上对Python的字节码进一步处理,从而提升执行速度!
Python和其他语言的优势对比
Python & C
- Python 跨平台,Linux all,S60,Windows,OSX,FreeBSD,这点是C#无法相比的;
- Python开源,绝大多数资源都是开源的,C#则相反;
- Python是解释型语言,C#需要编译(如asp.net);
Python & Java
- 开源方向来说,Python更有优势,Java(虽然最近Java已经开源了,但有一些开源协议上面的版权受限);
- Python更简洁,Java过于庞大复杂(如Web服务器)
- 如 Python & C# 的第三点
Python & C++,Perl
- Python更容易学习,语法简单,语意化,易懂;
Python & PHP
- Python的OO更加完善
- Python可以开发桌面应用程序
安装Python
windows
1、下载安装包
根据自己的需求和系统版本下载相应的版本。https://www.python.org/downloads
2、安装(笔者装的是3.5.1)
linux
#下载软件包 wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tar.xz #解压软件包 tar xvf Python-3.5.1.tar.xz #进入文件夹 cd Python-3.5.1 #检测安装平台并指定安装路径 ./configure --prefix=/usr/local/python3.5.1 #编译 make #开始安装 make install #进入指定的安装目录,查看相关的文件 cd /usr/local/python3.5.1/ ls #查看安装后的版本 /usr/local/python3.5.1/bin/python3.5 -V Python 3.5.1 #创建软链,使可以在任何目录启动Python3.5.1 ln -s /usr/local/python3.5.1/bin/python3.5 /usr/bin/python3.5
Python IDE
1、Eclipse with PyDev
Eclipse+PyDev插件,很适合开发Python Web应用,其特征包括自动代码完成、语法高亮、代码分析、调试器、以及内置的交互浏览器。
2、Komodo Edit
http://komodoide.com/komodo-edit/
Komodo Edit是一个免费的、开源的、专业的Python IDE,其特征是非菜单的操作方式,开发高效。
3、Vim
http://www.vim.org/download.php
Vim是一个简洁、高效的工具,也适合做Python开发。
4、Sublime Text
SublimeText也是适合Python开发的IDE工具,SublimeText虽然仅仅是一个编辑器,但是它有丰富的插件,使得对Python开发的支持非常到位。
5、Pycharm(笔者正在使用的工具)
http://www.jetbrains.com/pycharm/
Pycharm是一个跨平台的Python开发工具,是JetBrains公司的产品。其特征包括:自动代码完成、集成的Python调试器、括号自动匹配、代码折叠。
Pycharm支持Windows、MacOS以及Linux等系统,而且可以远程开发、调试、运行程序。
6、Emacs
http://www.gnu.org/software/emacs/
Emacs是一个可扩展的文本编辑器,同样支持Python开发。Emacs本身以Lisp解释器作为其核心,而且包含了大量的扩展。
7、Wing
Wing是一个Python语言的超强IDE,适合做交互式的Python开发。Wing IDE同样支持自动代码完成、代码错误检查、开发技巧提示等,而且Wing IDE也支持多种操作系统,包括Windows、Linux和Mac OS X。
8、Pyscripter
https://code.google.com/p/pyscripter/
Pyscriptor是一个开源的Python集成开发环境,很富有竞争力,同样有诸如代码自动完成、语法检查、视图分割文件编辑等功能。
第一个Python程序
用程序文件来执行
//查看一下python版本 [root@cloud ~]# python -V Python 2.7.5 //编辑一个文件hello.py [root@cloud ~]# vim hello.py #!/usr/bin/env python print "Hello,world!" //用python执行文件 [root@cloud ~]# python hello.py Hello.World!
在hello.py文件中通过“#!/usr/bin/env python”指定hello.py由python解释器来执行
python内部执行过程如下:
交互式执行
//通过python这个linux命令进入解释器 [root@***** ~]# python3 Python 3.5.2 (default, Jul 11 2016, 23:25:32) [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linuxType "help", "copyright", "credits" or "license" for more information.
//执行程序内容 >>> print "Hello,world!" Hello,world! >>>