淘先锋技术网

首页 1 2 3 4 5 6 7

逻辑语句

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)

打印及文件操作

print

打印命令。

动态执行

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?没有特定的规则,断言应该用于:

·防御型的编程

·运行时检查程序逻辑

·检查约定

·程序常量

·检查文档