自动化测试

当前位置:首页 > 自动化测试

《Python 核心编程 》(第二版)第一部分 Python 核心 第二章 续

2.14列表解析

这是一个让人欣喜的术语,表示你可以在一-行中使用 一个for循环将所有值放到一个列表当中:

>>> squared ■[x * 2 fo x纽range(411

>>> for 1 n squared:

print↓

列表解析甚至能做更复杂的事情,比如挑选出符合要求的值放入列表。

>>>sqdEvens●[x2forxinrange(8)fntx号2]

>>>

>>> tor 1 in sqdEvens:

prlnt 1

1

3

2.15文件和内建函数 open0、file()

在你已经习惯一门语言的语法之后,文件访问是相当重要的-环。在一一些工作做完之后,将它保存到持久存储是很重要的。

如何打开文件

TopSage. com

handle■open(file nane, accet mode■'r')

file_ mame变量包會我们希望打开的文件的字符申名字,aces mode中Y表示读取,W表示写入,表示添加。其他可能用到的标识还有+表示读写,b表示二进制访问。如果未提供access mode。默认值为Y。如果open0成功,-一个文件对象句柄会被返回。所有后续的文件操作都必须通过此文件句柄进行。当一个文件对象返回之后,我们就可以访问它的一一些方法,比如readlines0和elose).文件对象的方法属性:也必须通过句点属性标识法访问(参阅下面的核心笔记)。

《Python 核心编程 》(第二版)第一部分 Python 核心 第二章 续

下面有一些代码,提示用户输入文件名,然后打开-个文件,并显示它的内容到屏幕上.

fllenane■雄inputl'enter file nane: ')

fobl■open(filenane, '' .

for eachLine in fobj :

print eachLine,

fobj.close()

我们的代码没有用循环-次取- 行显示, 而是做了点改变。我们一-次读入文件地所有行,然后关闭文件,再迭代每- ~行输出。 这样写代码的好处是能够快速完整地访问文件。内容输出和文件访问不必交替进行。这样代码更清晰,而且将不相关的任务区分开来。需要注意的-一点是文件的大小。上面的代码适用于文件大小适中的文件。对于很大的文件来说,上面的代码会 占用太多的内存。这时你最好一-次读-行(下一节有一个好例子)。

我们的代码中另-一个有趣的语句是我们又一次在print语句中使用逗号来抑制自动生成的换行符号。为什么要这样做?因为文件中的每行文本已经自带了换行字符,如果我们不抑制prin语句产生的换行符号,文本在显示时就会有额外的空行产生。

file0内建函数是最近才添加到Python当中的。它的功能等同于open).不过fle)这个名字可以更确切地表明它是一个工厂函数(生成文件对象)。类似于intQ)生成整型对象,dict)生成字典对象。在第9章。我们将详细介绍文件对象和它们的内建方法属性。以及如何访问本地文件系统。请参考第9章以了解详细信息。

2.16错误和异常

编译时会检查语法错误,不过Python 也允许在程序运行时检测错误。当检测到一一个错误,Python解释器就引发-一个异常, 并显示异常的详细信息。程序员可以根据这些信息迅速定位问题并进行调试,并找出处理错误的办法。

要给你的代码添加错误检测及异常处理,只要将它们“封装”在try-except 语句当中。try 之后的代码组,就是你打算管理的代码。except 之后的代码组,则是你处理错误的代码。

try:

tl1enane■raw 1nputl'Enter file nane: "I

fobj ■open(tilenane, '')

fox eachLine i祖n fobj: .

print eachline。

fobj.close()

excapt IOError, e

print 'file open error:'. e

程序员也可以通过使用mise语句故意引发一一个异常。在第10章你可以学到更多有关Python异常的知识。.

2.17函数

类似于其他语言,Python 中的函数使用小括号( 0 )调用。函数在调用之前必須先定义。如果函数中没有return语句,就会自动返回None对象。

Python 是通过引用调用的。这意味着函数内对参数的改变会影响到原始对象。不过事实上只有可变对象会受此影响,对不可变对象来说,它的行为类似按值调用。

2.17.1如何定 义函数

def function name llarguments]); .

”opt ional documentation string"

function buite

定义一个函数的语法由def关键字及紧随其后的函數名。再加上该函數需要的几个参數组成。函数参数(比较上面例子中的arguments) 是可选的。这也是为什么把它们放到中括号中的原因。(在你的代码里千万别写上中括号!)这个语句由一个冒号(:)结束(与if和while语句的结束方式-样),之后是代表函数体的代码组,下面是一 -个简短的例子。

daf nw2Ne(x) :

'apply + operation 如argumnent'

raturn (x + x)

这个函数,做的是“在我的值上加我"的工作.它接受一个对象,将它的值加到自身,然后返回和。对于数值类型参数,它的结果是显而易见的,不过我要在这里指出,加号操作符几乎与所有数据类型工作。换句话说,几乎所有的标准数据类型都支持+操作符,不管是数值相加还是序列合并。

2.17.2如何调用函数

>>> ade2Ne(4.251

8.5

>00

20

>>> 

>>> adMe2He ( Python')

"Eythoneython'

>》>

>>> addMe2Ne([-1, 'abe"ll

[-1。"abc', -1, "abc'1

Python 语言中调用函数与在其他高级语言中- -样。 为函数名加上函数操作符一对小括号。括号之间是所有可选的参数。即使-个参数也没有,小括号也不能省略。注意- 下,t操作符在非数值类型om.中如何工作。


相关内容

文章评论

表情

共 0 条评论,查看全部
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~