【Python学习笔记之一】Python关键字及其总结

前言

最近在学习Java Sockst的时候遇到了一些麻烦事,我觉得我很有必要重新研究学习Python这种脚本语言,参考大神的经验,淘到了一本学习Python的好书《"笨方法"学Python》,我决定花很长一段时间重新学习一下Python,把自己的一些总结经验以及积累的一些东西放到博客上,大家可以一起互相学习讨论...不足的地方还望大家能够提出来,我进行适当的增添删补...完善本文

正文

python2.7关键字及其总结:

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

一共:31个。注意:如果要现在自己电脑中运行我写的这些代码,需要在第一行加上

#coding:utf-8 因为我的输出中有中文

1.and:表示逻辑‘与’

2.del:用于list列表操作,删除一个或者连续几个元素。

3.from:导入相应的模块,用import或者from...import

4.not:表示逻辑‘非’

5.while:while循环,允许重复执行一块语句,一般无限循环的情况下用它。示例如下:

while Ture:
    if a > b:
        add()#调用函数求和
    else:
        print "输入错误!重新输入!"

6.as:as单独没有意思,是这样使用:with....as用来代替传统的try...finally语法的。

基本思想是with所求值的对象必须有一个__enter__()方法,一个__exit__()方法。

紧跟with后面的语句被求值后,返回对象的__enter__()方法被调用,这个方法的返回值将被赋值给as后面的变量。当with后面的代码块全部被执行完之后,将调用前面,返回对象的__exit__()方法。示例如下:

 1 class Sample:
 2     def __enter__(self):
 3         print "In __enter__()"
 4         return "Foo"
 5  
 6     def __exit__(self, type, value, trace):
 7         print "In __exit__()"
 8  
 9  
10 def get_sample():
11     return Sample()
12  
13  
14 with get_sample() as sample:
15     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语句中的一个分支用elif表示。

8.global :定义全局变量,我的理解就是:要想给全局变量重新赋值,就要global一下全局变量(相当于告诉你:哦,注意了!下面我要设定全局变量的值的),之后在重新赋值。示例如下:

 1 #coding:utf-8
 2 #################
 3 #################
 4 #熟悉global
 5 #定义全局变量,变量名全部大写
 6 NAME = "xueweihan"
 7 #得到NAME值
 8 def get_NAME():
 9     return NAME  
10 #重新设定NAME值
11 def set_NAME(name_value):
12     global NAME
13     NAME = name_value
14 print u"输出全局变量NAME的值:",get_NAME()
15 new_name = "521xueweihan"
16 set_NAME(new_name)#为全局变量重新赋值
17 print u"输出赋值完的全局变量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语句写在另一个函数中)

if a > b:
    print "a > b
elif a < b:
    print "a < b"
else:
    print "a = b"

14.pass:pass的意思就是什么都不做。用途及理解:当我们写一个软件的框架的时候,具体方法啊,类啊之类的都不写,等着后续工作在做。那么就在方法和类里面加上pass,那样编译起来就不会报错了!就像这样:

#理解pass的用途
def test_pass():pass  #如果不加pass,抛出错误:IndentationError: expected an indented block

test_pass()

15.yield:用起来和return很像,但它返回的是一个生成器。我这样说不是很生动。我将会在下一节重点谈一谈关于Python中的yield,请先参考看下面的代码:

 1 #理解yield
 2 def test_yield(n):
 3     for i in range(n):
 4         yield i*2#每次的运算结果都返回
 5               
 6 for j in test_yield(8):
 7     print j,":",
 8 print u"结束理解yield"   
 9 #利用yield输出斐波那契数列
10 ##########
11 def fab(max):
12     a,b = 0,1
13     while a < max:
14         yield a
15         a, b = b, a+b
16 print u"斐波那契数列!"
17 for i in fab(20):
18     print i,",",

输出结果:

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:
    print u"计算出错"

第二种:

1 try:  
2    f = open("file.txt","r")  #如果该文件不存在
3 except IOError, e:  #捕获IO异常
4    print u"IO错误!"
5    print e                #输出错误信息,这里e是错误信息

输出结果:

计算出错
IO错误!
[Errno 2] No such file or directory: 'file.txt'

18.import:用来导入模块,有时这样用from....import

19.print:输出

20.class:定义类

21exec:exec语句用来执行储存在字符串或者文件中的python语句。可以生成一个包含python代码的字符串,然后使用exec语句执行这些语句。

22.in:查找列表中是否包含某个元素,或者字符串a是否包含字符串b。需要注意的是:不可以查看list1是否包含list2。代码如下:

 1 #理解in
 2 first_list = [1, 2]
 3 second_list = [1, 2, 3]
 4 element = 1
 5 red = 'red'
 6 red_clothes = "red clothes"
 7 
 8 print red in red_clothes #true
 9 print first_list in second_list  #false
10 print element in first_list      #true

输出结果为:

True
False
True

23.raise:raise可以显示地引发异常。一旦执行raise语句,后面的代码就不执行了

#理解raise
try:
    raise IOError #这里可以raise一个自定义的错误类。那样就叫做自定义异常了
    print u"是否执行?" #不执行
except IOError:
    print "IOError test raise"

输出结果如下:

IOError test raise

24.continue:跳过continue后面循环块中的语句,继续进行下一轮循环。

25.finally:看到finally语句,必然执行finally语句的代码块。

python异常总结,请看下面的代码:

One:

1 #打开一个文件,但有可能找不到
2 try:
3     f = open('xxx')
4     do something
5 except:
6     do something
7 finally:
8     f.close()

Two:

 1 try:
 2     f = open('xxx')
 3 except:
 4     print 'fail to open'
 5     exit(-1)
 6 try:
 7     do something
 8 except:
 9     do something
10 finally:
11     f.close()

我们为什么要写finally,是因为防止程序抛出异常最后不能关闭文件,但是需要关闭文件有一个前提就是文件已经打开了。 在第一段错误代码中,如果异常发生在f=open(‘xxx’)的时候,比如文件不存在,立马就可以知道执行f.close()是没有意义的。改正后的解决方案就是第二段代码。

26.is:Python中的对象包含三要素:id、type、value

其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值

is判断的是a对象是否就是b对象,是通过id来判断的 ==判断的是a对象的值是否和b对象的值相等,是通过value来判断的

1 #理解is
2 e = 1
3 es = 1.0
4 ess = 1
5 print u"""is就是比对id的值,看是否指向同一对象,
6 这里需要注意的是:同一对象,不是值相等就是同一对象。"""
7 print id(e)
8 print id(es)
9 print id(ess)

27.return:用于跳出函数,也可以在跳出的同时返回一个值。

28.def:用于定义方法

29.for:for....in 一起使用:它在一序列的对象上递归,就是遍历队列中的每个项目

30.lambda:即匿名函数,不用想给函数起什么名字。提升了代码的简洁程度。如:

1 #理解lambda
2 g = lambda :"lambda test."
3 print g()
4 num1 = lambda x, y=1:x + y
5 print num1(1)      #多个变量的时候,可以不给有默认值的变量传值
6 print num1(10,10)  #值得注意的是,如果y没有默认值而且不给它传值的话报错!

输出结果:

lambda test.
2
20

31.try:出现在异常处理中,使用格式为:try...except,try中放想要执行的语句,except捕获异常

到此本文已把所有的31个关键字进行了一个简要的概述,后续文章我将会对其中比较重要的几个关键字进行详细的阐述说明理解,我也会尽我所能去进一步去对书中的概念进行深入理解,希望能够总结出更好的文章分享给大家。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏章鱼的慢慢技术路

容易出错的 if 语句

1226
来自专栏用户2442861的专栏

Python yield 使用浅析

您可能听说过,带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ?

851
来自专栏Celebi的专栏

C/C++ 学习笔记七(内存管理)

工作中经常使用到C/C++,为对C有个比较深刻的了解,重新拾起学习C的任务。在看书的同时,记录下思考的过程,也记录下重要的知识点。

2670
来自专栏zlmai的专栏

C++中关于几种输入方法的总结

C++中有很多关于输入的函数,比如cin、cin.get()、cin.getline()、getline()、gets()等等,很容易搞混,下面分别总结下,欢迎...

2375
来自专栏乐百川的学习频道

Python学习笔记 输入输出

str和repr内置函数 在介绍Python的输入输出之前,我们先来介绍两个内置函数,str()和repr(),它们都用来输出对象的字符串形式。不过它们之间有一...

2908
来自专栏Java技术分享

Redis常用命令整理

        *    匹配任意个(包括0个)字符

2349
来自专栏Java技术分享

Redis常用命令整理

doc 环境下使用命令:     keys 命令         ?    匹配一个字符         *    匹配任意个(包括0个)字符         ...

2267
来自专栏云霄雨霁

Java虚拟机--Class文件结构

1715
来自专栏大神带我来搬砖

在python中像java一样反射——动态实例化指定包下面所有的类

在项目中需要在python中把某个包下面所有的类都实例化一个对象,把这些对象放到一个集合中,在java中可以通过反射机制来实现,先获得这个包下面所有的Class...

4107
来自专栏Petrichor的专栏

Python: 全局变量 & 局部变量的使用

  码Python代码时,想用全局变量,报了错。所以上网查了相关文档,总结出 以下几点 :

1392

扫码关注云+社区

领取腾讯云代金券