十三
函数函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
def fun_add(a,b): return a+b def fun_sub(a,b): return a-b def fun_add_sub(a,b): return fun_add(a,b),fun_sub(a,b) def fun_print(a,b): r_add,r_sub=fun_add_sub(a,b) print('a+b=%s,a-b=%s'%(str(r_add),str(r_sub))) return None fun_print(4.44,3.33) #匿名函数 print('两数之和为',(lambda x1,x2:x1+x2)(3,4))map,filter,reduce
这三个函数是python中比较常用的,体现了一种“函数式编程”的思想。
a=list(range(100)) a=list(filter(lambda x:x%7!=0,a)) a=list(map(str,a)) a=list(filter(lambda x:'7' not in x,a)) a=list(map(lambda x:'key'+x,a)) from functools import reduce a=reduce(lambda x,y:x+','+y,a) print(a)
from functools import reduce a=list(range(100)) a=filter(lambda x:x%7!=0,a) a=map(str,a) a=filter(lambda x:'7' not in x,a) a=map(lambda x:'key'+x,a) a=reduce(lambda x,y:x+','+y,a) print(a)
十四
模块模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 python 标准库的方法。
针对本次的集训课程,大家会用到自己定义模块的时候,基本没有,基本都是在使用别人的模块。
定义模块,并使用自定义模块-
在当前项目的目录里,建立一个文件夹(包):pack_a;
-
在pack_a这个文件夹下,建立一个空文件:__init__.py,这个文件的名称可以告诉python,这个文件夹,是一个包;
-
在pack_a文件夹下建立一个脚本文件funcs.py(模块),在这个文件里,你可以实现各种函数;
-
至此,最简单的包pack_a构建完成,该包只包含一个模块funcs,该模块中包含若干函数;
-
进一步,可以在pack_a文件夹(包)下建立一个子文件夹(子包)pack_b,子包也同样需要包含__init__.py,以及若干个具体的模块(.py)文件;
-
具体的实现,参考本网页根目录下的pythonProject文件夹,如何使用这个包以及其中的模块,参考下面的代码:
#导入模块pack_a.funcs import pack_a.funcs print(pack_a.funcs.add(2,4)) #从包pack_a导入模块funcs from pack_a import funcs print(funcs.sub(2,4)) #从模块pack_a.funcs导入函数add from pack_a.funcs import add print(add(2,4)) #导入pack_a中所有的模块 from pack_a import * print(funcs.add(2,4)) #导入模块并重命名 from pack_a import funcs as a from pack_a.pack_b import funcss as b print(a.add(2,4),a.sub(2,4),b.mul(2,4),b.div(2,4))查看、使用已经安装好的第三方包 查看已安装包
打开cmd命令行窗口,输入pip list,即可查看已经安装的所有python第三方包,及这些包的版本信息。
使用第三方包对于已经安装好的别人的包,例如numpy包:
import numpy as np a=np.ones((2,4),dtype=np.float) print(a)
十五
输入,输出输入输出,主要可以分为,针对控制台的输入输出,和针对文件的输入输出。
python很少用来写控制台输入的程序,所以我不打算介绍这部分知识,针对控制台的输出,大多是用print,用起来也很简单,所以这个部分,我们主要学习以下,针对文件的输入输出,后继内容中,大家很可能需要用到。
读文件#针对小文件,可以一次读进内存 content=open('mips.txt').readlines() print(content[:4]) #content是一个列表,列表的每一个元素对应着文件中的每一行,通过对这个列表做进一步的处理来处理文件。 #针对大文件,可能无法一次读进内存 f=open('mips.txt') s=f.readline() #f.readline()每次读取的是文件的一行内容,到文件末尾时,这个函数返回空字符串。 while s!='': print(len(s.split('t'))) s=f.readline() f.close()写文件
#批量写 content=open('mips.txt').readlines() content=filter(lambda x:len(x.split('t'))<=4,content) open('tmp.txt','w').writelines(list(content)) #一点一点写 f=open('mips.txt') fo=open('tmp.txt','w') s=f.readline() while s!='': if len(s.split('t'))<=4: fo.write(s) s=f.readline() f.close() fo.close()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)