位置:首页 > > Python快速入门

Python快速入门

  Python是一种高层次,解释型,交互式和面向对象的脚本语言。

  • Python是解释型的

  • Python是交互式的

  • Python是面向对象的

  • Python是初学者的语言

Python是由Guido van Rossum在八十年代末和九十年代初在荷兰国家研究所数学与计算机科学研发的。

Python的突出特点包括:

  • 易学

  • 易阅读

  • 易维护

  • 拥有广泛的标准库

  • 交互模式

  • 可移植

  • 可扩展

  • 数据库

  • GUI 程序

  • 可伸缩

获取Python

当前最新源代码,二进制文件,文档,新闻等,可在Python的官方网站找到。

Python 官方网站 : http://www.python.org/

可以从网站下载以下Python文档。文档有 HTML,PDF 和 PostScript 格式。

Python 文档网站 : www.python.org/doc/
 

Python安装(win7)

在本教程中,使用的是 python2.7 版本,当前已经发布了 python3 ,但是考虑到两个版本不能相互很好的兼容,所以有 python3 的内容,会在后续的教程中发布,请关注:Python3教程 。
打开官方网站的下载页面,如下所示:



点击 "Download Python 2.7.10" 这个链接,然后打开需要下载的版本,请定需要的版本,这里写本教程使用的是:python-2.7.10.msi
下载完成后,双击 python-2.7.10.msi 这个二进制文件并安装,指定安装路径。

第一步:双击 python-2.7.10.msi 安装



第二步:选择安装路径



第三步:将 Python 程序添加到“系统环境变量”



第四步:安装完成!



第五步:测试安装结果,点击“开始”,选择" Python(command line)"






到此,Python 的所有安装完成!接下来我们就可以编写测试 Python 程序了。

第一个Python程序

交互式模式编程:

调用解释不通过一个脚本文件作为参数,就可以调出以下提示(Linux平台下):

root# python Python 2.5 (r25:51908, Nov 6 2007, 16:54:01) [GCC 4.1.2 20070925 (Red Hat 4.1.2-27)] on linux2 Type "help", "copyright", "credits" or "license" for more info. >>>

在 Python 提示符的右侧输入下列文本并按下回车键:

>>> print "Hello, Python!";

这将产生以下结果:

Hello, Python!

Python标识符

Python标识符是一个用来标识变量,函数,类,模块,或其他对象的名称。标识符是以字母A到Z或a〜z开始后面跟零个或多个字母下划线(_),下划线和数字(0〜9)。

Python不允许标点字符标识符,如@,$和%。Python是一种区分大小写的编程语言。 比如 Manpower 和 manpower 在Python中是两种不同的标识符。

下面是在Python标识符的命名约定:

  • 类名称以大写字母,其他的标识符以小写字母。

  • 单个前导下划线开始的标识符表示该标识符意味着约定是私有的。

  • 开始是两个前导下划线的标识符表示强烈专用标识符。

  • 如果标识符还具有两个尾随下划线结束时,所述标识符是语言定义的特殊名称。

保留字

下面的列表显示的是在Python的保留字。这些保留字不可以用作常量或变量或任何其它标识符名称。

and exec not
assert finally or
break for pass
class from print
continue global raise
def if return
del import try
elif in while
else is with
except lambda yield

行和缩进

一个程序员在学习Python时,遇到的第一个注意事项是,Python中不使用括号来表示代码类/函数定义块或流量控制。 代码块由行缩进,这是严格执行表示。

缩进位数量是可变的,但是在块中的所有语句必须缩进量相同。在这个例子中,两个块都很好(没有问题):

if True: print "True" else: print "False"

然而,在这个例子中,第二块将产生一个错误:

if True: print "Answer" print "True" else: print "Answer" print "False"

多行语句

在Python语句通常有一个新行表示结束。Python里面,但是,允许使用续行字符(\)表示该行应该继续。例如:

total = item_one + \
        item_two + \
        item_three

包含在语句[], {}, 或()括号内不能使用续行字符。例如:

days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']

在Python中的引号

Python的接受单引号('),双引号(“)和三('''或”“”)引用来表示字符串,只要是同一类型的引号的开始和结束的字符串。

三重引号可以用来横跨多行字符串。例如,下面所有的表示都是合法的:

word = 'word' sentence = "This is a sentence." paragraph = """This is a paragraph. It is
made up of multiple lines and sentences."""

在Python中的注释

哈希符号(#)不是一个字符串字母开头,它是一个注释的开始。#之后以及到物理行结束的所有字符都是注释的一部分,Python解释器会忽略它们。

#!/usr/bin/python # First comment print "Hello, Python!"; # second comment

这将产生以下结果:

Hello, Python!

注释在一个语句或表达式后的同一行:

name = "Madisetti" # This is again comment

可以注释多行,如下所示:

# This is a comment. # This is a comment, too. # This is a comment, too. # I said that already.

使用空行

仅包含空格,可能带有注释行,被称为一个空行,Python完全忽略它。

在交互式解释器会话,必须输入一个空的物理线路终止多行语句。

在一行上的多个语句

分号(;)允许在单一行上编写多条语句,语句开始一个新的代码块。下面是使用分号示例片断:

import sys; x = 'foo'; sys.stdout.write(x + '\n')

多组语句称为套件

组成一个单一的代码块个别语句组在Python中被称为套件。

组件或复杂的语句,如if,while,def和类,是那些需要一个标题行和套件。

标题行开始语句(用关键字),并终止并显示冒号(:),接着是一行或多行,组成套件。

例子:

if expression : suite elif expression : suite else : suite

Python - 变量类型

变量是什么,不是是保留在内存位置用来存储一些值。这意味着,当创建一个变量,它会在内存中保留一些空间。

根据一个变量的数据类型,解释器分配内存,并决定什么样的数据可以存储在保留存储器。 因此,通过分配不同的数据类型的变量,可以存储整数,小数或字符在这些变量中。

给变量赋值

在=操作符的左侧是变量名,在=运算符的右边是存储在变量中的值。例如:

counter = 100 # An integer assignment miles = 1000.0 # A floating point name = "John" # A string print counter print miles print name

标准数据类型

Python有五个标准数据类型:

  • 数字

  • 字符串

  • 列表

  • 元组

  • 字典

Python的数字

当分配一个值给创建的 Number 对象。例如:

var1 = 1 var2 = 10

Python支持四种不同的数值类型:

  • int (有符号整数)

  • long (长整数[也可以以八进制和十六进制表示])

  • float (浮点实数值)

  • complex (复数)

这里是数字的一些例子:

int long float complex
10 51924361L 0.0 3.14j
100 -0x19323L 15.20 45.j
-786 0122L -21.9 9.322e-36j
080 0xDEFABCECBDAECBFBAEL 32.3+e18 .876j
-0490 535633629843L -90. -.6545+0J
-0x260 -052318172735L -32.54e100 3e+26J
0x69 -4721885298529L 70.2-E12 4.53e-7j

Python字符串

Python的字符串在引号之间确定为一组连续的字符。

例子:

str = 'Hello World!' print str # Prints complete string print str[0] # Prints first character of the string print str[2:5] # Prints characters starting from 3rd to 6th print str[2:] # Prints string starting from 3rd character print str * 2 # Prints string two times print str + "TEST" # Prints concatenated string

Python 列表

列表是最通用的 Python 复合数据类型。列表包含在方括号 ([]) 内用逗号分隔,包含的各种数据类型的项目。

#!/usr/bin/python list = [ 'abcd', 786 , 2.23, 'john', 70.2 ] tinylist = [123, 'john'] print list # Prints complete list print list[0] # Prints first element of the list print list[1:3] # Prints elements starting from 2nd to 4th print list[2:] # Prints elements starting from 3rd element print tinylist * 2 # Prints list two times print list + tinylist # Prints concatenated lists

Python 元组

元组是类似于另一列表序列的数据类型。元组中由数个逗号分隔每一个值。 不像列表,元组中括号括起来。

元组可以被认为是只读的列表。

tuple = ( 'abcd', 786 , 2.23, 'john', 70.2 ) tinytuple = (123, 'john') print tuple # Prints complete list print tuple[0] # Prints first element of the list print tuple[1:3] # Prints elements starting from 2nd to 4th print tuple[2:] # Prints elements starting from 3rd element print tinytuple * 2 # Prints list two times print tuple + tinytuple # Prints concatenated lists

Python字典

Python的字典是哈希表类型。它们运作就像关联数组或类似在Perl中的哈希,由键值对组成。

tinydict = {'name': 'john','code':6734, 'dept': 'sales'} print dict['one'] # Prints value for 'one' key print dict[2] # Prints value for 2 key print tinydict # Prints complete dictionary print tinydict.keys() # Prints all the keys print tinydict.values() # Prints all the values

Python基本运算符

假设 a = 10, b = 20 那么:

运算符 描述 示例
+ 加法 - 运算符的两侧的值增加 a + b = 30
- 减法- 从操作符左侧减去右手侧的值 a - b = -10
* 乘法- 相乘的运算符的两侧值 a * b = 200
/ 除法 - 由操作符的右侧的值除以左侧的值 b / a = 2
% 模- 由运算符的左侧除以运算符右侧返回余数 b % a = 0
** 指数幂- 执行运算符的指数(幂)计算 a**b = 10 的 20 次幂
// Floor Division - Floor除法 - 操作数相除,其结果的小数点后的数字将被删除。 9//2 = 4 , 9.0//2.0 = 4.0
== 检查两个操作数的值是否相等,如果是,则条件为真。 (a == b) 不为真 true.
!= 检查两个操作数的值相等与否,如果值不相等,则条件变为真。 (a != b) 为 true.
<> 检查两个操作数的值相等与否,如果值不相等,则条件变为真。 (a <> b) 为 true. 这个类似于 != 运算符
> 检查左边的操作数的值是否大于右操作数的值,如果是,则条件为真。 (a > b) 不为 true.
< 检查左边的操作数的值是否小于右操作数的值,如果是,则条件为真。 (a < b) 为 true.
>= 检查左边的操作数的值是否大于或等于右操作数的值,如果是,则条件为真。 (a >= b) 不为 true.
<= 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件变为真。 (a <= b) 为 true.
= 简单的赋值运算符,从右侧的操作数赋值给左侧的操作数 c = a + b 将分配 a + b 的值到 c
+= 相加并赋值运算符,它增加了右操作数到左操作数并分配结果到左操作数 c += a 相当于 c = c + a
-= 相减并赋值运算符,它从左操作数减去右操作数并分配结果到左边操作数 c -= a 相当于 c = c - a
*= 乘法并赋值运算符,左操作数乘以右边的操作数并分配结果值到左操作数 c *= a 相当于 c = c * a
/= 除法并赋值运算符,左操作数除以右操作数并分配结果到左操作数 c /= a 相当于 c = c / a
%= 模量和赋值运算符,两个操作数模量并分配结果到左操作数 c %= a 相当于 c = c % a
**= 指数和赋值运算符,执行指数(次幂)计算的运算符并赋值给左操作数 c **= a 相当于 c = c ** a
//= Floor除法,并分配一个值,执行Floor除法运算并赋值给左操作数 c //= a 相当于 c = c // a
& 二进制和操作拷贝位结果,如果它存在于两个操作数。 (a & b) = 12 也就是 0000 1100
| 二进制或运算符复制位如果它存在一个操作数中。 (a | b) = 61 也就是 0011 1101
^ 二进制异或运算符复制,如果它设置在一个操作数,而不是两个比特。 (a ^ b) = 49  也就是 0011 0001
~ 二进制的补运算符是一元的,具有“翻转”位的效应。 (~a ) = -61 也就是 1100 0011 以2的补码形式,由于一个带符号二进制数。
<< 二进制向左移位运算符。左边的操作数的值向左移动由右操作数指定的位数。 a << 2 = 240 也就是 1111 0000
>> 二进制向右移位运算符。左边的操作数的值是通过右操作数指定向右移动的位数。 a >> 2 = 15 也就是 0000 1111
and 所谓逻辑和运算符。如果两个操作数为真,那么则条件为真。 (a 和 b) 为 true.
or 所谓逻辑OR运算符。如果任何两个操作数都非零那么条件变为真。 (a 或 b) 为 true.
not 所谓逻辑非运算符。用来反转其操作数的逻辑状态。如果条件为真,那么逻辑非操作符执行结果则为假。 not(a && b) 为 false.
in 计算结果为真,如果找到了变量指定的序列,否则为假。 x 在 y 中, 这里 in 结果是 1 ,如果 x is 是 y 序列成员
not in 如果变量没有在指定的顺序找到计算结果为真,否则为假。 x 不在 y 中, 这里 not in 结果是 1 ,如果 x 序列不是 y 的成员。
is 如果操作符两侧的变量是同一个对象计算结果为真,否则为假。 x 是 y, 这里 is 结果就是 1 ,如果 id(x) == id(y) 结果为 真.
is not 如果操作符两侧的变量为同一个对象,计算结果为假,否则真。 x 不是 y, 如果 id(x) 不为 id(y) 这里 is not 结果为 1

Python运算符优先级

下表列出了所有运算符从最高优先级到最低。

操作符 描述
** 幂(指数次幂)
~ + - 补充,一元加号和减号(方法名最后两个+@和 -@)
* / % // 乘法,除法,取模和floor除法
+ - 加法和减法
>> << 左,右按位移位
& 位 '与'
^ | 按位异'或'和常规'或'
<= < > >= 比较运算符
<> == != 运算符相等
= %= /= //= -= += |= &= >>= <<= *= **= 赋值运算符
is is not 标识运算符
in not in 运算符
note or and 逻辑运算符

if 语句

if语句的语法是:

if expression: statement(s)

else 语句

以下是 if...else 语句的语法:

if expression: statement(s) else: statement(s)

 elif 语句

以下是 if...elif 语句的语法:

if expression1: statement(s) elif expression2: statement(s) elif expression3: statement(s) else: statement(s)

内嵌 if...elif...else 结构

以下是内嵌的 if...elif...else 结构的语法:

if expression1: statement(s) if expression2: statement(s) elif expression3: statement(s) else statement(s) elif expression4: statement(s) else: statement(s)

 while 循环

以下是 while 循环的语法:

while expression: statement(s)

无限循环

使用while循环时务必小心,因为如果这个条件永远解析为一个假值时,这会导致在一个循环中,永远不会结束。这种循环被称为一个无限循环。

其中,服务器需要连续运行,以使客户程序可以在有需要时与它进行通信,无限循环可能是在客户机/服务器编程有用到。

单个语句套件

类似于if语句的语法,如果while子句仅由一个单一的语句时,它可以被放置在相同的行中所述while的头部位置。

这里是一个单行while子句的例子:

while expression : statement

for 循环

for循环的语法是:

for iterating_var in sequence: statements(s)

遍历序列索引

替代方式是通过每个项目迭代,索引偏移到序列本身:

fruits = ['banana', 'apple', 'mango'] for index in range(len(fruits)): print 'Current fruit :', fruits[index] print "Good bye!"

 break 语句

Python中的break语句终止当前的循环,并继续执行下一条语句,就像在C中的传统的break语句一样。

break语句最常见的用途是当一些外部条件被触发,需要从一个循环马上退出。break语句可以在 while 和 for 两个循环使用。

for letter in 'Python': # First Example if letter == 'h': break print 'Current Letter :', letter var = 10 # Second Example while var > 0: print 'Current variable value :', var var = var -1 if var == 5: break print "Good bye!"

continue 语句

在Python中,continue语句返回控制 while 循环的开始。 continue语句拒绝执行循环的当前迭代所有剩余的语句,并移动控制回到循环的顶部(开始位置)。

continue语句可以在 while 和 for 两个循环中使用。

for letter in 'Python': # First Example if letter == 'h': continue print 'Current Letter :', letter var = 10 # Second Example while var > 0: print 'Current variable value :', var var = var -1 if var == 5: continue print "Good bye!"

在循环中使用else语句

Python支持有一个循环语句相关联的else语句。

  • 如果一个for循环使用else语句,当循环已用尽迭代列表执行else语句。

  • 如果else语句使用在while循环,当 while 条件为假else语句执行。

 pass 语句

Python中的pass语句,语法上必需的,但又不希望执行任何命令或代码。

pass语句是个空操作;在执行时什么也不会发生。 pass也是一个有用的地方,因为这里代码最终是有用的,只是一直没有写,但(例如,以存根为例):

#!/usr/bin/python for letter in 'Python': if letter == 'h': pass print 'This is pass block' print 'Current Letter :', letter print "Good bye!"

定义一个函数

可以定义函数,以提供所需的功能。下面是在Python定义一个函数的简单规则:

  • 函数块首先以 def 关键字后跟函数名和括号 ( ( ) )

  • 任何输入参数或参数应放在这些括号内。 还可以定义这些括号内的参数。

  • 函数的第一个语句可以是一个可选的声明 - 函数的文档字符串或文档字符串。

  • 每个函数中的代码块用冒号(:) 开始和缩进。

  • 该语句返回[表达]退出函数,可选地传递回一个表达式给调用者。 不带参数的return语句返回None是一样的。

语法

def functionname( parameters ): "function_docstring" function_suite return [expression]

默认情况下,参数有一个位置的行为,需要以相同的顺序定义它们。

例子:

这是最简单的Python函数形式。 函数将一个字符串作为输入参数并打印标准屏幕上。

def printme( str ): "This prints a passed string into this function" print str return

调用函数

定义一个函数仅赋予它一个名字,指定将被包括在该函数的参数,以及代码块结构。

一旦函数的基本结构确定后,就可以通过从其它函数或直接从Python提示符调用它执行它。

下面是一个调用 printme()函数的例子:

#!/usr/bin/python # Function definition is here def printme( str ): "This prints a passed string into this function" print str; return; # Now you can call printme function printme("I'm first call to user defined function!"); printme("Again second call to the same function");

这将产生以下输出结果:

I'm first call to user defined function!
Again second call to the same function

Python 模块

模块允许在逻辑上组织Python代码。将相关代码放到一个模块使代码更容易理解和使用。

模块是可以绑定和参考任意命名的属性的Python对象。

简单地说,一个模块是由Python代码的文件组成。模块可以定义函数,类和变量。模块也可以包括可运行的代码。

例子:

Python 中一个名为 aname 的模块代码通常位于一个文件名为 aname.py. 这里有一个简单的模块的例子,hello.py

def print_func( par ): print "Hello : ", par return

import 语句

可以通过使用 import 语句在其他一些Python源文件作为一个模块执行任何Python源文件。import 的语法如下:

import module1[, module2[,... moduleN]

当解释遇到import语句,如果模块存在于搜索路径它导入模块。搜索路径是一个目录列表,解释器在导入模块之前搜索。

例子:

要导入模块hello.py,需要把下面的命令在脚本的顶部:

#!/usr/bin/python # Import module hello import hello # Now you can call defined function that module as follows hello.print_func("Zara")

这将产生以下输出结果:

Hello : Zara

一个模块只被装载一次,而不管导入的次数。如果多个导入出现这可以防止模块执行一遍又一遍。

打开和关闭文件

open函数:

在可以读取或写入一个文件之前,必须使用Python的内置open()函数来打开文件。这个函数创建文件对象,这将被用来调用与其相关联其他支持方法。

语法

file object = open(file_name [, access_mode][, buffering])

下面是详细的参数说明:

  • file_name: file_name参数是一个字符串值,包含要访问的文件的名称。

  • access_mode: access_mode 确定该文件已被打开,即模式。读,写等追加。可能值的一个完整列表在下表中给出。这是可选的参数,默认文件访问模式是读(r)

  • buffering: 如果缓冲值被设置为0,没有缓冲将发生。如果该缓冲值是1,将在访问一个文件进行行缓冲。如果指定的缓冲值作为大于1的整数,那么缓冲操作将被用指定缓冲器大小进行。这是可选的参数。

这里是打开一个文件的不同模式的列表:

模式 描述
r 打开一个文件为只读。文件指针被放置在文件的开头。这是默认模式。
rb 打开一个文件只能以二进制格式读取。文件指针被放置在文件的开头。这是默认模式。
r+ 打开用于读取和写入文件。文件指针将在文件的开头。
rb+ 打开用于读取和写入二进制格式的文件。文件指针将在文件的开头。
w 打开一个文件只写。覆盖文件,如果文件存在。如果该文件不