11月4日, 2013 3,143 views次
本文只介绍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什么也不做。
用于打印一个对象。在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%