Python2.7.5关键字详解

本文只介绍Python2.7.5的关键字,陆续补充。

 

对于一个初学者,首先要弄清Python中每个关键字的用法。

首先你可以使用以下代码来获得当前版本的关键字:

import keyword
print keyword.kwlist

 

输出关键字列表>>[‘and’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘exec’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘not’, ‘or’, ‘pass’, ‘print’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]

 

 

点击快速可到达:

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

 

 

个人对关键字的解释

如有错误,请指出

 

and、or、not

常用的与( && )、或( || )、非( ! )逻辑运算符,这个就不用说了,每个编程语言都有吧…

as、with

as相似于等号运算符,用于某些语句中对象的赋值。

with是一个控制流语句,一般和as配合使用,格式:with…as…。with可以用来简化try finally代码,看起来可以比try finally更清晰。

看下面的代码你可能会懂。

我们先创建一个拥有__enter__和__exit__方法的类。

class test:
    def __enter__(self):
        print "enter"
        raise EOFError
        return self

    def test1(self):
        print "code..."

    def test2(self):
        print "test Error..."
        raise EOFError

    def __exit__(self,*args):
        print "exit"
        return True

然后我们用with调用它:

with test() as a:
    a.test1()
    a.test2()

它等价于:

self = test()
a = self.__enter__()
try:
    a.test1()
    a.test2()
finally:
    self.__exit__()

如果你还没懂,看这里http://effbot.org/zone/python-with-statement.htm

我们可以用with来处理文件操作或者一些连接数据库的操作,免去忘记关闭的错误。

with open("1.txt" ,"r") as f:
    line = f.read()
    print line

因为open内置函数已经包含了__enter__和__exit__方法。

assert

Python的断言语句,assert判断一个条件是否为真,如果不为真则引发一个AssertionError。

尝试运行以下代码:

a = 1
b = 2
assert a == b

break、continue

用于循环语句for、while的终止循环和跳过循环。

 class

类定义关键字。例:class main:

def

函数定义关键字。例:def main(*args):

del

删除对象关键字,可以删除变量、对象、函数。例:del var

if、elif、else

用于逻辑判断语句。else也用于异常处理。不多说。

try、except、else、finally

四个关键字都用于Python的异常处理。try、except和finally就不说了。主要说else在异常处理语句中的作用。

try:
    block
except [exception,[data...]]:
    block
else:
    block

当try块中的代码执行成功时,才会执行else块中的代码。

一个try…except中只能用一个else语句,但是可以存在多个except。

exec

用于执行Python代码,它不同于内建函数 eval(),eval执行的是表达式 ( eval(“6*3+4*6”) ),exec则执行代码 ( exec “import sys” )。

for、while

用于循环语句。for常与in关键字配合使用。不多说。

from、import、as

三个关键字用于加载模块。可以搭配使用,例:from time import time as t

global

这个关键字用于声明全局变量。在函数代码块中使用。

in

用于判断一个序列中是否存在某元素。常与for配合使用。例:

a = range(10)
for i in a:
    x = x + i

1 in a

is

用于判断对象的内存地址是否相同 (即判断是否为同一对象) 。可以配合not关键字使用。例:classone is not classtwo

lambda

用于创建匿名函数,是个很神奇的函数。由于Python的灵活性,你可以把一个很长的函数块写为一个匿名函数,让你免去缩进的痛苦,但是这个难度比较高- –

lambda返回的是一个函数地址,你可以把它赋给任何一个变量。

看一些例子:

a = lambda x, y: x + y
print a(1,2)

print (lambda x:[0 for i in range(x)])(5)

l = [12, 7, 5, 19, 21]

print map(lambda x: x * 3, l)

 可以看出,lambda能用于很多场合。

pass

创建一个空的占位符,表示Python什么也不做。

print

用于打印一个对象。在Python3.x中,print成为了内置函数。

raise

用于抛出一个异常。这个异常可以自定义。例:raise StopIteration(停止迭代)

return

传递返回值。常用于函数传递返回值。

yield

这也是一个很神奇的关键字。它可以使一个函数成为可迭代的容器!我们称这样的函数叫做生成器。

看一个网上的例子:

如何生成斐波那契數列

斐波那契(Fibonacci)數列是一个非常简单的递归数列,除第一个和第二个数外,任意一个数都可由前两个数相加得到。用计算机程序输出斐波那契數列的前 N 个数是一个非常简单的问题,许多初学者都可以轻易写出如下函数:

 def fib(max): 
    n, a, b = 0, 0, 1 
    while n < max: 
        print b 
        a, b = b, a + b 
        n = n + 1

 执行fid(50),你会发现它一次就把所有的数都输出了。如果你想一个一个的输出怎么办?那么咱们就让这个函数可以迭代!

只需把print关键字换成yield关键字即可。

def fib(max): 
    n, a, b = 0, 0, 1 
    while n < max: 
        yield b 
        a, b = b, a + b 
        n = n + 1

 你会试着运行print fib(50),你只会得到一个类似于<generator object fib at 0x020E5210>的对象地址。因为直接调用生成器返回的是 iterable 对象,而不是迭代的值。那么怎么使用它呢?

我们可以用 generator(生成器)对象( fib(50) )的 next() 方法。

a = fib(50)
print a.next()
print a.next()
print a.next()
print a.next()

这样你每调用一次a.next(),就会返回一个值。当函数执行结束时,generator自动抛出StopIteration异常,说明生成器已经迭代完毕了。

我们看一下生成器的运行机制。在你向生成器获取一个值的时候,生成器会执行代码,出现yield关键字的时候,生成器把yield的参数返回给你,然后生成器会暂停运行。 当你再次向生成器获取值的时候,它会从上次的状态开始运行,直到出现yield语句,把yield的参数返回给你,暂停运行…如此反复直至函数运行结束。

一般使用迭代的时候,都会用到for关键字。

for i in fib(50):
    print i

 这样不用每次都调用生成器的next()方法,而且迭代结束,for循环会自动退出。

Python 2.7.5的关键字也就这么多了。不懂的可以继续百度。欢迎一起讨论!


搬瓦工优质海外服务器购买链接:http://t.cn/Rdru0Ah

使用优惠码 BWH26FXH3HIQ  最高减6%