Python语法
Python的设计目标之一是让代码具备高度的可阅读性。它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观。它不像其他的静态语言如C、Pascal那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和惊喜。
缩进
Python开发者有意让违反了缩进规则的程序不能通过编译,以此来强制程序员养成良好的编程习惯。并且Python语言利用缩进表示语句块的开始和退出(Off-side规则),而非使用花括号或者某种关键字。增加缩进表示语句块的开始,而减少缩进则表示语句块的退出。缩进成为了语法的一部分。例如if语句:
if age < 21:
@@@@print("你不能买酒。")
@@@@print("不过你能买口香糖。")
print("这句话处於if语句块的外面。")
注:上述例子为python 3.0版本的代码,@代表一个空格
根据PEP的规定,必须使用4个空格来表示每级缩进(不清楚4个空格的规定如何,在实际编写中可以自定义空格数,但是要满足每级缩进间空格数相等)。使用Tab字符和其它数目的空格虽然都可以编译通过,但不符合编码规范。支持Tab字符和其它数目的空格仅仅是为兼容很旧的的Python程序和某些有问题的编辑程序。
语句和控制流
if语句,当条件成立时运行语句块。经常与else, elif(相当于else if) 配合使用。
for语句,遍列列表、字符串、字典、集合等
迭代器,依次处理迭代器中的每个元素。
while语句,当条件为真时,循环运行语句块。
try语句。与except,finally配合使用处理在程序运行中出现的异常情况。
class语句。用于定义类型。
def语句。用于定义函数和类型的方法。
pass语句。表示此行为空,不运行任何操作。
assert语句。用于程序调适阶段时测试运行条件是否满足。
with语句。Python2.6以后定义的语法,在一个场景中运行语句块。比如,运行语句块前加密,然后在语句块运行退出后解密。
yield语句。在迭代器函数内使用,用于返回一个元素。自从Python 2.5版本以后。这个语句变成一个运算符。
raise语句。制造一个错误。
import语句。导入一个模块或包。
from import语句。从包导入模块或从模块导入某个对象。
import as语句。将导入的对象赋值给一个变量。
in语句。判断一个对象是否在一个字符串/列表/元组里。
表达式
Python的表达式写法与C/C++类似。只是在某些写法有所差别。
主要的算术运算符与C/C++类似。+, -, *, /, //, **, ~, %分别表示加法或者取正、减法或者取负、乘法、除法、整除、乘方、取补、取模。>>, <<表示右移和左移。&, |, ^表示二进制的AND, OR, XOR运算。>, <, ==, !=, <=, >=用于比较两个表达式的值,分别表示大于、小于、等于、不等于、小于等于、大于等于。在这些运算符里面,~, |, ^, &, <<, >>必须应用于整数。
Python使用and, or, not表示逻辑运算。
is, is not用于比较两个变量是否是同一个对象。in, not in用于判断一个对象是否属于另外一个对象。
Python支持“列表推导式”(list comprehension),比如计算0-9的平方和:
>>> sum(x * x for x in range(10))
285
Python使用lambda表示匿名函数。匿名函数体只能是表达式。比如:
>>> add=lambda x, y : x + y
>>> add(3,2)
5
Python使用y if cond else x表示条件表达式。意思是当cond为真时,表达式的值为y,否则表达式的值为x。相当于C++和Java里的cond?y:x。
Python区分列表(list)和元组(tuple)两种类型。list的写法是[1,2,3],而tuple的写法是(1,2,3)。可以改变list中的元素,而不能改变tuple。在某些情况下,tuple的括号可以省略。tuple对于赋值语句有特殊的处理。因此,可以同时赋值给多个变量,比如:
>>> x, y=1,2#同时给x,y赋值,最终结果:x=1, y=2
特别地,可以使用以下这种形式来交换两个变量的值:
>>> x, y=y, x #最终结果:y=1, x=2
Python使用'(单引号)和"(双引号)来表示字符串。与Perl、Unix Shell语言或者Ruby、Groovy等语言不一样,两种符号作用相同。一般地,如果字符串中出现了双引号,就使用单引号来表示字符串;反之则使用双引号。如果都没有出现,就依个人喜好选择。出现在字符串中的\(反斜杠)被解释为特殊字符,比如\n表示换行符。表达式前加r指示Python不解释字符串中出现的\。这种写法通常用于编写正则表达式或者Windows文件路径。
Python支持列表切割(list slices),可以取得完整列表的一部分。支持切割操作的类型有str, bytes, list, tuple等。它的语法是...[left:right]或者...[left:right:stride]。假定nums变量的值是[1, 3, 5, 7, 8, 13, 20],那么下面几个语句为真:
nums[2:5] == [5, 7, 8] 从下标为2的元素切割到下标为5的元素,但不包含下标为5的元素。
nums[1:] == [3, 5, 7, 8, 13, 20] 切割到最后一个元素。
nums[:-3] == [1, 3, 5, 7] 从最开始的元素一直切割到倒数第3个元素。
nums[:] == [1, 3, 5, 7, 8, 13, 20] 返回所有元素。改变新的列表不会影响到nums。
nums[1:5:2] == [3, 7] 从下标为1的元素切割到下标为5的元素但不包含下标为5的元素,且步长为2
函数
Python的函数支持递归、默认参数值、可变参数,但不支持函数重载。为了增强代码的可读性,可以在函数后书写“文档字符串”(Documentation Strings,或者简称docstrings),用于解释函数的作用、参数的类型与意义、返回值类型与取值范围等。可以使用内置函数help()打印出函数的使用帮助。比如:
>>>def randint(a, b):... "Return random integer in range [a, b], including both end points."...>>>help(randint)Help on function randint in module __main__: randint(a, b) Return random integer inrange[a, b], including both end points.
对象的方法
对象的方法是指绑定到对象的函数。调用对象方法的语法是instance.method(arguments)。它等价于调用Class.method(instance, arguments)。当定义对象方法时,必须显式地定义第一个参数,一般该参数名都使用self,用于访问对象的内部数据。这里的self相当于C++, Java里面的this变量,但是我们还可以使用任何其它合法的参数名,比如this 和 mine 等,self与C++,Java里面的this不完全一样,它可以被看作是一个习惯性的用法,我们传入任何其它的合法名称都行,比如:
class Fish: def eat(self, food): if food isnotNone: self.hungry=Falseclass User: def__init__(myself, name): myself. name= name #构造Fish的实例:f=Fish()#以下两种调用形式是等价的:Fish.eat(f,"earthworm")f.eat("earthworm") u = User('username') u .name
Python认识一些以“__”开始并以“__”结束的特殊方法名,它们用于实现运算符重载和实现多种特殊功能。
类型
Python采用动态类型系统。在编译的时候,Python不会检查对象是否拥有被调用的方法或者属性,而是直至运行时,才做出检查。所以操作对象时可能会抛出异常。不过,虽然Python采用动态类型系统,它同时也是强类型的。Python禁止没有明确定义的操作,比如数字加字符串。
与其它面向对象语言一样,Python允许程序员定义类型。构造一个对象只需要像函数一样调用类型即可,比如,对于前面定义的Fish类型,使用Fish()。类型本身也是特殊类型type的对象(type类型本身也是type对象),这种特殊的设计允许对类型进行反射编程。
Python内置丰富的数据类型。与Java、C++相比,这些数据类型有效地减少代码的长度。下面这个列表简要地描述了Python内置数据类型(适用于Python 3.x):
类型
描述
例子
|
一个由字符组成的不可更改的有串行。在Python 3.x里,字符串由Unicode字符组成。
|
'Wikipedia'
"Wikipedia"
"""Spanning
multiple
lines"""
|
bytes
|
一个由字节组成的不可更改的有串行。
|
b'Some ASCII'
b"Some ASCII"
|
list
|
可以包含多种类型的可改变的有串行
|
[4.0, 'string', True]
|
tuple
|
可以包含多种类型的不可改变的有串行
|
(4.0, 'string', True)
|
set, frozenset
|
与数学中集合的概念类似。无序的、每个元素唯一。
|
{4.0, 'string', True}
frozenset([4.0, 'string', True])
|
dict
|
一个可改变的由键值对组成的无串行。
|
{'key1': 1.0, 3: False}
|
int
|
精度不限的整数
|
42
|
float
|
浮点数。精度与系统相关。
|
3.1415927
|
complex
|
复数
|
3+2.7j
|
bool
|
逻辑值。只有两个值:真、假
|
True
False
|
除了各种数据类型,Python语言还用类型来表示函数、模块、类型本身、对象的方法、编译后的Python代码、运行时信息等等。因此,Python具备很强的动态性。
数学运算
Python使用与C、Java类似的运算符,支持整数与浮点数的数学运算。同时还支持复数运算与无穷位数(实际受限于计算机的能力)的整数运算。除了求绝对值函数abs()外,大多数数学函数处于math和cmath模块内。前者用于实数运算,而后者用于复数运算。使用时需要先导入它们,比如:
>>>importmath>>>print(math.sin(math.pi/2))1.0
fractions模块用于支持分数运算;decimal模块用于支持高精度的浮点数运算。
Python定义求余运行a % b的值处于开区间[0, b)内,如果b是负数,开区间变为(b, 0]。这是一个很常见的定义方式。不过其实它依赖于整除的定义。为了让方程式:b * (a // b) + a % b = a恒真,整除运行需要向负无穷小方向取值。比如7 // 3的结果是2,而(-7) // 3的结果却是-3。这个算法与其它很多编程语言不一样,需要注意,它们的整除运算会向0的方向取值。
Python允许像数学的常用写法那样连着写两个比较运行符。比如a < b < c与a < b and b < c等价。C++的结果与Python不一样,首先它会先计算a < b,根据两者的大小获得0或者1两个值之一,然后再与c进行比较。
应用
数学处理:NumPy扩展提供大量与许多标准数学库的接口。
文本处理:python提供的re模块能支持
正则表达式,还提供SGML,XML分析模块,许多程序员利用python进行XML程序的开发。
数据库编程:程序员可通过遵循Python DB-API(数据库
应用程序编程接口)规范的模块与Microsoft SQL Server,Oracle,Sybase,DB2,Mysql、SQLite等数据库通信。python自带有一个Gadfly模块,提供了一个完整的SQL环境。
Web编程:应用的开发语言,支持最新的XML技术。
多媒体应用:Python的PyOpenGL模块封装了“OpenGL应用程序编程接口”,能进行二维和三维
图像处理。PyGame模块可用于编写游戏软件。
pymo引擎:PYMO全称为python memories off,是一款运行于symbian S60V3,symbian S60V5系统上的AVG游戏引擎。因其基于
python平台开发,并且适用于创建
秋之回忆(
memories
off)风格的
AVG游戏,故命名为PYMO。
黑客编程:python有一个hack的库,内置了你熟悉的或不熟悉的函数,但是缺少成就感。
用Python写简单爬虫
首先,要通过urllib2这个Module获得对应的HTML源码。
import urllib2
url='http://www。baidu。com/s?wd=cloga'
content=urllib2.urlopen(url).read()通过上面这三句就可以将URL的源码存在content变量中,其类型为字符型。
接下来是要从这堆HTML源码中提取我们需要的内容。用Chrome查看一下对应的内容的代码(也可以用Firefox的Firebug)。
可以看到url的信息存储在span标签中,要获取其中的信息可以用正则式。
工具功能
Tkinter
Python默认的图形界面接口。Tkinter是一个和Tk接口的Python模块,Tkinter库提供了对Tk API的接口,它属于Tcl/Tk的GUI工具组。
用于python GUI程序开发的GTK+库。GTK就是用来实现GIMP和Gnome的库。
用于python的Qt开发库。QT就是实现了KDE环境的那个库,由一系列的模块组成,有qt, qtcanvas, qtgl, qtnetwork, qtsql, qttable, qtui and qtxml,包含有300个类和超过5750个的函数和方法。PyQt还支持一个叫qtext的模块,它包含一个QScintilla库。该库是Scintillar编辑器类的Qt接口。
GUI编程框架,熟悉MFC的人会非常喜欢,简直是同一架构(对于初学者或者对设计要求不高的用户来说,使用Boa Constructor可以方便迅速的进行wxPython的开发)
python提供强大的图形处理的能力,并提供广泛的图形
文件格式支持,该库能进行图形格式的转换、打印和显示。还能进行一些图形效果的处理,如图形的放大、缩小和旋转等。是Python用户进行图象处理的强有力工具。
Psyco
一个Python代码加速度器,可使Python代码的执行速度提高到与编译语言一样的水平。
xmpppy
Jabber服务器采用开发的XMPP协议,Google Talk也是采用XMPP协议的IM系统。在Python中有一个xmpppy模块支持该协议。也就是说,我们可以通过该模块与Jabber服务器通信,是不是很Cool。
PyMedia
用于多媒体操作的python模块。它提供了丰富而简单的接口用于多媒体处理(wav, mp3, ogg, avi, divx, dvd, cdda etc)。可在Windows和Linux平台下使用。
Pmw
Python megawidgets,Python超级GUI组件集,一个在python中利用Tkinter模块构建的高级GUI组件,每个Pmw都合并了一个或多个Tkinter组件,以实现更有用和更复杂的功能。
PyXML
用Python解析和处理XML文档的工具包,包中的4DOM是完全相容于W3C DOM规范的。它包含以下内容:
xmlproc: 一个符合规范的XML解析器。Expat: 一个快速的,非验证的XML解析器。还有其他和他同级别的还有 PyHtml PySGML。
用于多媒体开发和游戏软件开发的模块。
PyOpenGL
模块封装了“OpenGL应用程序编程接口”,通过该模块python程序员可在程序中集成2D和3D的图形。
NumArray是Python的一个扩展库,主要用于处理任意维数的固定类型数组,简单说就是一个矩阵库。它的底层代码使用C来编写,所以速度的优势很明显。SAGE是基于NumPy和其他几个工具所整合成的数学软件包,目标是取代Magma, Maple, Mathematica和Matlab 这类工具。
用于连接MySQL数据库。还有用于zope的ZMySQLDA模块,通过它就可在zope中连接mysql数据库。
Sqlite3
用于连接sqlite数据库。
Python-ldap
提供一组面向对象的API,可方便地在python中访问ldap目录服务,它基于OpenLDAP2.x。
smtplib
发送电子邮件。
ftplib
定义了FTP类和一些方法,用以进行客户端的ftp编程。如果想了解ftp协议的详细内容,请参考RFC959。
标准库
Python拥有一个强大的标准库。Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外的功能。Python标准库命名接口清晰、文档良好,很容易学习和使用。
Python社区提供了大量的第三方模块,使用方式与标准库类似。它们的功能无所不包,覆盖科学计算、Web开发、数据库接口、图形系统多个领域,并且大多成熟而稳定。第三方模块可以使用Python或者
C语言编写。
SWIG,
SIP常用于将C语言编写的程序库转化为Python模块。Boost
C++ Libraries包含了一组库,Boost.Python,使得以 Python 或 C++ 编写的程序能互相调用。借助于拥有基于标准库的大量工具、能够使用低级语言如C和可以作为其他库接口的C++,Python已成为一种强大的应用于其他语言与工具之间的
胶水语言。
Python标准库的主要功能有:
文本处理,包含文本格式化、正则表达式匹配、文本差异计算与合并、Unicode支持,二进制数据处理等功能
文件处理,包含文件操作、创建临时文件、文件压缩与归档、操作配置文件等功能
操作系统功能,包含线程与进程支持、IO复用、日期与时间处理、调用系统函数、写日记(logging)等功能
网络通信,包含网络套接字,SSL加密通信、异步网络通信等功能
网络协议,支持HTTP,FTP,SMTP,POP,IMAP,NNTP,XMLRPC等多种网络协议,并提供了编写网络服务器的框架
W3C格式支持,包含HTML,SGML,XML的处理。
其它功能,包括国际化支持、数学运算、HASH、Tkinter等
分享到:
相关推荐
#### 一、简明Python教程概览 - **教程目标**:本书旨在作为Python编程的入门教程,适用于编程初学者,尤其是对于计算机基础知识较为有限的读者。 - **作者与翻译**:原作者为Swaroop C.H.;中文版由沈洁元首次翻译...
**Python编程语言简介** Python是一种高级编程语言,以其简洁易读的语法和强大的功能而闻名。自1991年由Guido van Rossum创建...无论你是对编程一无所知,还是希望巩固Python基础,这个教程都是一个不可多得的资源。
本资源是一个 Python 编程语言的教程,涵盖了 Python 语言的基础知识、安装、基本概念、运算符与表达式、控制流、函数、模块、数据结构、面向对象的编程、输入&输出、异常、Python 标准库等方面的内容。 主要知识点...
"Python基础教程---简明Python教程"是Swaroop C. H.撰写,并由沈洁元翻译的一本针对初学者的指导书籍。这本书旨在帮助读者快速掌握Python编程的基本概念和技能。 1. **Python简介**: Python是一种解释型、面向...
Python是一种高级的解释型编程语言,以其简洁和高效的代码著称。相比C语言可能需要数千行代码来完成的任务,Python通常只需几十行。Python的应用领域广泛,可以用于日常任务自动化,比如备份文件;开发网站,如...
【Python编程基础知识】 Python是一种高级、通用的编程语言,以其简洁、易读的语法而闻名,适合初学者入门。...无论是对于想要学习编程的新人,还是希望深入理解Python的开发者,这本书都是一个宝贵的学习资源。
《Python简明教程-沈洁元》是一份旨在帮助初学者快速掌握Python基础知识的文档。教程作者沈洁元力求简洁明了,逐步引导无编程背景的读者进入Python的世界。本教程主要关注Python 2.7的基础语法,并指出与Python 3.x...
一个典型的Python简明教程通常会包含以下内容: 1. **环境搭建**:安装Python解释器,选择合适的开发环境,如IDLE、PyCharm或VS Code等。 2. **基础语法**:解释Python的基本语法规则,包括缩进、变量、数据类型、...
《简明Python教程》是一部优秀的Python编程入门书籍,无论你是完全没有编程经验的新手,还是已经有其他编程语言基础的开发者,都能从中获得宝贵的知识和技能。通过本书的学习,你可以建立起坚实的Python编程基础,并...
Python语言之所以受到推崇,原因之一是其简洁和强大的语法特性。它的语法表达优美,支持命令行、交互式和图形集成环境的运行方式。Python拥有面向对象的特性,还支持异常处理机制。模块和包的概念类似于Java中的包...
总之,"简明 Python 教程" 是一个适合初学者的起点,它将引导你逐步掌握 Python 编程的基础知识,为你的 Python 学习之路奠定坚实基础。记得实践是检验真理的唯一标准,动手编写代码,解决实际问题,才是提升技能的...
"Python简明教程"是为初学者设计的教育资源,旨在帮助新手快速掌握Python的基础知识。以下是一些关键知识点的详细说明: 1. **基础语法**:Python的语法清晰,易于理解。它使用缩进来表示代码块,比如循环和条件...
### Python简明教程知识点概述 #### 1. 引言 - **Python的特色**: - 高级、解释型、通用性; - 支持多种编程范式(面向对象、命令式、函数式等); - 丰富的标准库支持; - 简洁易读的语法。 - **为什么选择...
### Python初学教程:《简明Python教程》 #### 知识点概述: 根据所提供的《简明Python教程》部分信息,我们可以归纳出一系列重要的Python基础知识和技术要点,这些内容非常适合Python初学者作为入门指南。 #### ...
此外,Python提供了一个集成开发环境(IDE)叫做IDLE,它是一个内置的图形用户界面,可通过“开始”菜单的相应路径启动。 在解释器中,你会看到一个`>>>`提示符,这是Python提示你输入代码的地方。例如,键入`print...
- **书籍背景**:《简明Python教程》(第四版)是一本由Swaroop C.H.编写的自由图书,旨在帮助初学者掌握Python编程的基础知识。本书最初由沈洁元引入中国并翻译,后由漠伦基于原书第4.0版进行了全新的翻译,形成了...
《Byte of Python中文版》是一本面向初学者的Python编程教程,旨在帮助读者快速掌握Python语言的基础知识并开始编写代码。这本书深入浅出地介绍了Python的语法特性、数据类型、控制结构、函数、模块以及一些高级特性...
这本书以其简洁明了的风格,深入浅出地介绍了Python的基本概念和语法,为读者提供了一个快速学习Python的良好起点。 1. **Python简介**:Python是一种高级编程语言,以其易读性强、代码简洁著称。它支持多种编程...