python关键字详解
本文内容纲要:
今天依旧在啃:《笨方法学python》,其中习题37是复习各种关键字。我本想百度一下记一下就ok了,但是百度出来第一个就Hongten的博客。我才意识到我也有博客,我应该学习他,把这些积累的东西都放到博客中。
主要参考:http://www.cnblogs.com/hongten/p/hongten_python_keywords.html#undefined
python2.7关键字详解:
一共:31个。注意:如果要现在自己电脑中运行我写的这些代码,需要在第一行加上
#coding:utf-8因为我的输出中有中文
**1.and:**表示逻辑‘与’
**2.del:**用于list列表操作,删除一个或者连续几个元素。
**3.from:**导入相应的模块,用import或者from...import
**4.not:**表示逻辑‘非’
**5.while:**while循环,允许重复执行一块语句,一般无限循环的情况下用它。示例如下:
whileTure:
ifa>b:
add()#调用函数求和
else:
print"输入错误!重新输入!"
**6.as:**as单独没有意思,是这样使用:with....as用来代替传统的try...finally语法的。
基本思想是with所求值的对象必须有一个__enter__()方法,一个__exit__()方法。
紧跟with后面的语句被求值后,返回对象的__enter__()方法被调用,这个方法的返回值将被赋值给as后面的变量。当with后面的代码块全部被执行完之后,将调用前面返回对象的__exit__()方法。示例如下:
classSample:
def__enter__(self):
print"In__enter__()"
return"Foo"
def__exit__(self,type,value,trace):
print"In__exit__()"
defget_sample():
returnSample()
withget_sample()assample:
print"sample:",sample
输出结果:
In__enter__()
sample:Foo
In__exit__()
第一步:__enter__()方法被执行
第二步:__enter__()方法返回的值-这个例子中是"Foo",赋值给变量'sample'
第三步:执行代码块,打印变量"sample"的值为"Foo"
第四步:__exit__()方法被调用with真正强大之处是它可以处理异常。可能你已经注意到Sample类的__exit__方法有三个参数-val,type和trace。这些参数在异常处理中相当有用。
你也可以参考这里:http://zhoutall.com/archives/325
**7.elif:**和if配合使用的,if语句中的一个分支用elif表示。
**8.global:**定义全局变量,我的理解就是:要想给全局变量重新赋值,就要global一下全局变量(相当于告诉你:哦,注意了!下面我要设定全局变量的值的),之后在重新赋值。示例如下:
#coding:utf-8
#################
#习题37:复习各种符号
#################
#前言
#
#熟悉global
#定义全局变量,变量名全部大写
NAME="xueweihan"
#得到NAME值
defget_NAME():
returnNAME
#重新设定NAME值
defset_NAME(name_value):
globalNAME
NAME=name_value
printu"输出全局变量NAME的值:",get_NAME()
new_name="521xueweihan"
set_NAME(new_name)#为全局变量重新赋值
printu"输出赋值完的全局变量NMAE的值:",get_NAME()
输出结果:
输出全局变量NAME的值:xueweihan
输出赋值完的全局变量NMAE的值:521xueweihan
**9.or:**表示逻辑“或”
**10.with:**和as一起用,使用的方法请看as,在上面!
**11.assert:**表示断言(断言一个条件就是真的,如果断言出错则抛出异常)用于声明某个条件为真,如果该条件不是真的,则抛出异常:AssertionError
**12.else:**看下面if的解释
**13.if:**if语句用于选择分支,依据条件选择执行那个语句块。(这里多说一句:if语句中最好不要嵌套if语句,你可以把嵌套的if语句写在另一个函数中)
ifa>b:
print"a>b
elifa<b:
print"a<b"
else:
print"a=b"
**14.pass:**pass的意思就是什么都不做。用途及理解:当我们写一个软件的框架的时候,具体方法啊,类啊之类的都不写,等着后续工作在做。那么就在方法和类里面加上pass,那样编译起来就不会报错了!就像这样:
#理解pass的用途
deftest_pass():pass#如果不加pass,抛出错误:IndentationError:expectedanindentedblock
test_pass()
**15.yield:**用起来和return很像,但它返回的是一个生成器。我这样说不是很生动。你可以去看看这个关于Python中的yield(最后写的那个斐波那契,我觉得他就是大神),或者请看下面的代码:
#理解yield
deftest_yield(n):
foriinrange(n):
yieldi*2#每次的运算结果都返回
forjintest_yield(8):
printj,":",
printu"结束理解yield"
#利用yield输出斐波那契数列
##########
#看这里,太厉害了,不是我写的。。。。
##########
deffab(max):
a,b=0,1
whilea<max:
yielda
a,b=b,a+b
printu"斐波那契数列!"
foriinfab(20):
printi,",",
输出结果:
0:2:4:6:8:10:12:14:结束理解yield
斐波那契数列!
0,1,1,2,3,5,8,13,
**16.break:**作用是终止循环,程序走到break的地方就是循环结束的时候。(有点强行终止的意思)注意:如果从for或while循环中终止(break)之后,else语句不执行。
**17.except:**和try一起使用,用来捕获异常。
- try:
- block
- except[exception,[data…]]:
- block
- try:
- block
- except[exception,[data...]]:
- block
- else:
- block
该种Python异常处理语法的规则是:
◆执行try下的语句,如果引发异常,则执行过程会跳到第一个except语句。
◆如果第一个except中定义的异常与引发的异常匹配,则执行该except中的语句。
◆如果引发的异常不匹配第一个except,则会搜索第二个except,允许编写的except数量没有限制。
◆如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。
◆如果没有发生异常,则执行else块代码。
第一种格式:
#理解except
try:
num=5/0
except:
printu"计算出错"
第二种:
try:
f=open("file.txt","r")#如果该文件不存在
exceptIOError,e:#捕获IO异常
printu"IO错误!"
printe#输出错误信息,这里e是错误信息
输出结果:
计算出错
IO错误!
[Errno2]Nosuchfileordirectory:'file.txt'
**18.import:**用来导入模块,有时这样用from....import
**19.print:**输出
**20.class:**定义类
21exec:我还没弄懂exec语句用来执行储存在字符串或者文件中的python语句。可以生成一个包含python代码的字符串,然后使用exec语句执行这些语句。
**22.in:**查找列表中是否包含某个元素,或者字符串a是否包含字符串b。**需要注意的是:**不可以查看list1是否包含list2。代码如下:
#理解in
first_list=[1,2]
second_list=[1,2,3]
element=1
red='red'
red_clothes="redclothes"
printredinred_clothes#true
printfirst_listinsecond_list#false
printelementinfirst_list#true
输出结果为:
True
False
True
**23.raise:**raise可以显示地引发异常。一旦执行raise语句,后面的代码就不执行了
#理解raise
try:
raiseIOError#这里可以raise一个自定义的错误类。那样就叫做自定义异常了
printu"是否执行?"#不执行
exceptIOError:
print"IOErrortestraise"
输出结果如下:
IOErrortestraise
**24.continue:**跳过continue后面循环块中的语句,继续进行下一轮循环。
**25.finally:**看到finally语句,必然执行finally语句的代码块。
python异常总结,请看下面的代码:
One:
#打开一个文件,但有可能找不到
try:
f=open('xxx')
dosomething
except:
dosomething
finally:
f.close()
Two:
try:
f=open('xxx')
except:
print'failtoopen'
exit(-1)
try:
dosomething
except:
dosomething
finally:
f.close()
我们为什么要写finally,是因为防止程序抛出异常最后不能关闭文件,但是需要关闭文件有一个前提就是文件已经打开了。
在第一段错误代码中,如果异常发生在f=open(‘xxx’)的时候,比如文件不存在,立马就可以知道执行f.close()是没有意义的。改正后的解决方案就是第二段代码。
**26.is:**Python中的对象包含三要素:id、type、value
其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值
is判断的是a对象是否就是b对象,是通过id来判断的
==判断的是a对象的值是否和b对象的值相等,是通过value来判断的
#理解is
e=1
es=1.0
ess=1
printu"""is就是比对id的值,看是否指向同一对象,
这里需要注意的是:同一对象,不是值相等就是同一对象。"""
printid(e)
printid(es)
printid(ess)
**27.return:**用于跳出函数,也可以在跳出的同时返回一个值。
**28.def:**用于定义方法
**29.for:**for....in一起使用:它在一序列的对象上递归,就是遍历队列中的每个项目
**30.lambda:**即匿名函数,不用想给函数起什么名字。提升了代码的简洁程度。如:
#理解lambda
g=lambda:"lambdatest."
printg()
num1=lambdax,y=1:x+y
printnum1(1)#多个变量的时候,可以不给有默认值的变量传值
printnum1(10,10)#值得注意的是,如果y没有默认值而且不给它传值的话报错!
输出结果:
lambdatest.
2
20
**31.try:**出现在异常处理中,使用格式为:try...except,try中放想要执行的语句,except捕获异常
代码见,25.
ok了,我要断电了,有几点没懂地方明天补全。边学边写,写了一下午T.T
终于完成了,在写这篇博客的过程中我学习到了很多:有些知道什么意思的语句,但是就是不会用自己的话说,参考了别人的博客之后。能够顺利的表达明白了。写博客真的很涨知识啊!
本文内容总结:
原文链接:https://www.cnblogs.com/xueweihan/p/4518022.html