几个特点:可扩展、可移植性、易学、易读、易维护、健壮性
1.在Python 中未指定返回值的函数会自动返回None,等价于NULL
2.Python 不支持C 语言中的自增1 和自减1 运算符, 这是因为 + 和 - 也是单目运算符,
Python 会将 --n 解释为-(-n) 从而得到 n , 同样 ++n 的结果也是 n.
3.print语句
在print 语句中使用逗号来抑制自动生成的换行符号。
字符串替换功能:print "%s is number %d!" % ("Python",1) 这一点和C语言中的printf()函数非常相似import sys print >> sys.stderr,'Fatal error:invalid input!'重定向到日志文件:
logfile=open('/temp/mylog.txt','a') print >> logfile,'Fatal error:invalid input!' logfile.close()4.raw_input()内建函数,读取标准输入,并将读取到的数据赋值给指定的变量
user=raw_input('Enter login name:') print 'Your login is:',user
5.小技巧help()内建函数,如果需要得到一个生疏函数的帮助,只需要对它调用内建函数help()就会得到相应的帮主信息
help(raw_input)
6.注释#,python采用#进行注释
7.逻辑运算符 and or not
3 < 4 < 5 //在python中是合法的,更简洁优美,其实这个表达式本质上是由多个隐式的 and 连接起来的多个表达式。
8.字符串
使用索引运算符( [ ] )和切片运算符( [ : ] )可以得到子字符串。
加号( + )用于字符串连接运算,星号( * )则用于字符串重复。
9.列表和元组
列表和元组可以存储不同类型的对象
列表和元组有几处重要的区别。列表元素用中括号( [ ])包裹,元素的个数及元素的值可以改变。元组元素用小括号(( ))包裹,不可以更改(尽管他们的内容可以)。元组可以看成是只读的列表。通过切片运算( [ ] 和 [ : ] )可以得到子集,这一点与字符串的使用方法一样。
10.字典
字典元素用大括号({ })包裹。
11.if语句
与其它语言不同, 条件条达式并不需要用括号括起来。
Python 还支持 elif (意指 “else-if ”)语句。
12.for ... in ... 迭代
13.range()和enumerate()函数
foo = 'abc' for i in range(len(foo)): print foo[i], '(%d)' % i for i, ch in enumerate(foo): print ch, '(%d)' % i
14.列表解析
你可以在一行中使用一个for 循环将所有值放到一个列表当中:
squared = [x ** 2 for x in range(4)] for i in squared: print i
做更复杂的事情, 比如挑选出符合要求的值放入列表:
sqdEvens = [x ** 2 for x in range(8) if not x % 2]
15.文件和内建函数open() 、file()
打开文件:handle = open(file_name, access_mode = 'r')
access_mode 中 'r' 表示读取,'w' 表示写入, 'a' 表示添加。其它可能用到的标声还有 '+' 表示读写, 'b'表示二进制访问. 如果未提供 access_mode , 默认值为 'r'。如果 open() 成功, 一个文件对象句柄会被返回。所有后续的文件操作都必须通过此文件句柄进行。
16.异常
要给你的代码添加错误检测及异常处理, 只要将它们封装在 try-except 语句当中。
也可以通过使用 raise 语句故意引发一个异常。
17.函数
Python 是通过引用调用的。 这意味着函数内对参数的改变会影响到原始对象。不过事实上只有可变对象会受此影响, 对不可变对象来说, 它的行为类似按值调用。
def foo(debug=True): //函数的参数可以有一个默认值18.类
当一个类实例被创建时, __init__() 方法会自动执行, 在类实例创建完毕后执行, 类似构建函数。__init__() 可以被当成构建函数, 不过不象其它语言中的构建函数, 它并不创建实例--它仅仅是你的对象创建后执行的第一个方法。它的目的是执行一些该对象的必要的初始化工作。通过创建自己的 __init__() 方法, 你可以覆盖默认的 __init__()方法(默认的方法什么也不做),从而能够修饰刚刚创建的对象。
self关键字相当于Java中的this
创建一个类实例就像调用一个函数,不需要像Java一样的new关键字。
19.一些实用内建函数
dir([obj]) 显示对象的属性,如果没有提供参数, 则显示全局变量的名字
help([obj]) 以一种整齐美观的形式 显示对象的文档字符串, 如果没有提供任何参数, 则会进入交互式帮助。
int(obj) 将一个对象转换为整数
len(obj) 返回对象的长度
open(fn, mode) 以 mode('r' = 读, 'w'= 写)方式打开一个文件名为 fn 的文件
range([[start,]stop[,step]) 返回一个整数列表。起始值为 start, 结束值为 stop - 1; start默认值为 0, step默认值为1。
raw_input(str) 等待用户输入一个字符串, 可以提供一个可选的参数 str 用作提示信息。
str(obj) 将一个对象转换为字符串
type(obj) 返回对象的类型(返回值本身是一个type 对象!)
20.语句符号
反斜线 ( \ ) 继续上一行
分号 ( ; )将两个语句连接在一行中
冒号 ( : ) 将代码块的头和体分开
语句(代码块)用缩进块的方式体现,四个空格非常流行,不推荐使用Tab
不同的缩进深度分隔不同的代码块
21.Python 中下划线的特殊用法
_xxx 不用'from module import *'导入
_xxx__系统定义名字
_xxx 类中的私有变量名
核心风格:避免用下划线作为变量名的开始
因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避免用下划线作为变量名的开始。一般来讲,变量名_xxx 被看作是“私有的”,在模块或类外不可以使用。当变量是私有的时候,用_xxx 来表示变量是很好的习惯。因为变量名__xxx__对Python 来说有特殊含义,对于普通的变量应当避免这种命名风格。
22.使用局部变量替换模块变量
让你的程序跑的更快的技巧: 将经常用到的模块属性替换为一个本地引用。
23.一些有用的模块
调试模块: Debugger: pdb
日志模块 Logger: logging
性能测试模块 Profilers: profile, hotshot, cProfile