逻辑语句
is
在python中,is检查两个对象是否是同一个对象,而==检查他们是否相等。
>>> a
= [1]
>>> b = a
>>> c = a
>>> d = [1]
>>> b is c
True
>>> b == c
True
>>> b is d
False
>>> b == d
True
对于数字、字符等,对象和值都相等。
>>>
a='test'
>>> b = a
>>> c = a
>>> d = ’test’
>>> b is c
True
>>> b == c
True
>>> b is d
True
>>> b == d
True
and
逻辑运算符,与运算。
or
逻辑运算符,表示“或”。
not逻辑运算符,表示“非”。
数据结构操作
del
del用于list列表操作,删除一个或连续几个列表元素或者列表本身。
例如:
a = [-1, 3,
'aa', 85, 'bbb', 555]
print a
del a[0]
print a
del a[2:4]
print a
del a
in
判断指定的元素是否存在于列表中。
注意数组和元组(Tuple)用法的区别。
条件语句
if
条件分支语句。
elif
与if连用,表示条件分支。例如:
if ():
do something
elif():
do another thing
else:
write_error_log()
exit()
else
条件分支语句。pass
python里pass用来表示某条件分支不做任何事情。
C/C++中写法:
if(true)
; // do nothing
else
{} // do nothing
python中写法:
if true:
pass # do nothing
else:
print "do something."
循环语句
for
continue
关键字continue跳出本次循环或者break跳出整个for循环。
while
循环的开始。python中while一般用于无限循环,知道某条件达到时推出循环。一般情况下使用for循环。
break
break语句是会立即退出循环,在其后边的循环代码不会被执行。break语句可以用在for循环和while循环语句中。
关键字continue跳出本次循环或者break跳出整个for循环。
yield
带有yield的函数在Python中被称之为generator(生成器),其具体功能是可以当return使用,从函数里返回一个值,不同之处是用yield返回之后,可以让函数从上回yield返回的地点继续执行。也就是说,yield返回函数,交给调用者一个返回值,然后再“瞬移”回去,让函数继续运行,直到下条yield语句再返回一个新的值。
程序引用
import
用来把模块或包导入内存。在Python中所有加载到内存中的模块都存在于sys.modules。
module
通常模块为一个文件,直接使用import从sys.path目录中按照模块名称查找模块文件并加载。可以作为module的文件类型有".py"、".pyo"、".pyc"、".pyd"、".so"、".dll"。
package
通常包总是一个目录,可以使用import导入包,或者from + import来导入包中的部分模块。包目录下为首的一个文件便是__init__.py。然后是一些模块文件和子目录,假如子目录中也有__init__.py那么它就是这个包的子包了。
from
在python用import或者from…import来(从文件中)导入相应的模块。模块其实就一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候,直接把相应的模块导入到我们的程序中,我们就可以使用了。这类似于C语言中的include头文件,Python中我们用import导入我们需要的模块。Python会在以下路径中搜索它想要寻找的模块:1.程序所在的文件夹2.标准库的安装路径3.操作系统环境变量PYTHONPATH所包含的路径
import sys
print('================Python import mode==========================');
print ('The command line arguments are:')
for i in sys.argv:
print (i)
print ('\n The python path',sys.path)
from sys import argv,path #导入特定的成员print('================python from import===================================')
print('path:',path) #因为已经导入path成员,所以此处引用时不需要加sys.path如果你要使用所有sys模块使用的名字,你可以这样:from sys import *
print('path:',path)
打印及文件操作
打印命令。
动态执行
exec
通过exec可以执行动态Python代码,类似Javascript的eval功能;
而Python中的eval函数可以计算Python表达式,但不能为变量赋值;
>>>
exec("print(\"hello, world\")")
hello, world
>>> a = 1
>>> exec("a = 2")
>>> a
2
>>> eval(‘a + 10’)
12
注意区分python中exec、eval、execfile和compile用法。
函数及变量
def用来定义函数。
return
是从python函数返回一个值。
global
定义全局变量。如果在某函数中定义了全局变量,可以在函数之外修改其值。
lambda
它允许你快速定义单行的最小函数,类似与C语言中的宏,这些叫做lambda的函数,是从LISP借用来的,可以用在任何需要函数的地方:
>>> g
= lambda x: x * 2
>>> g(3)
6
>>> (lambda x: x * 2)(3)
6
filter(function, sequence)
对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)返回:
>>>
def f(x): return x % 2 != 0 and x % 3 != 0
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]
>>> def f(x): return x != 'a'
>>> filter(f, "abcdef")
'bcdef'
面向对象
class
Python既是Function Programming语言,又是Object-Oriented语言。Class用来定义类。
异常处理
try…except…
用于捕获异常。
异常信息内容获取的3个方法:
方法一:捕获所有异常
try:
a=b
b=c
except Exception,e:
print Exception,":",e
方法二:采用traceback模块查看异常
#引入python中的traceback模块,跟踪错误import traceback
try:
a=b
b=c
except:
traceback.print_exc()
方法三:采用sys模块回溯最后的异常
如果你还想把这些异常保存到一个日志文件中,可以:把traceback.print_exc()打印在屏幕上的信息保存到一个文本文件中。
import traceback
try:
a=b
b=c
except:
f=open("c:log.txt",'a')
traceback.print_exc(file=f)
f.flush()
f.close()
raise
使用raise抛出异常。
当程序出现错误,python会自动引发异常,也可以通过raise显示地引发异常。一旦执行了raise语句,raise后面的语句将不能执行。
try:
s = None
if s is None:
print "s是空对象"
raise NameError #如果引发NameError异常,后面的代码将不能执行print len(s)
except TypeError:
print "空对象没有长度"
finally
with…as…
替代try...finally...的另一种写法。例如:
file =
open("/tmp/foo.txt")
try:
data = file.read()
finally:
file.close()
改写为:
with open("/tmp/foo.txt")
as file:
data = file.read()
assert
assert是用来检查一个条件,如果它为真,就不做任何事。如果它为假,则会抛出AssertError并且包含错误信息。例如:
py> x = 23
py> assert x > 0, "x is not zero or negative"
py> assert x%2 == 0, "x is not an even number"
Traceback (most recent call last):
File "", line 1, in
AssertionError: x is not an even number
什么时候应该使用assert?没有特定的规则,断言应该用于:
·防御型的编程
·运行时检查程序逻辑
·检查约定
·程序常量
·检查文档