• python的模块和包


    模块

    python语言的组织结构层次:
    包->模块->代码文件->类->函数->代码块

    什么是模块呢
    可以把模块理解为一个代码文件的封装,这是比类更高一级的封装层次
    一个写好的模块可以导入给其他python文件来用,在其他语言中,这种通常被称为库
    比如C语言的库函数之类的
    C语言中这样引用 #include <stdio.h>
    python中则是 import XXX

    模块在python中分为第三方模块,用户自定义模块,标准模块三部分
    用户自定义模块很好理解,就是用户自己编写的模块
    而第三方模块则是python比如pypi上的可以下载的包,比如django就是的
    用户编写模块,可以编写一个文件,那么模块名就是这个文件名
    要引用这个模块内的函数 就是 from 模块名 import 函数名
    接下来,就可以直接用这个导入的模块内的函数了
    或者,import 模块名
    那么用这个模块内的函数需要这样用 模块名.函数名

    模块的优点

    1. 可以更好的组织程序结构
    2. 提高了代码的可复用性,比如,我们引用python的标准模块,比如os模块,sys模块,就是利用现有的方法再去做自己的事情
    3. 使用模块也可以更好的管理命名空间,比如同名变量,同名函数只要分布在不同的python模块里,就没有关系,但是还是要注意不要和系统函数名,python关键字等发生冲突

    包package

    包是组织模块的工具
    在python里,用目录的形式来组织模块,模块所在的目录成为包
    包所在的目录有个特定,一定要有一个空的__init__,py文件,才会被识别为包
    否则,在导入的时候会提示,没有这个模块等异常抛出

    下面分别举例子说明导入包和导入模块的不同

    导入模块

    我们先看代码的目录组织结构

    下面的文件都在这个目录下 /opt/MyExercises/PythonExercises

    这个目录下有两个文件
    showadd.py和test.py
    showadd的逻辑很简单,接受两个参数,把这两个参数的和相加,并显示这个相加的结果
    test.py则是调用showadd模块来做这个事

    当前目录

    当前目录文件

    showadd.py

    # coding:utf-8
    
    def showadd(x, y):
        c = x + y
        print c
        return c
    

    test.py

    # coding:utf-8
    
    import showadd
    showadd.showadd(2, 3)
    

    然后运行 python test.py
    会看到显示结果是 5,正是test.py文件里传入的两个参数的相加的结果

    导入包

    对应前面说的导入包,我们需要在相应的目录下创建一个空文件名为__init__.py
    我们先看下,如果我们不创建这个文件,会导致什么错误发生呢?

    我们还是一样,先看下文件的组织结构
    ![文件组织结构][3]
    enter description here

    我们看到,现在用一个目录容纳了showadd.py这个文件

    我们看看没有在这个目录创建一个空的__init__.py,会有什么错误

    没__init__.py文件的包目录,导入会报错

    我们看到,抛出了一个导入错误

    那么,我们再在这个目录下,创建一个空的__init__.py文件看看

    创建了空的__init__.py文件的目录

    程序demo.py 文件内容

    # coding:utf-8
    
    from packagefortest.showadd  import showadd
    
    showadd(3, 4)
    

    然后,我们再运行程序:

    [root PythonExercises]# python demo.py
    7
    
  • 相关阅读:
    poj 3176 三角数和最大问题 dp算法
    poj 2236 网络连接问题 并查集
    poj 3614 奶牛美容问题 优先队列
    得时无怠
    Android入门(一)
    javascript之apply和call
    写一份面试答卷
    拿来即用的loading效果
    关于回调的唠叨
    Nodejs Guides(四)
  • 原文地址:https://www.cnblogs.com/haozike/p/python_module_and_package.html
Copyright © 2020-2023  润新知