1、Python 的特点1. 简单Python 是一种代表简单思想的语言。2. 易学Python 有极其简单的语法。3. 免费、开源Python 是 FLOSS(自由/ 开放源码软件)之一。4. 高层语言使用 Python 编写程序时无需考虑如何管理程序使用的内存一类的底层细节。5. 可移植性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、Play
2、Station、Sharp Zaurus、Windows CE 甚至还有 PocketPC。6. 解释性可以直接从源代码运行。在计算机内部,python 解释器把源代码转换为字节码的中间形式,然后再把它翻译成计算机使用的机器语言。7. 面向对象Python 既支持面向过程编程也支持面向对象编程。8. 可扩展性部分程序可以使用其他语言编写,如 c/c+。9. 可嵌入型可以把 Python 嵌入到 c/c+程序中,从而提供脚本功能。10. 丰富的库Python 标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML
3、、XML-RPC、HTML、WAV 文件、密码系统、GUI(图形用户界面)、Tk 和其他与系统有关的操作。-分割线 -以下是 Python 的基本语法-一、基本概念1. python 中数有四种类型:整数、长整数、浮点数和复数。整数, 如 1长整数 是比较大的整数浮点数 如 1.23、3E-2复数 如 1 + 2j、 1.1 + 2.2j2. 字符串(字符的序列)python 中单引号和双引号使用完全相同。使用三引号(或“) 可以指定一个多行字符串。转义符 自然字符串, 通过在字符串前加 r 或 R。 如 r“this is a line with n“ 则n 会显示,并不是换行。python
4、 允许处理 unicode 字符串,加前缀 u 或 U, 如 u“this is an unicode string“。字符串是不可变的。按字面意义级联字符串,如“this “ “is “ “string“会被自动转换为 this is string。3. 标识符的命名第一个字符必须是字母表中字母或下划线_。标识符的其他的部分有字母、数字和下划线组成。标识符对大小写敏感。4. 对象python 程序中用到的任何 “东西”都成为“对象”。5. 逻辑行和物理行物理行是我们在编写程序时看到的,逻辑行则是 python 看到的。python 中分号;标识一个逻辑行的结束,但是实际中一般每个物理行只写一
5、个逻辑行,可以避免使用分号。多个物理行中可以写一个逻辑行,如下:s = “peter is writing this article“上面的使用被称为 明确的行连接, 又如:print “peter“6. 缩进空白在 python 是非常重要的,行首的空白是最重要的,又称为缩进。行首的空白(空格和制表符)用来决定逻辑行的缩进层次,从而决定语句分组。这意味着同一层次的语句必须有相同的缩进,每一组这样的语句称为一个块。注意:不要混合使用空格和制表符来缩进,因为在跨越不同的平台时无法正常工作。二、运算符与表达式1. 运算符与其用法运算符 名称 说明 例子+ 加 两个对象相加 3 + 5 得到 8。a
6、 + b 得到ab。- 减 得到负数或是一个数减去另一个数 -5.2 得到一个负数。50 - 24 得到 26。* 乘 两个数相乘或是返回一个被重复若干次的字符串 2 * 3 得到 6。la * 3 得到lalala。* 幂返回 x 的 y 次幂3 * 4 得到 81(即 3 * 3 * 3 * 3)/ 除 x 除以 y 4/3 得到 1(整数的除法得到整数结果)。4.0/3 或 4/3.0 得到 1.3333333333333333/ 取整除 返回商的整数部分 4 / 3.0 得到 1.0% 取模 返回除法的余数 8%3 得到 2。-25.5%2.25 得到 1.5 右移 把一个数的比特向右
7、移一定数目 11 1 得到 5。11 按比特表示为 1011,向右移动 1 比特后得到 101,即十进制的 5。y = 3; x = y 返回 True。= 等于 比较对象是否相等 x = 2; y = 2; x = y 返回 True。x = str; y = stR; x = y 返回 False。x = str; y = str; x = y 返回 True。!= 不等于 比较两个对象是否不相等 x = 2; y = 3; x != y 返回 True。not 布尔“非” 如果 x 为 True,返回 False。如果 x 为 False,它返回 True。 x = True; not
8、y 返回 False。and 布尔“与” 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 x = False; y = True; x and y,由于 x是 False,返回 False。在这里,Python 不会计算 y,因为它知道这个表达式的值肯定是 False(因为 x 是 False)。这个现象称为短路计算。or 布尔“或” 如果 x 是 True,它返回 True,否则它返回 y 的计算值。 x = True; y = False; x or y 返回 True。短路计算在这里也适用。2. 运算符优先级(从低到高)运算符 描述lambda L
9、ambda 表达式or 布尔“或”and 布尔“与”not x 布尔“非”in,not in 成员测试is,is not 同一性测试,=,!=,= 比较| 按位或 按位异或print 1 in l; #True;支持索引和切片操作;索引时若超出范围,则 IndexError;使用函数 len()查看长度;使用 del 可以删除列表中的项,eg: del l0 # 如果超出范围,则IndexErrorlist 函数如下:append(value) -向列表尾添加项 valuel = 1, 2, 2l.append(3) #1, 2, 2, 3count(value) - 返回列表中值为 valu
10、e 的项的个数l = 1, 2, 2print l.count(2) # 2extend(list2) -向列表尾添加列表 list2l = 1, 2, 2l1 = 10, 20l.extend(l1)print l #1, 2, 2, 10, 20index(value, start, stop) - 返回列表中第一个出现的值为 value 的索引,如果没有,则异常 ValueErrorl = 1, 2, 2a = 4try:print l.index(a)except ValueError, ve:print “there is no %d in list“ % ainsert(i, va
11、lue) -向列表 i 位置插入项 vlaue,如果没有 i,则添加到列表尾部l = 1, 2, 2l.insert(1, 100)print l #1, 100, 2, 2l.insert(100, 1000)print l #1, 100, 2, 2, 1000pop(i) -返回 i 位置项,并从列表中删除;如果不提供参数,则删除最后一个项;如果提供,但是 i 超出索引范围,则异常 IndexErrorl = 0, 1, 2, 3, 4, 5print l.pop() # 5print l #0, 1, 2, 3, 4print l.pop(1) #1print l #0, 2, 3,
12、4try:l.pop(100)except IndexError, ie:print “index out of range“remove(value) - 删除列表中第一次出现的 value,如果列表中没有 vlaue,则异常 ValueErrorl = 1, 2, 3, 1, 2, 3l.remove(2)print l #1, 3, 1, 2, 3try:l.remove(10)except ValueError, ve:print “there is no 10 in list“reverse() -列表反转l = 1, 2, 3l.reverse()print l #3, 2, 1s
13、ort(cmp=None, key=None, reverse=False) -列表排序【Python Library Reference】cmp:cmp specifies a custom comparison function of two arguments (iterable elements) which should return a negative, zero or positive number depending on whether the first argument is considered smaller than, equal to, or larger th
14、an the second argument: “cmp=lambda x,y: cmp(x.lower(), y.lower()“ key:key specifies a function of one argument that is used to extract a comparison key from each list element: “key=str.lower“reverse:reverse is a boolean value. If set to True, then the list elements are sorted as if each comparison
15、were reversed.In general, the key and reverse conversion processes are much faster than specifying an equivalent cmp function. This is because cmp is called multiple times for each list element while key and reverse touch each element only once.l5 = 10, 5, 20, 1, 30l5.sort()print l5 #1, 5, 10, 20, 3
16、0l6 = “bcd“, “abc“, “cde“, “bbb“l6.sort(cmp = lambda s1, s2: cmp(s10,s21)print l6 #abc, bbb, bcd, cdel7 = “bcd“, “abc“, “cde“, “bbb“, “faf“l7.sort(key = lambda s: s1)print l7 #faf, abc, bbb, bcd, cde2. 元组tuple 和 list 十分相似,但是 tuple 是不可变的,即不能修改 tuple,元组通过圆括号中用逗号分割的项定义;支持索引和切片操作;可以使用 in查看一个元素是否在 tuple
17、中。空元组() ;只含有一个元素的元组(“a“,) #需要加个逗号优点:tuple 比 list 速度快;对不需要修改的数据进行写保护,可以是代码更安全tuple 与 list 可以相互转换,使用内置的函数 list()和 tuple()。l = 1, 2, 3print l # 1, 2, 3t = tuple(l)print t # (1, 2, 3)l1 = list(t)print l1 #1, 2, 3元组最通常的用法是用在打印语句,如下例:name = “Peter Zhang“age = 25print “Name: %s; Age: %d“ % (name, age)# Nam
18、e: Peter Zhang; Age: 25函数如下:count(value) - 返回元组中值为 value 的元素的个数t = (1, 2, 3, 1, 2, 3)print t.count(2) # 2index(value, start, stop) - 返回列表中第一个出现的值为 value 的索引,如果没有,则异常 ValueErrort = (1, 2, 3, 1, 2, 3)print t.index(3) # 2try:print t.index(4)except ValueError, ve:print “there is no 4 in tuple“ # there is no 4 in tuple3. 字典字典由键值对组成,键必须是唯一的;eg: d = key1:value1, key2:value2;空字典用表示;字典中的键值对是没有顺序的,如果想要一个特定的顺序,那么使用前需要对它们排序;dkey = value,如果字典中已有 key,则为其赋值为 value,否则添加新的键值对 key/value;使用 del dkey 可以删除键值对;判断字典中是否有某键,可以使用 in 或 not in;d = d“1“ = “one“