python关键字详解_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、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__()

我们可以用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),你只会得到一个类似于的对象地址。因为直接调用生成器返回的是 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的关键字也就这么多了。不懂的可以继续百度。欢迎一起讨论!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值