【Python之旅】第三篇(四):Pythoh模块

说明:

    函数可以将代码的实现细节隐藏起来,而模块则可以在一个py文件中放置多个函数,通过模块的导入,即可调用这多个函数,当然也可以将一个函数作为一个py文件,无论是哪一种方式,这个py文件,都可以称为一个模块。更普遍来说,py文件都可以作为一个模块,通过import导入来进行使用。

    这里说的模块应该是类似于sys或者os之类的模块,而不是普通的py文件。可以将多个python包放在一个目录中,通过__init__的初始化方法制作一个python包,import导入之后即可以使用。

    因此,这里需要提及的应该是下面的内容:

1.模块的制作与调试方法
2.包的制作
3.常用模块的使用方法



1.模块的制作与调试方法


(1)模块的制作

・模块制作如下:

#!/usr/bin/env python

print 'This module is made by xpleaf.'

def sayHi():
	print "Hello, I'm xpleaf"

def Work(work):
	print "Your work is %s" % work

def Salary(money):
	print 'Your salary is %s' % money

・如果直接执行,则只会显示非函数部分:

xpleaf@xpleaf-machine:/mnt/hgfs/Python/day3$ python my_module1.py
This module is made by xpleaf.


(2)模块调试方法


-在交互器中调试

・可以在交互器中导入模块,使用上面的函数功能:

>>> import tab
>>> import my_module1    ===>导入模块不用加.py后缀
This module is made by xpleaf.    ===>非函数部分会直接执行
>>> my_module1.    ===>按tab键会显示该模块下可以执行的方法
my_module1.Salary(            my_module1.__name__
my_module1.Work(              my_module1.__new__(
my_module1.__class__(         my_module1.__package__
my_module1.__delattr__(       my_module1.__reduce__(
my_module1.__dict__           my_module1.__reduce_ex__(
my_module1.__doc__            my_module1.__repr__(
my_module1.__file__           my_module1.__setattr__(
my_module1.__format__(        my_module1.__sizeof__(
my_module1.__getattribute__(  my_module1.__str__(
my_module1.__hash__(          my_module1.__subclasshook__(
my_module1.__init__(          my_module1.sayHi(
>>> my_module1.sayHi()    ===>执行模块中的函数
Hello, I'm xpleaf
>>> my_module1.Work('CEO')
Your work is CEO
>>> my_module1.Work('Student')
Your work is Student
>>> my_module1.Salary('None')
Your salary is None

・也可以只导入该模块中的某个函数:

>>> from my_module1 import sayHi
This module is made by xpleaf.
>>> sayHi()
Hello, I'm xpleaf


-直接在bash中调试

・每次都要进入交互器并且import调试显然有些麻烦;

・可以在模块文件中添加name方法直接在bash中调试;

・上面代码修改如下:

#!/usr/bin/env python

print 'This module is made by xpleaf.'

def sayHi():
	print "Hello, I'm xpleaf"

def Work(work):
	print "Your work is %s" % work

def Salary(money):
	print 'Your salary is %s' % money

if __name__ == '__main__':    #判断被主动执行还被import导入调用
	sayHi()               #主动执行时,将会执行该name语句块后面的内容
	Work('Student')       #import导入调用时,将不会执行该name语句块后面的内容
	Salary('None')

・执行结果如下:

a.直接在bash中执行
xpleaf@xpleaf-machine:/mnt/hgfs/Python/day3$ python my_module1.py
This module is made by xpleaf.
Hello, I'm xpleaf
Your work is Student
Your salary is None

・在交互器中执行与第一种调试方法是一样的;



2.包的制作


・将多个模块文件打包在一起时,考虑使用包;

・my_packets目录下有下面几个模块:

xpleaf@xpleaf-machine:/mnt/hgfs/Python/day3$ ls my_packets/
caculate.py  my_module1.py

・my_dule1.py内容与上面一样,caculate.py代码如下:

#!/usr/bin/env python

print 'This modules can help you to do some caculates.'

def add(num1,num2):
	print '%s + %s is:%s' % (num1,num2,num1+num2)

def cut(num1,num2):
	print '%s - %s is:%s' % (num1,num2,num1-num2)

def multiply(num1,num2):
	print '%s * %s is:%s' % (num1,num2,num1*num2)

def div(num1,num2):
	print '%s / %s is:%s' % (num1,num2,num1/num2)


・要想通过import方法就能导入my_packets包,需要在该目录下创建__init__.py文件,并添加相应内容,演示如下:

xpleaf@xpleaf-machine:/mnt/hgfs/Python/day3$ touch my_packets/__init__.py
xpleaf@xpleaf-machine:/mnt/hgfs/Python/day3$ vim my_packets/__init__.py
__all__ = ['my_module1','caculate']    #使用该包下的模块,需要在这里添加,否则无法使用

・在交互器中演示如下:

>>> import tab
>>> from my_packets import *    ===>导入my_packets包下的所有模块
This module is made by xpleaf.
This modules can help you to do some caculates.
>>> caculate.    ===>便可以使用caculate模块下的相应函数功能
caculate.__class__(         caculate.__reduce__(
caculate.__delattr__(       caculate.__reduce_ex__(
caculate.__dict__           caculate.__repr__(
caculate.__doc__            caculate.__setattr__(
caculate.__file__           caculate.__sizeof__(
caculate.__format__(        caculate.__str__(
caculate.__getattribute__(  caculate.__subclasshook__(
caculate.__hash__(          caculate.add(
caculate.__init__(          caculate.cut(
caculate.__name__           caculate.div(
caculate.__new__(           caculate.multiply(
caculate.__package__        
>>> my_module1.    ===>便可以使用my_module1模块下的相应功能
my_module1.Salary(            my_module1.__name__
my_module1.Work(              my_module1.__new__(
my_module1.__class__(         my_module1.__package__
my_module1.__delattr__(       my_module1.__reduce__(
my_module1.__dict__           my_module1.__reduce_ex__(
my_module1.__doc__            my_module1.__repr__(
my_module1.__file__           my_module1.__setattr__(
my_module1.__format__(        my_module1.__sizeof__(
my_module1.__getattribute__(  my_module1.__str__(
my_module1.__hash__(          my_module1.__subclasshook__(
my_module1.__init__(          my_module1.sayHi(



3.常用模块的使用方法


・可以参考个人相关文档,这里先不作提及。


你可能感兴趣的:(python,模块操作,模块制作与使用)