目录
1.python 2.7 关键字
2. 了解
3.list操作:
4.字典(dictionary)操作
5.MTD了解
1.python 2.7 关键字
上个礼拜通过学习《本方法学习python》开始接触python 2.7,学习了两天,写了一部分代码,今天工作利用测试之余,总结下python 2.7的关键字31个(抄录)
and | del | from | not | while | as | elif |
global | or | with | assert | else | if | pass |
yield | break | except | import | print | class | exec |
in | raise | continue | finally | is | return | def |
for | lambda | try | | | | |
2. 了解
- and:表示逻辑与
- del:用于list列表操作,删除一个或者几个元素
- from:导入相应的模块,用import或者from.....import...
- not:表示逻辑非
- while:循环,一般用于无限循环,but,在项目中这是不允许的必须要有break条件
- 抄录,都没用过)
基本思想:with后跟的所求值的对象中必须有一个__enter__()方法,一个__exit__()方法;
首先,with后面的语句被执行,进入__enter__()函数,然后返回值将被赋值给as后面的变量;
接着执行with...as...后面的代码块,全部被执行完之后,将调用with后面语句中的__exit__()函数。示例如下:
#coding=utf-8
class Sample:
def __enter__(self):
print "In __enter__()"
return "Foo"
def __exit__(self, type, value, trace):
print "In __exit__()"
def get_sample():
return Sample()
with get_sample() as sample:
print "sample:", sample
输出结果:
In __enter__()
sample: Foo
In __exit__()
第一步: __enter__()方法被执行
第二步: __enter__()方法返回的值 - 这个例子中是"Foo",赋值给变量'sample'
第三步:执行代码块,打印变量"sample"的值为 "Foo"
第四步: __exit__()方法被调用;
with真正强大之处是它可以处理异常。可能你已经注意到Sample类的__exit__方法有三个参数- val, type 和 trace。这些参数在异常处理中相当有用。
7.elif :和if配合使用的,if后的另一个if语句
8.global :定义全局变量,通俗理解是:要想给全局变量重新赋值,就要在这个变量前加global,表示是全局变量,与局部同名变量(如果有)区分开;示例如下:
#coding:utf-8
#定义全局变量,变量名全部大写
NAME = "XiaoTian"
#得到NAME值
def get_NAME():
return NAME
#重新设定NAME值
def set_NAME(name_value):
global NAME #使用global 关键字表示这个变量为全局变量
NAME = name_value
print u"输出全局变量NAME的值:",get_NAME() #print u""可以输出中文
new_name = "XiaoXiao"
set_NAME(new_name) #为全局变量重新赋值
print u"输出重新复制后的全局变量NMAE值:",get_NAME()
输出结果:
输出全局变量NAME的值: XiaoTian
输出赋值完的全局变量NMAE的值: XiaoXiao
9. or:表示逻辑或
10. with:和as一起使用,同6.
11.assert:表示断言,用于声明某个条件为真,如果该条件为假,则抛出异常:AssertionError
12.else:看13.
13.if:(注意:if语句中最好不要嵌套if语句,你可以把嵌套的if语句写在另一个函数中)
#coding=utf-8
if a > b:
print "a > b
elif a < b:
print "a < b"
else:
print "a = b"
14.pass: pass的意思就是什么都不做,先占个位子;
用途及理解:当我们写一个软件的框架的时候,具体方法啊,类啊之类的都不写,等着后续工作在做。那么就在方法和类里面加上pass,那样编译起来就不会报错了!就像这样:
#coding=utf-8
#理解pass的用途
def test_pass():pass #如果不加pass,抛出错误:IndentationError: expected an indented block
test_pass()
15. yield :用起来和return很像,但它返回的是一个生成器。可以去看看这个关于Python中的yield
或者请看下面的代码:
#coding=utf-8
#理解yield
def test_yield(n):
for i in range(n): #range(n)表示从0~(n-1),或者range(0,n) in表示i分别后面跟的列表中元素
yield i*2 #每次的运算结果都返回
for j in test_yield(8):
print j,":",
print u"结束理解yield"
##########
#利用yield输出斐波那契数列
##########
def fab(max):
a,b = 0,1
while a < max:
yield a
a, b = b, a+b
print u"斐波那契数列!"
for i in fab(20):
print i,",",
输出结果:
0 : 2 : 4 : 6 : 8 : 10 : 12 : 14 : 结束理解yield
斐波那契数列!
0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 ,
16.break :作用是终止循环,程序走到break的地方就是循环结束的时候;
17.except:和try一起使用,用来捕获异常;
coding=utf-8
try:
block
except [exception,[data…]]:
block
try:
block
except [exception,[data...]]:
block
else:
block
#该Python异常处理语法的规则是:
#1.执行try下的语句,如果引发异常,则执行过程会跳到第一个except语句
#2.如果第一个except中定义的异常与引发的异常匹配,则执行该except中的语句。
#3.如果引发的异常不匹配第一个except,则会搜索第二个 except,允许编写的except数量没有限制。
#4.如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。
#5.如果没有发生异常,则执行else块代码。
example1:
coding=utf-8
#理解except
try:
num = 5/0
except:
print u"计算出错"
输出结果:
计算出错
example2:
coding=utf-8
try:
f = open("file.txt","r") #如果该文件不存在
except IOError, e: #捕获IO异常
print u"IO错误!"
print e #输出错误信息,这里e是错误信息
输出结果:
计算出错
IO错误!
[Errno 2] No such file or directory: 'file.txt'
18.import:用来导入模块,有时这样用from....import
19.print:输出
20.class:定义类
21.exec:(不理解)没弄懂exec语句用来执行储存在字符串或者文件中的python语句。可以生成一个包含python代码的字符串,然后使用exec语句执行这些语句;
22.in:查找列表中是否包含某个元素,或者字符串a是否包含字符串b。需要注意的是:不可以查看list1是否包含list2;
代码如下:
coding=utf-8
#理解in
first_list = [1, 2]
second_list = [1, 2, 3]
element = 1
red = 'red'
red_clothes = "red clothes"
print red in red_clothes #true
print first_list in second_list #false
print element in first_list #true
输出结果:
TRUE
FALSE
TRUE
23.raise:raise可以显示地引发异常。一旦执行raise语句,后面的代码就不执行了
coding=utf-8
#理解raise
try:
raise IOError #这里可以raise一个自定义的错误类。那样就叫做自定义异常了
print u"是否执行?" #不执行,因为执行了try中的raise语句
except IOError:
print "IOError test raise" #会输出
输出结果:
IOError test raise
24. continue:跳过continue后面循环块中的语句,继续进行下一轮循环
25.finally:看到finally语句,必然执行finally语句的代码块;
example:
coding=utf-8
#打开一个文件,但有可能找不到,最终之慈宁宫finally语句块
try:
f = open('xxx')
do something
except:
do something
finally:
f.close()
我们写finally,是因为如果文件打开成功后,因为程序抛出异常最后不能关闭文件,但是需要关闭文件有一个前提就是文件已经打开了。在上段代码中,如果异常发生在f=open(‘xxx’)的时候,比如文件不存在,立马就可以知道执行ffinally中的f.close()语句是没有意义的
修改如下:
coding=utf-8
try:
f = open('xxx')
except:
print 'fail to open'
exit(-1)
try:
do something
except:
do something
finally:
f.close()
26.is:Python中的对象包含三要素:id、type、value
其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值
is判断的是a对象是否就是b对象,是通过id来判断的
==判断的是a对象的值是否和b对象的值相等,是通过value来判断的
coding=utf-8
#理解is
e = 1
es = 1.0
ess = 1
print u"""is就是比对id的值,看是否指向同一对象,
这里需要注意的是:同一对象,不是值相等就是同一对象。"""
print id(e)
print id(es)
print id(ess) #ess和e是指向同一个对象
27.return:用于跳出函数,也可以在跳出的同时返回一个值
28.def:用于定义方法或者说函数
29.for:for....in 一起使用:它在一序列的对象上递归,就是遍历队列中的每个项目
30.lambda:即匿名函数,不用想给函数起什么名字。提升了代码的简洁程度
如下代码:
coding=utf-8
#理解lambda
g = lambda: "lambda test."
print g()
num1 = lambda x, y=1: x + y
print num1(1) #多个变量的时候,可以不给有默认值的变量传值
print num1(10,10) #值得注意的是,如果y没有默认值而且不给它传值的话报错!
输出结果:
lambda test.
2
20
31.try:出现在异常处理中,使用格式为:try...except,try中放想要执行的语句,except捕获异常
3.list操作:
学习资料:list的相关操作
参考上述文章,当中print list[2:3]输出有错,或者改成print list[2:4]
list只能以数字作为索引
4.字典(dictionary)操作
学习资料:字典操作
字典(dict)是一种数据类型,有的语言中叫hash
字典可以用任何作为索引,比如:字符,字符串,数字
5.MTD了解
相关资料:mtd介绍