基础概念

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

特点

  - 模块名与脚本的文件名相同
    例如写一个hello.py的脚本,则可以在另一个脚本中用import hello语句来导入它
  - Python的模块可以按目录组织为包
    创建1个包的步骤:
      - 创建一个名字为包名的目录
      - 在该目录下创建一个__init__.py文件
      - 根据需要,在该目录下存放脚本文件或已编译的扩展及子包
      - import pack.m1,pack.m2,pack.m3
 

扩展

  - Python内置模块的位置存放在(sys.path环境变量中,类似shell中的PATH)
    主要的模块安装在/usr/lib64/python 2.x/下(python-libs包安装的)
  - 自定义Python的模块path
    1、导入sys包,利用append把路径加入path中
      sys.path.append('/tmp')
    2、修改系统变量
      vim ~/.bashrc
      export PYTHONPATH=/tmp
 

例子

    写一个类似wc命令的脚本
#!/usr/bin/env python

def PrintInfo(content):
  chars = len(content)
  words = len(content.split())
  lines = len(content.split('\n'))
  print chars,words,lines string = open('/etc/passwd').read()
PrintInfo(string)
与wc命令对比后发现多了一行,原因是,我们统计行的时候用\n作为分隔符,虽然是三行,三个\n,那么用\n分割后,就为4行了。
改进版:
#!/usr/bin/env python

def PrintInfo(content):
  chars = len(content)
  words = len(content.split())
  lines = content.count('\n')
  print chars,words,lines string = open('/etc/passwd').read()
PrintInfo(string)

这里只需要对\n出现的次数做统计即可。

 

脚本调用

cat 2.py
#!/usr/bin/env python import wc
    那么执行2.py就可以去调用wc.py(当前目录下,没有的话才会去PYTHONPATH中查找),调用完毕后会生成wc.pyc文件,方便下次调用,注意模块名和变量名定义规则相同,不能以数字开头
    如果要调用wc中的PrintInfo模块来处理字符

cat 2.py
#!/usr/bin/env python import wc s = '''hello world
you are superman
are you are
''' wc.PrintInfo(s)
    问题:这样的话,在执行2.py的时候,它也会去执行wc.py,那么同时会去输出wc.py的信息,为了避免这种情况,这里引入python内置变量__name__
则修改后的wc.py为:
#!/usr/bin/env python

def PrintInfo(content):
  chars = len(content)
  words = len(content.split())
  lines = content.count('\n')
  print chars,words,lines if __name__ == '__main__':
  string = open('/etc/passwd').read()
  PrintInfo(string)

注意:__name__是python内置的函数,作用是返回此脚本的执行状态,直接执行此脚本,则__name__返回的是__main__,如果通过其他模块调用,那么返回的是模块名称,所以这里做个判断,如果是调用则不输出原脚本的内容,如果是直接执行此脚本则输出后面的语句。

 

打包

    包是一些按目录组织的模块的集合
    在要打包的目录下创建__init__.py文件,这个文件可以是空的(也可以是包的描述),那么包的名字就是目录的名称,使用的话:from day4 import wc 或者 import day4.wc
    如果只是导入函数,那么使用 from day4.wc import PrintInfo
    在导入的时候还可以给包/函数起个别名 import day4.wc as Test
    注意:导入包的时候,默认它会在当前目录下或者在PYTHONPATH中寻找

Python-模块的使用的更多相关文章

  1. 使用C/C++写Python模块

    最近看开源项目时学习了一下用C/C++写python模块,顺便把学习进行一下总结,废话少说直接开始: 环境:windows.python2.78.VS2010或MingW 1 创建VC工程 (1) 打 ...

  2. Python模块之configpraser

    Python模块之configpraser   一. configpraser简介 用于处理特定格式的文件,其本质还是利用open来操作文件. 配置文件的格式: 使用"[]"内包含 ...

  3. Python模块之"prettytable"

    Python模块之"prettytable" 摘要: Python通过prettytable模块可以将输出内容如表格方式整齐的输出.(对于用Python操作数据库会经常用到) 1. ...

  4. python 学习第五天,python模块

    一,Python的模块导入 1,在写python的模块导入之前,先来讲一些Python中的概念性的问题 (1)模块:用来从逻辑上组织Python代码(变量,函数,类,逻辑:实现一个功能),本质是.py ...

  5. windows下安装python模块

    如何在windows下安装python模块 1. 官网下载安装包,比如(pip : https://pypi.python.org/pypi/pip#downloads) pip-9.0.1.tar. ...

  6. 安装第三方Python模块,增加InfoPi的健壮性

    这3个第三方Python模块是可选的,不安装的话InfoPi也可以运行. 但是如果安装了,会增加InfoPi的健壮性. 目录 1.cchardet    自动检测文本编码 2.lxml    用于解析 ...

  7. Python基础篇【第5篇】: Python模块基础(一)

    模块 简介 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就 ...

  8. python 模块加载

    python 模块加载 本文主要介绍python模块加载的过程. module的组成 所有的module都是由对象和对象之间的关系组成. type和object python中所有的东西都是对象,分为 ...

  9. pycharm安装python模块

    这个工具真的好好,真的很喜欢,它很方便,很漂亮,各种好 pycharm安装python模块:file-setting-搜索project inte OK

  10. Python模块常用的几种安装方式

    Python模块安装方法 一.方法1: 单文件模块直接把文件拷贝到 $python_dir/Lib 二.方法2: 多文件模块,带setup.py 下载模块包,进行解压,进入模块文件夹,执行:pytho ...

随机推荐

  1. dynamic 用法

    private static string GetNameValue(object value) { dynamic obj = value; try { return obj.Name; } cat ...

  2. 关于JSP中<body onload="fun()">body标签中onload中函数不执行问题

    问题描述: 在一个页面中,我们经常会初始化一下数据,而且会在指定的DOM元素初始化数据,这时候我们就会使用<body onload="fun()">来加载我们的数据.o ...

  3. Excel——MATCH函数

    使用 MATCH 函数在范围单元格中搜索特定的项,然后返回该项在此区域中的相对位置. 1.参数说明: MATCH(lookup_value, lookup_array, [match_type]) l ...

  4. 利用FileSystemWatcher实现磁盘文件监控

    马上放假了,好开森啊O(∩_∩)O哈哈~ ——————————————————————————————————————————————————————— 昨天逛园子,发现了一个FileSystemWa ...

  5. 第3月第23天 EAIntroView

    1. EAIntroView,界面和模型分离.EAIntroPage数据模型,EAIntroView界面. https://github.com/ealeksandrov/EAIntroView

  6. web自动化工具-Browsersync

    web自动化工具-Browsersync browser-sync才是神器中的神器,和livereload一样支持监听所有文件.可是和livereload简单粗暴的F5刷新相比,browsersync ...

  7. libvirt 安装篇

    1. 环境:Centos 7     python 2.7 2. 安装 sudo yum install  gcc  python-devel  libvirt libvirt-devel sudo ...

  8. Python读写csv

    读取csv: http://blog.csdn.net/lixiang0522/article/details/7755059 读取Excel: http://www.cnblogs.com/lhj5 ...

  9. remove mysql

    apt-get --purge remove mysql-server mysql-client mysql-common apt-get autoremove rm -rf /etc/mysql r ...

  10. 应用市场中包名(package name)的唯一性

    一般的应用商店,在开发者上传应用(APP)的时候,都会对应用的包名进行唯一性的校验.如果此时,用户上传的应用的包名与数据库中的已有的APP的包名一样,那么正常情况下,该应用就不能上传,而弹出提示说,该 ...