•模块是Python组织代码的基本方式。
•一个Python脚本可以单独运行,也可以导入到另一个脚本中运行,当脚本被导入运行时,我们将其称为模块(module)。
•所有的.py文件都可以作为一个模块导入

 

•模块名与脚本的文件名相同
•例如我们编写了一个名为hello.py的脚本,则可以在另一个脚本中用import  hello语句来导入它。

 

 如果需要添加模块目录:即使python可以直接读取而不需要指定路径,使用sys.path(该指令是查询python命令调取目录的)可以查询到的路径。方法有两种:

一:直接在ipython中使用命令:In [4]: sys.path.append('/root'),来添加,然后再次查看就有/root目录,默认添加在最后。

二:修改环境变量:目录 /root/.bashrc 

 export PYTHONPATH=/root

手动让它执行生效:source /root/.bashrc或  . /root/.bashrc

使用:echo $PYTHONPATH查看。如果使用ipython查看,则需要在ipython所在终端刷新使其生效。 

 vim module_text.py

#!/usr/bin/python
 
def wordCount(s):
    chars = len(s)
    words = len(s.split())
    lines = s.count('\n') \\这里如果使用s.split则会因为换行符出现空字符串
    print lines, words, chars
 
s = open('/etc/passwd').read()
wordCount(s)

 输出:

[root@master xiaojing]# python module_text.py 
34 53 1629
[root@master xiaojing]# wc /etc/passwd
  34   53 1629 /etc/passwd
将python文件作为模块导入使用:
[root@master xiaojing]# python 2.py 
34 53 1629
[root@master xiaojing]# ls
2.py  module_text.py  module_text.pyc
[root@master xiaojing]# cat 2.py 
#!/usr/bin/python
import module_text

 这里module_text.pyc该文件为编译过的文件。

 如果再2.py文件的里面不仅是调用模块module_text,还有其他的程序需要执行则:即文件内容为:

[root@master xiaojing]# cat 2.py 
#!/usr/bin/python
import module_text
s = '''hello world
python'''
module_text.wordCount(s)
执行结果却是:
[root@master xiaojing]# python 2.py 

 

34 53 1629
1 3 18
这里的结果并不是我想要的,因为除了执行2.py文件,居然把模块文件的内容也执行出来了。那么我们就需要进行修改:通过" __name__ "这个内置函数来实现:
[root@master xiaojing]# cat module_text.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)

 通过这样的操作可知道:可以在不影响元文件的执行情况下,调用该文件内的模块。

 

 模块概念之后,可以  包  的概念:首先要有一个目录,里面有一个名字为 __init__ 的空文件,且目录名即包名。

使用包:模块的例子。module_text所在目录下创建空文件 __init__。这两个文件所在目录就是一个包。语法:

from  xiaojing import module_text    \\这里也可以写成:import xiaojing.module_text。这里就是导入方式不同。还可以使用as进行取别名:from xiaojing.module_text import wordCount as wc 使用则是wc('aaa')就可以执行

module_text。wordCount('abc')

0 1 3

这就是使用步骤。

 

posted on 2017-11-15 14:41  shiyan1sheng  阅读(145)  评论(0编辑  收藏  举报