十二、python 模块和包的使用

模块

模块是python组织代码的基本方式。
一个python脚本可以单独运行,也可以导入到另一个脚本中运行,当脚本被导入运行时,我们将其称为模块(module),所有的.py文件都可以作为一个模块导入。
模块名与脚本的文件名相同,例如我们写了一个hello.py的文件,我们在另外一个脚本中可以用Import hello 语句来导入它
python的模块可以按目录组织为包
包的目录下,必须有一个_init_.py文件。

自建sys.path目录,方便以后引入模块:

vim .bashrc
加入:	
export PYTHONPATH=/root/library

source .bashrc
[root@jie ~]# echo $PYTHONPATH
/root/library

此时,我们就可以看到python中 sys.path已经将/root/library 路径引用进去,以后我们可以将模块放入此位置,python会自行去该目录下面搜索

模块使用

创建一个读取文件信息的脚本,用例外一个脚本调用:

vim w.py
#!/usr/bin/python

def wordCount(s):
    chars = len(s)
    words = len(s.split())
    lines = s.count('\n')
    print ("chars:%s,words:%s,lines:%s "%(chars,words,lines))

s=open('/etc/passwd').read()
wordCount(s)

创建另外一个脚本去调用他

vim s.y

#!/usr/bin/env python
import w
s = """hello world
python"""

w.wordCount(s)

此时执行s.py

[root@jie py]# python s.py
chars:1212,words:47,lines:26
chars:19,words:3,lines:1

此时 运行s.py脚本 会输出 w.py的值,也会输出s.py脚本中定义的值

我们需要优化一下,当将一个脚本当成模块调用时,应该去掉该脚本的输出值
调用w.py函数方法:

cat wc.py
#!/usr/bin/python

def wordCount(s):
    chars = len(s)
    words = len(s.split())
    lines = s.count('\n')
    print lines,words,chars

if __name__ == '__main__':
    s=open('/etc/passwd').read()
    wordCount(s)

优化一下调用脚本

cat t.py
#!/usr/bin/python
import wc

t="""hello word py"""
wc.wordCount(t)

此时s.py将调用w.py的方法,并且不会输出w.py的值

[root@jie py]# python w.py
chars:1212,words:47,lines:26
[root@jie py]# python s.py
chars:19,words:3,lines:1

包:

包的名字其实就是目录名字
引用模块:import xxx
引用包下面的模块:from xxx import xxx

目录下面需要有一个__init__.py 文件,文件内容可以为空

[root@jie py]# ls bao/
__init__.py   w.py

[root@jie py]# cat s.py
#!/usr/bin/env python
from bao import w
s = """hello world
python"""

w.wordCount(s)

[root@jie py]# python s.py
chars:19,words:3,lines:1

此时就是 根据目录引用模块了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值