ITS·黑客

【Python】笔记12(偏函数、模块)

2017-04-23  本文已影响2人  阿凯Awesome

偏函数(partial func'),基于functools这一模块,对模块中已有函数的默认参数进行改变,形成新的函数,新形成的函数就是偏函数。

如,int()的默认结构是,int(str,base=10)。这里的base是指所传入返回值的进制,最终返回值以十进制显示。如果改变base的默认数值,如int('12345',base=8)或int('12345',8),base可以省略。

创造偏函数可以免去定义的多步骤,如创建base为2的int类函数int2,int2=functools.partial(int, base=2)      functools.partial()的第一个参数是基本函数,第二个参数是对基本函数中默认参数的重新设定。即使改变了默认参数,int2这还保持了int可以改变默认参数的特性。

*args,**kw在创建偏函数时可以被接受称为可变参数和命名关键字参数。

int2(str)相当于,kw={'base':2},int(str,**kw)

基于max2=functools.partial(max,10),max2(5,6,7)相当于args=(10,5,6,7)

max(*args),结果始终为10


模块(Module),为了减少代码量,和每次定义的麻烦,可以将已经成套的代码保存为.py方便以后的再次使用,这个所保存的代码就可以称为模块。相同函数名的定义函数可以存在不同的模块当中,这个可以省去函数名冲突所带来的麻烦,(不过内置函数是尽量要避免产生相同的)

多个模块,也存在模块名冲突的情况,Python通过目录组织模块来避免这样的冲突,目录涵盖下的所有模块,称为包(Package)。

在导入模块的时候,就要一起将包名也输入,如,原来是import  abc,加入mycompany顶层目录之后是import  mycompany.abc,这个包当中的所有模块以此类推。

另外,每一个包/目录下都会有一个__init__.py文件,这个文件是保证该目录成为特别目录,必须存在的文件,这个文件可以是空的,但它本身是一个模块名为目录名的模块。

目录结构还可以有多级目录,导入时同样以目录名+目录名+模块名的形式导入。

模块命名要避免与Python自带的模块名称冲突,否则这会导致自带模块失效,无法导入。

上一篇下一篇

猜你喜欢

热点阅读