基础概念

  - 模块是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. 【先定一个小目标】怎么解决mysql不允许远程连接的错误

    最近使用Navicat for MySQl访问远程mysql数据库,出现报错,显示“1130 - Host'xxx.xxx.xxx.xxx' is not allowed to connect to ...

  2. java enum

    小谈Java Enum的多态性 博客分类: Java JavaAppleJDKJVMIDEA  Enum+多态,我没说错,不过Enum是不可以被继承的,也不可以继承自别人,只是能实现接口而已,何谈多态 ...

  3. mysql-开启慢查询&所有操作记录日志

    在运营网站的过程中,可能会遇到网站突然变慢的问题,一般情况下和 MySQL 慢有关系,可以通过开启慢查询,找到影响效率的 SQL ,然后采取相应的措施.下面介绍一下如何开启慢查询: 1.开启慢查询 找 ...

  4. thinkphp如何一次性的上传多个文件,在文件域中可以多选?

    可以做到类似于某度网盘的样式吗? 文件夹的命名, 可以用单数, 也可以用复数, 在同一个项目中, 只要统一就好了. 毕竟项目开发不同于英语写作. 建议使用缩写, 不管是不是缩写都用单数, 这样简洁,容 ...

  5. js 也来 - 【拉勾专场】抛弃简历!让代码说话!

    前些日子谢亮兄弟丢了一个链接在群里,我当时看了下,觉得这种装逼题目没什么意思,因为每种语言都有不同的实现方法,你怎么能说你的方法一定比其他语言的好,所以要好的思路 + 好的语言特性运用才能让代码升华. ...

  6. Postgresql 简单配置 (ubuntu server 14.04.3)

    安装和配置 ubuntu server 已经自动安装了progresql,故安装步骤就省略 初始postgresql没有密码,不能使用,需要先设置密码,命令(从网上随意找的)如下: sudo su p ...

  7. WPF程序将DLL嵌入到EXE的两种方法

    WPF程序将DLL嵌入到EXE的两种方法 这一篇可以看作是<Visual Studio 版本转换工具WPF版开源了>的续,关于<Visual Studio 版本转换工具WPF版开源了 ...

  8. Java 压缩/ 解压 .Z 文件

    1.问题描述 公司项目有需要用 JAVA 解压 .z文件. .z 是 unix 系统常见的压缩文件. 2.源码 import com.chilkatsoft.CkUnixCompress; impor ...

  9. iptables过滤设置服务端口

    1.为SSH跟换连接端口 修改SSH配置文件:/etc/ssh/sshd_config #找到Port 22,这里是标识默认使用22端口,修改为想要的端口. Port Port 2.查看iptable ...

  10. PHP 位运算(&, |, ^, ~, <<, >>)及 PHP错误级别报告设置(error_reporting) 详解

    位运算符允许对整型数中指定的位进行求值和操作. 位运算符 例子 名称 结果 $a & $b And(按位与) 将把 $a 和 $b 中都为 1 的位设为 1. $a | $b Or(按位或) ...