基础概念

  - 模块是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. linux下如何关闭防火墙?如何查看防火墙当前的状态

    从配置菜单关闭防火墙是不起作用的,索性在安装的时候就不要装防火墙查看防火墙状态:/etc/init.d/iptables status暂时关闭防火墙:/etc/init.d/iptables stop ...

  2. eclipse常用快捷键

    1. ctrl+shift+r:打开资源 这可能是所有快捷键组合中最省时间的了.这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个字母,比如applic*.xm ...

  3. struts2使用annotation注意事项

    struts2使用annotation注意事项 1.包名只能以.action .actions  .struts  .struts2结尾.如:com.cnbolgs.web.actions 2.类名只 ...

  4. Linux学习之六--unZip/Zip的安装及使用

    Linux系统没有自带的压缩解压工具:需要我们自己安装:当用到zip或者unzip如果没有安装就会出现unzip: Command Not Found 或 zip: Command Not Found ...

  5. [2016-10-24]jQuery学习回顾笔记1.0

    一.如何把 jQuery 添加到网页 <script> 标签应该位于页面的 <head> 部分. <head> <script src="jquer ...

  6. BZOJ 2086: [Poi2010]Blocks

    Description 每次可以将大于 \(k\) 的一个数 \(-1\), 在左边或右边的数 \(+1\) ,问最大能得到多长的序列每个数都大于等于 \(k\) . Sol 单调栈. 这道题好神啊q ...

  7. CROSS APPLY应用实例

    --功能说明:统计每个人的平均分数,新字段[AVG_Score]根据PersonID链接到原表[tbiz_AssScore]上 SELECT [ID] ,[ProjectID] ,[PersonID] ...

  8. ubuntu 好玩多了

    从一开始的咒骂,到慢慢的喜欢,ubuntu比CentOs可玩多了.

  9. Thread Safety线程安全

    Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全)之分 如果disabled就选择nts(php_stomp-1.0.9-5.5-nts-vc11-x86.zi ...

  10. 关于 printf() 函数的三张表格

    函数原型: printf(Control-String, item1, item2, ...); 表一  转换说明符及作为结果的打印输出 转 换 说 明 输    出 %a 浮点数.十六进制数字和p- ...