ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

《Python入门指南》第二部分-关键词

《Python入门指南》第二部分-关键词 这属于教程, 于该教程里, 您会去学习语言的基础要点以及更为高级的相关主题。目录#!/usr/bin/env python # keywords.py import sys import keyword print(Python version: , sys.version_info) print(Python keywords: , keyword.kwlist)该脚本打印 版本及其实际的关键词列表。$ ./keywords.py Python version: sys.version_info(major3, minor5, micro2, releaselevelfinal, serial0) Python keywords: [False, None, True, and, as, assert, break, class, continue, def, del, elif, else, except, finally, for, from, global, if, import, in, is, lambda, nonlocal, not, or, pass, raise, return, try, while, with, yield]输出显示了 3.5.2的关键词列表。控制流程该关键词所起到的作用是对节目流程进行控制, while循环当中的语句会被执行, 一直持续到表达式从被取得值的状态。#!/usr/bin/env python # while_kwd.py numbers [22, 34, 12, 32, 4] mysum 0 i len(numbers) while i ! 0: i - 1 mysum mysum numbers[i] print(The sum is:, mysum)在咱们的脚本里头, 咱们打算去算出数字列表里全部值的总和, 咱们借助环路, 咱们确定名单的长度, 循环不断重复去做, 一直到等于零, 在循环的主体部分, 咱们让计数器递减并且计算价值之和。whilewhilei $ ./while_kwd.py The sum is: 104所有价值的总和是104。关键词用于必要时中断循环。break#!/usr/bin/env python # break_kwd.py import random while True: val random.randint(1, 30) print(val, end ) if val 22: break print()拿我们所举的例子讲, 我们去打印随机出现的具有整数性质的数, 当这个数等同于二十二的时候, 循环会被专门用于此场景的特定词汇给强制性停下来, 这个词汇就是break。$ ./break_kwd.py 14 14 30 16 16 20 23 15 17 22如下一个例子所展示的那样, 用到了关键词, 其用途并非跳出整个循环, 却是为了中断当前那个循环, 而此操作开启了一个全新的循环。#!/usr/bin/env python # continue_kwd.py num 0 while num 1000: num num 1 if num % 2 0: continue print(num, end )在示例里头, 我们打印出所有小于一千的数字, 这些数字不能被二除, 并且没有余数。那关键词是个通用控制流方面的关键词, 它惯于去辨别会执行哪种语句, 要是if这个情况。#!/usr/bin/env python # if_kwd.py age 17 if age 18: print(Driving licence issued) else: print(Driving licence not permitted)用于测试该人是否超过18岁的是关键词测试。若条件得以满足, 驾驶执照就会被发放。关键词是可选择的。执行语句应当是在执行else关键字之后执行的, 除非条件是。接下来我们看看如何用关键词组合这些语句。elif#!/usr/bin/env python # elif_kwd.py name Luke if name Jack: print(Hello Jack!) elif name John: print(Hello John!) elif name Luke: print(Hello Luke!) else: print(Hello there!)要是首个测试的那个值呈现为 , 那咱们就接着开展下一个测试。要是不存在任何测试是 , 那么就去执行 else 语句。FalseTrue $ ./elif_kwd.py Hello Luke!该关键词用于遍历 收集以使其出现在容器中。for#!/usr/bin/env python # for_kwd.py lyrics \ Are you really here or am I dreaming I cant tell dreams from truth for its been so long since I have seen you I can hardly remember your face anymore for i in lyrics: print(i, end )示例里, 存在一个变量, 它是曲子的序列。我们会逐个字符对文本加以迭代, 并且打印文本。语句当中的逗号, 起到防止把每个字符打印至新行的作用。$ ./for_kwd.py A r e y o u r e a l l y h e r e o r a m I d r e a m i n g I c a n t t e l l d r e a m s f r o m t r u t h f o r i t s b e e n s o l o n g s i n c e I h a v e s e e n y o u I c a n h a r d l y r e m e m b e r y o u r f a c e a n y m o r e布尔表达式首先我们引入与布尔值和表达式相关的关键词,,, 和 .#!/usr/bin/env python # objects.py print(None None) print(None is None) print(True is True) print([] []) print([] is []) print(Python is Python)操作员进行相等性测试, 关键词是物体身份测试, 不管我们谈论的是不是同一个物体, 请注意, 存在多个变量有可能指向同一个对象, is。$ ./objects.py True True True True False True结果或许会使你觉得意外, 在语言里, 仅有一个, 算是一个物体, 这便是为何与相同且, 不管怎样, 仅有一个真理存在, 空列表等同于另一个空列表, 可它们的确并非全然相同, 将它们置于两个不一样的内存地方, 它们是两个完全不同的对象, 所以, 关键词是返回, 另一方面, 返回, 这是源于优化, 如果两个字符串文字是相等的, 它们会被安置在相同的内存位置, 字符串是不可变的, 故而, 不会造成损害。e is True该关键词否定了布尔值。not#!/usr/bin/env python # not_kwd.py grades [A, B, C, D, E, F] grade L if grade not in grades: print(unknown grade)在我们的例子中我们测试成绩值是否来自 可能的成绩列表。$ ./not_kwd.py unknown grade如果所有条件都属于 必须满足布尔表达式。and#!/usr/bin/env python # and_kwd.py sex M age 26 if age 55 and sex M: print(a young male)于我们所舉之例裡, 我們加以測試, 驗證是否契合兩個條件, 而弦為若變量小於且, 則會被印至控制檯上, 此時變量相等a young maleM$ ./and_kwd.py a young male如果必须满足至少一个条件则使用该关键词。or#!/usr/bin/env python # or_kwd.py name Jack if (name Robert or name Frank or name Jack or name George or name Luke): print(This is a male)如果至少有一个表达式为真则执行 print 语句。使用编程语言以及/或者关键词进行工作之际, 简称为电路评估的操作会开展。短路评估暗示着第二个, 唯有在第一个论元无足够能力去明确表达式的值的情况下: 当“和”以及“的”第一个参数值呈现出假的状态时, 总值必然得是假的当“或”以及“的”第一个论点被判定为真的时候, 总值必定是真实的。以下是一个典型例子。#!/usr/bin/env python # short_circuit.py x 10 y 0 if (y ! 0 and x/y 100): print(a small value)表达式的首部那部分被判定为假, 第二部分的表达式不进行取值, 不然的话, 我们就会获取到一个。模块以下关键词用于模块。模块是我们 整理我们的代码。该关键词用于导入其他模块 变成一个脚本。#!/usr/bin/env python # import_kwd.py import math print(math.pi)经过关键字, 我们把数学模块导入进了命名空间, 这是我们的剧本。而后, 我们对PI值进行打印。倘若我们打算去给予一个模a的表示, 那我们会运用关键字, 不同的别名, as。#!/usr/bin/env python # as_kwd.py import random as rnd for i in range(10): print (rnd.randint(1, 10), end ) print()在此种情形之下, 我们放进随机模, 我们打印十个当中有随机性特质的整数, 我们给随机模配以一个不一样的别名, 也就是 , 在脚本里, 我们借助该模块新的化名, rnd。$ ./as_kwd.py 1 2 5 10 10 8 2 9 7 2该关键词用于导入特定 变量、类或模块中的函数。from#!/usr/bin/env python # from_kwd.py from sys import version print(version)倘若我们要从模块那儿去导入变量, 要是我们有打印的意向, 那可不是非得运用模块名才行。版本变量是直接被导入到我们的命名空间之中的, 我们能够直接去引用它。$ ./from_kwd.py 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)]函数这里, 我们描述和函数有关联的、起到创建新定义用户功能作用的关键词, 函数是我们用来组织代码的对象, def。#!/usr/bin/env python # def_kwd.py def root(x): return x * x a root(2) b root(15) print(a, b)这个例子呈现出了一个全新的、简易的函数, 此函数对一个数字进行平方的运算, 重点在于同函数定义存在关联, 它自下述函数那儿返回一个值, 随后把该值给予变量和。关键词创建了一个新的匿名函数。 匿名函数不绑定特定名称。#!/usr/bin/env python # lambda_kwd.py a lambda x: x * x for i in (1, 2, 3, 4, 5): print(a(i), end ) print()在前述例子里能够看到, 我们并非去创建一个全新的函数与关键词, 与之截然相反的是, 我们选用了当即运用内联功能。def。$ ./lambda_kwd.py 1 4 9 16 25如果我们想访问函数外定义的变量我们使用关键字。#!/usr/bin/env python # global_kwd.py x 15 def function(): global x x 45 function() print(x)通常情况下, 当于函数之内对变量展开赋值操作之后, 我们会去创建出一个全新的并且仅限在该函数范围之内才具备有效性的本地变量, 变量。然而要是我们运用了全局关键词的话, 那就是在函数被定义区之外去实施对一个变量的更改操作, x。$ ./global_kwd.py 45例外接下来我们处理与例外处理相关的关键词。$ cat films Fargo Aguirre, der Zorn Gottes Capote Grizzly man Notes on a scandal这是一个存有一些电影标题的文件, 在代码示例里, 我们要对其进行读取。#!/usr/bin/env python # try_except_finally.py f None try: f open(films, r) for i in f: print(i, end) except IOError: print(Error reading file) finally: if f: f.close()我们尝试去阅读电影档案, 若不存在例外情况, 我们会将内容文件打印至控制台, 此过程可能会出现例外, 比如说, 当我们给出错误的文件名的话在这种情形下, 便会引发例外, 关键词捕捉到异常后, 会执行其代码块, 该关键词最终必然会被执行, 我们借助它来清理资源。在接下来的一个例子当中, 我们会去展示怎样创建用户自己定义的异常, 运用关键词raise。#!/usr/bin/env python # raise_kwd.py class YesNoException(Exception): def __init__(self): print(This is not a yes or no answer) answer y if (answer ! yes and answer ! no): raise YesNoException else: print(Correct value)在示例当中, 我们仅仅期望存在是或者否这样的值, 对于除此之外的其他可能性, 我们提出了例外情况。$ ./raise_kwd.py This is not a yes or no answer Traceback (most recent call last): File ./raise_kwd.py, line 15, in raise YesNoException __main__.YesNoException其他关键词关键词是删除对象。del#!/usr/bin/env python # del_kwd.py a [1, 2, 3, 4] print(a) del a[:2] print(a)对于我们所举的例子而言, 会存在这样一种情况, 即有着一个包含四个整数的列表, 随后会出现这样的行为, 也就是将名单上的第一个号码给删除掉, 最终出现的结果会被印在控制台上。$ ./del_kwd.py [1, 2, 3, 4] [3, 4]关键词毫无作用。非常方便 关键词在某些情况下是。passdef function(): pass我们存在着这样一个功能, 此功能尚没有达成实现, 后续将会出现达成实现的情况由于函数的主体是不允许为空的, 所以我们能够在这儿运用借助关键字, 而非去打印类似于“函数尚未实现”这般的字样。该关键词是被用于调试目的的, 我们能够借助它去测试那些对我们而言是显而易见之中的条件, 比如说, 假如我们存在一个进行薪资计算的程序, 且明明了解薪水是绝不能少于零的, 那么我们便能够将这样一种断言给写入到代码里面的, 倘若这一断言最终失败掉来的, 到时候翻译就会进行抱怨的。#!/usr/bin/env python # assert_kwd.py salary 3500 salary - 3560 # a mistake was done assert salary 0在执行程序时出现了错误。薪资 变为负数。$ ./assert_kwd.py Traceback (most recent call last): File ./assert_kwd.py, line 8, in assert salary 0 AssertionError脚本执行失败时。该关键词用于创建新的用户定义对象。class#!/usr/bin/env python # class_kwd.py class Square: def __init__(self, x): self.a x def area(self): print(self.a * self.a) sq Square(12) sq.area()于代码示例里头, 我们构建一个全新的类, 此后我们进行实例化, 进而创建一个对象, 我们对方形物体 的面积予以计算。关键词动态执行 代码。exec#!/usr/bin/env python # exec_kwd.py exec(for i in [1, 2, 3, 4, 5]: print(i, end ))我们借助for循环, 从列表里打印五个数字, 所有的关键词, exec。$ ./exec_kwd.py 1 2 3 4 5接下来, 我们提及关键词, 关键词测试的问题在于, 序列中是不是有一个居于其中的值, in。#!/usr/bin/env python # in_kwd.py print(4 in (2, 3, 5, 6)) for i in range(25): print(i, end ) print()在这个例子里头, in关键字针对数字4是不是在元组之中进行测试。第二种使用方式是于for循环当中对元组展开遍历。内置函数返回整数0至24这个范围。$ ./in_kwd.py False 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24该关键词与生成器一起使用。yield#!/usr/bin/env python # yield_kwd.py def gen(): x 11 yield x it gen() print(it.__next__())关键词退出生成器并返回一个值。yield$ ./yield_kwd.py 11在教程的这一部分我们已经涵盖了关键词。
返回列表