Loading

「Python入门」模块和包

模块和包

如果我们想在编写的代码里重用一些函数的话,就需要用到模块(Module),一个.py文件就称之为一个模块。

使用模块还可以避免函数名和变量名冲突,相同名字的函数和变量完全可以分别存在不同的模块中。为了避免模块名的冲突,Python又引入了按照目录来组织模块的方法,称为(Package)。

PackageA
|- __init__.py
|- abc.py
PackageB
|- __init__.py
|- abc.py

比如上面的两个包PackageAPackageB都有abc模块,但是引入包之后,他们的名字就分别变成了PackageA.abcPackageB.abc,这样就避免了同名模块的冲突。
注意:每一个包目录下都会有一个__init__.py文件,这个文件是必须存在的,否则Python就会把这个目录当成普通目录,而不是一个包。__init__.py可以是空文件,也可以有Python代码,__init__.py本身就是一个模块,它的模块名就是包名。

使用模块

一个模块可以被其他程序导入并运用其功能,Python本身内置了很多模块。
使用模块的第一步,就是导入该模块:

import sys

导入sys模块后,我们就有了变量sys指向该模块,利用sys这个变量,就可以访问sys模块的所有功能。

导入模块并执行

常见的4种倒入模块的方式:

# 第1种方式
import 模块名
模块名.功能    #执行

# 第2种方式
from 模块名 import 功能    #只导入模块中的一个功能
功能    #执行

# 第3种方式(这一种少使用)
from 模块名 import *    #导入模块中的所有功能
功能    #执行

注意:如果导入的多个模块中有名称相同的功能,那么后导入的模块的功能会覆盖先导入的模块的同名功能。

# 第4种方式(模块名太长的时候可以自定义一个短一点的名字)
import 模块名 as 自定义一个名字
自定义一个名字.功能

import一个模块时,实际上就已经把模块里面的代码执行了一次。

第一行代码import模块时就执行了一次,第二行代码调用模块里的函数再执行一次,共两次。

模块中的特殊变量:__name__(专门用来进行测试的)

在不同的.py文件中执行,具有不同的值。

mokuai.py文件中执行打印__name__变量:

main.py文件中导入mokuai,可以发现__name__变量发生了改变:

下面这段代码只在当前模块下直接运行会跑到,其他文件调用该模块则不会跑到:

if __name__ == "__main__":
    测试用的代码

模块中的特殊变量:__all__

存放在这个__all__变量中的内容才可以被文件使用。

类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途。
类似_xxx__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,注意是“不应该”,而非“不能”。

外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public。

模块发布

1.mymodule模块

目录结构如下:

.
├── setup.py
├── suba
│     ├── aa.py
│     ├── bb.py
│     └── __init__.py
└── subb
    ├── cc.py
    ├── dd.py
    └── __init__.py

2.编辑setup.py文件

py_modules参数需指明所需包含的py文件:

from distutils.core import setup

setup(name="dongGe", version="1.0", description="dongGe's module", author="dongGe", py_modules=['suba.aa', 'suba.bb', 'subb.cc', 'subb.dd'])

3.构建模块

在命令行中输入以下命令:

python3 setup.py build

成功构建后的目录结构:

.
├── build
│ └── lib.linux-i686-2.7
│         ├── suba
│         │ ├── aa.py
│         │ ├── bb.py
│         │ └── __init__.py
│         └── subb
│                 ├── cc.py
│                 ├── dd.py
│                 └── __init__.py
├── setup.py
├── suba
│     ├── aa.py
│     ├── bb.py
│     └── __init__.py
└── subb
        ├── cc.py
        ├── dd.py
        └── __init__.py

4.生成发布压缩包

python3 setup.py sdist

打包后,生成最终发布压缩包dongGe-1.0.tar.gz, 目录结构如下:

.
├── build
│     └── lib.linux-i686-2.7
│             ├── suba
│             │ ├── aa.py
│             │ ├── bb.py
│             │ └── __init__.py
│             └── subb
│                     ├── cc.py
│                     ├── dd.py
│                     └── __init__.py
├── dist
│     └── dongGe-1.0.tar.gz
├── MANIFEST
├── setup.py
├── suba
│     ├── aa.py
│     ├── bb.py
│     └── __init__.py
└── subb
        ├── cc.py
        ├── dd.py
        └── __init__.py

安装第三方模块

pip:python工具包管理工具,用于安装和卸载python工具包。

在cmd中输入

  • 安装:pip install xxx
  • 卸载:pip uninstall xxx

输入pip,查看相关命令:

posted @ 2021-12-24 21:44  活用数据  阅读(63)  评论(0编辑  收藏  举报