python基础教程

Python是什么?

    Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。 html

    若是您想要更快、更系统地学会jQuery,您最好采用边学边练(Python微课)的学习模式。 python

    Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议 。Python语法简洁清晰,特点之一是强制用空白符(white space)做为语句缩进。Python具备丰富和强大的库。它常被昵称为胶水语言,可以把用其余语言制做的各类模块(尤为是C/C++)很轻松地联结在一块儿。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),而后对其中有特别要求的部分,用更合适的语言改写,好比3D游戏中的图形渲染模块,性能要求特别高,就能够用C/C++重写,然后封装为Python能够调用的扩展类库。须要注意的是在您使用扩展类库时可能须要考虑平台问题,某些可能不提供跨平台的实现。 linux

Python编码风格

    Python在设计上坚持了清晰划一的风格,这使得Python成为一门易读、易维护,而且被大量用户所欢迎的、用途普遍的语言。 android

设计者开发时总的指导思想是,对于一个特定的问题,只要有一种最好的方法来解决就行了。这在由Tim Peters写的Python格言(称为The Zen of Python)里面表述为:There should be one-- and preferably only one --obvious way to do it. 这正好和Perl语言(另外一种功能相似的高级动态语言)的中心思想TMTOWTDI(There's More Than One Way To Do It)彻底相反。 程序员

Python的做者有意的设计限制性很强的语法,使得很差的编程习惯(例如if语句的下一行不向右缩进)都不能经过编译。其中很重要的一项就是Python的缩进规则。 web

    一个和其余大多数语言(如C)的区别就是,一个模块的界限,彻底是由每行的首字符在这一行的位置来决定的(而C语言是用一对花括号{}来明确的定出模块的边界的,与字符的位置毫无关系)。这一点曾经引发过争议。由于自从C这类的语言诞生后,语言的语法含义与字符的排列方式分离开来,曾经被认为是一种程序语言的进步。不过不能否认的是,经过强制程序员们缩进(包括if,for和函数定义等全部须要使用模块的地方),Python确实使得程序更加清晰和美观。 正则表达式

设计定位

    Python的设计哲学是“优雅”、“明确”、“简单”。所以,Perl语言中“老是有多种方法来作同一件事”的理念在Python开发者中一般是难以忍受的。Python开发者的哲学是“用一种方法,最好是只有一种方法来作一件事”。在设计Python语言时,若是面临多种选择,Python开发者通常会拒绝花俏的语法,而选择明确的没有或者不多有歧义的语法。因为这种设计观念的差别,Python源代码一般被认为比Perl具有更好的可读性,而且可以支撑大规模的软件开发。这些准则被称为Python格言。在Python解释器内运行import this能够得到完整的列表。 算法

    Python开发人员尽可能避开不成熟或者不重要的优化。一些针对非重要部位的加快运行速度的补丁一般不会被合并到Python内。因此不少人认为Python很慢。不过,根据二八定律,大多数程序对速度要求不高。在某些对运行速度要求很高的状况,Python设计师倾向于使用JIT技术,或者用使用C/C++语言改写这部分程序。可用的JIT技术是PyPy。 sql

    Python是彻底面向对象的语言。函数、模块、数字、字符串都是对象。而且彻底支持继承、重载、派生、多继承,有益于加强源代码的复用性。Python支持重载运算符和动态类型。相对于Lisp这种传统的函数式编程语言,Python对函数式设计只提供了有限的支持。有两个标准库(functools, itertools)提供了Haskell和Standard ML中久经考验的函数式程序设计工具。 shell

    虽然Python可能被粗略地分类为“脚本语言”(script language),但实际上一些大规模软件开发计划例如Zope、Mnet及BitTorrent,Google也普遍地使用它。Python的支持者较喜欢称它为一种高级动态编程语言,缘由是“脚本语言”泛指仅做简单程序设计任务的语言,如shellscript、VBScript等只能处理简单任务的编程语言,并不能与Python相提并论。

    Python自己被设计为可扩充的。并不是全部的特性和功能都集成到语言核心。Python提供了丰富的API和工具,以便程序员可以轻松地使用C语言、C++、Cython来编写扩充模块。Python编译器自己也能够被集成到其它须要脚本语言的程序内。所以,不少人还把Python做为一种“胶水语言”(glue language)使用。使用Python将其余语言编写的程序进行集成和封装。在Google内部的不少项目,例如Google Engine使用C++编写性能要求极高的部分,而后用Python或Java/Go调用相应的模块。《Python技术手册》的做者马特利(Alex Martelli)说:“这很难讲,不过,2004 年,Python 已在Google 内部使用,Google 召募许多 Python 高手,但在这以前就已决定使用Python,他们的目的是 Python where we can, C++ where we must,在操控硬件的场合使用 C++,在快速开发时候使用 Python。”

执行

    Python在执行时,首先会将.py文件中的源代码编译成Python的byte code(字节码),而后再由Python Virtual Machine(Python虚拟机)来执行这些编译好的byte code。这种机制的基本思想跟Java,.NET是一致的。然而,Python Virtual Machine与Java或.NET的Virtual Machine不一样的是,Python的Virtual Machine是一种更高级的Virtual Machine。这里的高级并非一般意义上的高级,不是说Python的Virtual Machine比Java或.NET的功能更强大,而是说和Java 或.NET相比,Python的Virtual Machine距离真实机器的距离更远。或者能够这么说,Python的Virtual Machine是一种抽象层次更高的Virtual Machine。

    基于C的Python编译出的字节码文件,一般是.pyc格式。

    除此以外,Python还能够以交互模式运行,好比主流操做系统Unix/Linux、Mac、Windows均可以直接在命令模式下直接运行Python交互环境。直接下达操做指令便可实现交互操做。

Python优势

    1.简单:Python是一种表明简单主义思想的语言。阅读一个良好的Python程序就感受像是在读英语同样。它使你可以专一于解决问题而不是去搞明白语言自己。

    2.易学:Python极其容易上手,由于Python有极其简单的说明文档[5]  。

    3.速度快:Python 的底层是用 C 语言写的,不少标准库和第三方库也都是用 C 写的,运行速度很是快。

    4.免费、开源:Python是FLOSS(自由/开放源码软件)之一。使用者能够自由地发布这个软件的拷贝、阅读它的源代码、对它作改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。

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

    6.可移植性:因为它的开源本质,Python已经被移植在许多平台上(通过改动使它可以工做在不一样平台上)。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/二、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平台。

    7.解释性:一个用编译性语言好比C或C++写的程序能够从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程经过编译器和不一样的标记、选项完成。运行程序的时候,链接/转载器软件把你的程序从硬盘复制到内存中而且运行。而Python语言写的程序不须要编译成二进制代码。你能够直接从源代码运行 程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,而后再把它翻译成计算机使用的机器语言并运行。这使得使用Python更加简单。也使得Python程序更加易于移植。

    8.面向对象:Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。

    9.可扩展性:若是须要一段关键代码运行得更快或者但愿某些算法不公开,能够部分程序用C或C++编写,而后在Python程序中使用它们。

    10.可嵌入性:能够把Python嵌入C/C++程序,从而向程序用户提供脚本功能。

    11.丰富的库:Python标准库确实很庞大。它能够帮助处理各类工做,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其余与系统有关的操做。这被称做Python的“功能齐全”理念。除了标准库之外,还有许多其余高质量的库,如wxPython、Twisted和Python图像库等等。

    12.规范的代码:Python采用强制缩进的方式使得代码具备较好可读性。而Python语言写的程序不须要编译成二进制代码。

Python缺点

    1.单行语句和命令行输出问题:不少时候不能将程序连写成一行,如import sys;for i in sys.path:print i。而perl和awk就无此限制,能够较为方便的在shell下完成简单程序,不须要如Python同样,必须将程序写入一个.py文件。

    2.独特的语法:这也许不该该被称为局限,可是它用缩进来区分语句关系的方式仍是给不少初学者带来了困惑。即使是颇有经验的Python程序员,也可能陷入陷阱当中。最多见的状况是tab和空格的混用会致使错误,而这是用肉眼没法分别的。

    3.运行速度慢:这里是指与C和C++相比。

Python 工具

    1.Tkinter:Python默认的图形界面接口。Tkinter是一个和Tk接口的Python模块,Tkinter库提供了对Tk API的接口,它属于Tcl/Tk的GUI工具组。

    2.PyGTK:用于python GUI程序开发的GTK+库。GTK就是用来实现GIMP和Gnome的库。

    3.PyQt:用于python的Qt开发库。QT就是实现了KDE环境的那个库,由一系列的模块组成,有qt, qtcanvas, qtgl, qtnetwork, qtsql, qttable, qtui and qtxml,包含有300个类和超过5750个的函数和方法。PyQt还支持一个叫qtext的模块,它包含一个QScintilla库。该库是Scintillar编辑器类的Qt接口。

    4.wxPython:GUI编程框架,熟悉MFC的人会很是喜欢,简直是同一架构(对于初学者或者对设计要求不高的用户来讲,使用Boa Constructor能够方便迅速的进行wxPython的开发)

    5.PIL:python提供强大的图形处理的能力,并提供普遍的图形文件格式支持,该库能进行图形格式的转换、打印和显示。还能进行一些图形效果的处理,如图形的放大、缩小和旋转等。是Python用户进行图象处理的强有力工具。

    6.Psyco:一个Python代码加速度器,可以使Python代码的执行速度提升到与编译语言同样的水平。

    7.xmpppy:Jabber服务器采用开发的XMPP协议,Google Talk也是采用XMPP协议的IM系统。在Python中有一个xmpppy模块支持该协议。也就是说,咱们能够经过该模块与Jabber服务器通讯,是否是很Cool。

    8.PyMedia:用于多媒体操做的python模块。它提供了丰富而简单的接口用于多媒体处理(wav, mp3, ogg, avi, divx, dvd, cdda etc)。可在Windows和Linux平台下使用。

    9.Pmw:Python megawidgets,Python超级GUI组件集,一个在python中利用Tkinter模块构建的高级GUI组件,每一个Pmw都合并了一个或多个Tkinter组件,以实现更有用和更复杂的功能。

    10.PyXML:用Python解析和处理XML文档的工具包,包中的4DOM是彻底相容于W3C DOM规范的。它包含如下内容:

Python 标准库

    Python拥有一个强大的标准库。Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提供了系统管理、网络通讯、文本处理、数据库接口、图形系统、XML处理等额外的功能。Python标准库命名接口清晰、文档良好,很容易学习和使用。

    Python社区提供了大量的第三方模块,使用方式与标准库相似。它们的功能无所不包,覆盖科学计算、Web开发、数据库接口、图形系统多个领域,而且大多成熟而稳定。第三方模块可使用Python或者C语言编写。SWIG,SIP经常使用于将C语言编写的程序库转化为Python模块。Boost C++ Libraries包含了一组库,Boost.Python,使得以 Python 或 C++ 编写的程序能互相调用。借助于拥有基于标准库的大量工具、可以使用低级语言如C和能够做为其余库接口的C++,Python已成为一种强大的应用于其余语言与工具之间的胶水语言。

Python标准库的主要功能有:

    1.文本处理,包含文本格式化、正则表达式匹配、文本差别计算与合并、Unicode支持,二进制数据处理等功能

    2.文件处理,包含文件操做、建立临时文件、文件压缩与归档、操做配置文件等功能

    3.操做系统功能,包含线程与进程支持、IO复用、日期与时间处理、调用系统函数、写日记(logging)等功能

    4.网络通讯,包含网络套接字,SSL加密通讯、异步网络通讯等功能

    5.网络协议,支持HTTP,FTP,SMTP,POP,IMAP,NNTP,XMLRPC等多种网络协议,并提供了编写网络服务器的框架W3C格式支持,包含HTML,SGML,XML的处理。

    6.其它功能,包括国际化支持、数学运算、HASH、Tkinter等

Python 开发环境

  • IDLE:Python内置IDE (随python安装包提供)
  • PyCharm  :由著名的JetBrains公司开发,带有一整套能够帮助用户在使用Python语言开发时提升其效率的工 具,好比调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。
  • Komodo和Komodo Edit:后者是前者的免费精简版
  • PythonWin:ActivePython或pywin32均提供该IDE,仅适用于Windows
  • SPE(Stani's Python Editor):功能较多的自由软件,基于wxPython
  • Ulipad:功能较全的自由软件,基于wxPython;做者是中国Python高手limodou
  • WingIDE:多是功能最全的IDE,但不是自由软件(教育用户和开源用户能够申请免费key)
  • Eric:基于PyQt的自由软件,功能强大。全名是:The Eric Python IDE
  • DrPython
  • PyScripter:使用Delphi开发的轻量级的开源Python IDE, 支持Python2.6和3.0。
  • PyPE:一个开源的跨平台的PythonIDE。
  • bpython: 类Unix操做系统下使用curses库开发的轻量级的Python解释器。语法提示功能。
  • eclipse + pydev插件:方便调试程序
  • emacs:自带python支持,自动补全、refactor等功能须要插件支持
  • Vim: 最新7.3版编译时能够加入python支持,提供python代码自动提示支持
  • Visual Studio 2003 + VisualPython:仅适用Windows,已中止维护,功能较差
  • SlickEdit
  • Visual Studio 2010 + Python Tools for Visual Studio
  • TextMate
  • Netbeans IDE
  • Sublime

Python 著名应用

  • Pylons-Web应用框架
  • Zope- 应用服务器
  • Plone- 内容管理系统
  • Django- 鼓励快速开发的Web应用框架
  • Uliweb- 国人开发的轻量级Web框架
  • TurboGears- 另外一个Web应用快速开发框架
  • Twisted--Python的网络应用程序框架
  • Python Wikipedia Robot Framework- MediaWiki的机器人程序
  • MoinMoinWiki- Python写成的Wiki程序
  • flask- Python 微Web框架
  • tornado- 非阻塞式服务器
  • Webpy- Python 微Web框架
  • Bottle- Python 微Web框架
  • EVE- 网络游戏EVE大量使用Python进行开发
  • Reddit - 社交分享网站
  • Dropbox - 文件分享服务
  • Pylons - Web应用框架
  • TurboGears - 另外一个Web应用快速开发框架
  • Fabric - 用于管理成百上千台Linux主机的程序库
  • Trac - 使用Python编写的BUG管理系统
  • Mailman - 使用Python编写的邮件列表软件
  • Mezzanine - 基于Django编写的内容管理系统
  • Blender - 以C与Python开发的开源3D绘图软件

附加资料

官网:https://www.python.org/

API文档:https://docs.python.org/3/

下载:https://www.python.org/downloads/

教程:http://www.w3cschool.cn/python/python-tutorial.html

相关文章
相关标签/搜索