首页 > 代码库 > python_5

python_5

函数,变量

 

 1 def add1(a,b): 2     c=a+b 3     print add1:%s %c 4 def add2(a): 5     print add2:%s %a 6 def add3(): 7     print add3:no  8 def add4(*arr): 9     a,b=arr10     print add4:%s,%s %(a,b)11 add1(1,2)12 add2(4)13 add3()14 add4(100,qwer)
View Code

 

 

注意:

*arr 的 * 是什么意思?
它的功能是告诉 python 让它把函数的所有参数都接受进来, 然后放到名字叫 arr 的列表中去。
和你一直在用的 argv 差不多, 只不过前者是用在函数上面。

============================================================

按行读取文件:

 1 script,file_name = argv 2 print please input your file_name %s %file_name 3  4 open_file = open(file_name) 5  6 def rewind(f): 7     f.seek(0) 8 rewind(open_file) 9 10 def print_line(line_number,f):11     print line_number,f.readline()12     13 current_line = 114 print_line(current_line,open_file)15 current_line = current_line+116 print_line(current_line,open_file)17 current_line = current_line+118 print_line(current_line,open_file)
View Code

注意:

1.为什么文件里会有间隔空行?

readline() 函数返回的内容中包含文件本来就有的 \n,而 print 在打印时又会添加一个 \n,这样一来就会多出一个空行了。

解决方法是在 print 语句结尾加一个逗号 , ,这样 print 就

不会把它自 己的 \n 打印出来了。

2.为什么 seek(0) 没有把 current_line 设为 0?

首先 seek() 函数的处理对象是 字节 而非行,所以 seek(0) 只是转到文件的 0 byte,也就

是第一个 byte 的位置。其次, current_line 只是一个独立变量,和文件本身没有任何关系,

我们只能手动为其增值。

3.readline() 是怎么知道每一行在哪里的?

readline() 里边的代码会扫描文件的每一个字节,直到找到一个 \n 为止, 然后它停止读取

文件,并且返回此前的文件内容。文件 f 会记录每次调用 readline() 后的读取位置,这样它

就可以在下次被调用时读取接下来的一行了。



 

python_5