zoukankan      html  css  js  c++  java
  • python的模块使用

    •模块是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(' ') \这里如果使用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(' ')
        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

    这就是使用步骤。

    人不努力的时候,老天是会一点点把你的天赋收走的。
  • 相关阅读:
    [每日短篇] 1C
    项目Alpha冲刺 Day12
    项目Alpha冲刺 Day12
    [转载]MVC中单用户登录
    GitLab
    Git 版本控制
    Jenkins持续集成
    Jenkins安装
    Docker 网络基础原理
    java中内存的使用
  • 原文地址:https://www.cnblogs.com/shiyan1sheng/p/7838851.html
Copyright © 2011-2022 走看看