【Python学习】模块

模块的基本使用

在Python中用关键字import来引入某个模块,比如要引用模块math,就可以在文件最开始的地方用import math来引入。基本格式如下:

import module1,mudule2...

如果要导入模块中的函数,其格式如下:

from 模块名 import 函数
from 模块名 import 函数名1,函数名2....

导入某个模块中的所有函数,格式如下:

from 模块名 import *

区别:
from import : 从车里把矿泉水拿出来,给我
import : 把车给我

Python解析器搜索模块位置的搜索顺序:

  • (1)搜索当前目录
  • (2)如果都找不到,会继续查看默认路径。搜索路径被存储在sys模块中的path变量

下列命令可以输出搜索路径:

import sys
print(sys.path)

在这里插入图片描述

sys.path输出是一个列表; 第一项输出的是文件所在目录,亦即我们执行python解释器的目录(对于脚本的话就是运行的脚本所在的目录)。

模块的制作

简介

模块化是将程序分解为一个个的模块module,通过组合模块来搭建出一个完整的程序。

优点:便于团队开发,方便维护,代码复用

在python中一个脚本(.py)文件就是一个模块,创建模块实际上就是创建一个.py文件,可以被其他模块导入并使用。

————————————————
注:
1 自定义模块的时候要注意命名的规范,使用小写,不要使用大写,不要使用中文,不要使用特殊字符等。
2 不要与内置模块冲突 sys 等。
————————————————

# 在模块中定义变量
a = 10
b = 20


# 在模块中定义函数
def max(x, y):
    """
    加法
    :param x:
    :param y:
    :return:
    """
    return x + y

def min(x,y):
    """
    减法
    :param x:
    :param y:
    :return:
    """
    return x-y

# 在模块中定义类
class calculator: # 定义一个加法计算器
    @classmethod #导入计算器模块
    def sum(cls,*nums):
        res = 0 
        for i in nums:
            res += i
        return res

'''
__name__ 属性是模块的内置属性,每个模块中都有该属性,当该
.py文件是主执行文件,直接被执行时,其值为 __main__ ,当该
.py文件是被调用,导入执行文件时,其值为模块名
'''
# print(__name__)# 如果这么直接这么测试,被导入文件执行时,导入文件也会打印该内容

#程序入口,类似于java中的main()方法,只在当直接调用该文件时才会执行,用来执行测试
if __name__ == '__main__' :
    print(calculator.sum(1,2,3)) # 只有在当前界面执行才会打印该内容,其他文件中不会执行。

python提供了一个__name__属性,每个模块都有一个__name__属性,当其值为‘main’时,表明该模块自身在运行,否则是被引用。

Python中的包

为了组织好模块,通常会将多个模块放在一个包。
包是python模块文件所在的目录,且该目录下必须存在__init__.py文件(文件内容可以为空)。

package_a
├── init.py
├── module_a1.py
└── module_a2.py

package_b
├── init.py
├── module_b1.py
└── module_b2.py
main.py

如果main.py想要引用package a中的模块module a1,可以使用下列语句实现:

from package_a import module_a1
import package_a.module_a1

如果package_a中的module a1需要引用package_b,那么默认情况下,Python是找不到package_b的。
可以在package_a中的__init__.py中添加“sys.path.append('../')”
将该包下的所有module都添加入import __init__即可。

模块的发布(别人可以使用你构建的模块)

(1)将模块放在和setup.py文件相同的目录
.
├── setup.py
├── suba
│ ├── aa.py
│ ├── bb.py
│ └── init.py
└── subb
├── cc.py
├── dd.py
└── init.py

(2)编辑setup.py文件,指明需要包含哪些py文件。

from distutils.core import setup
setup(
    name="imust",
    version="1.0",
    description="welcom to imust",
    author="imust", 
    py_modules=['suba.aa', 'suba.bb', 'subb.cc', 'subb.dd'] )

(3)构建模块

python setup.py build

build命令构建后的目录结构→
.
├── build
│ └── lib
│ ├── 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)生成发布压缩包

python setup.py sdist

打包后的目录结构→

根据setup.py文件中参数生成,例如名称是imust,版本是1.0
.
├── build
│ └── lib
│ ├── suba
│ │ ├── aa.py
│ │ ├── bb.py
│ │ └── init.py
│ └── subb
│ ├── cc.py
│ ├── dd.py
│ └── init.py
├── dist
│ └── imust-1.0.tar.gz
├── MANIFEST
├── setup.py

模块的安装

(1)找到模块的压缩包,对压缩包进行解压
在这里插入图片描述
(2)执行命令“python setup.py install”

(3)即可引入包suba和subb下的python文件

from suba import aa
from subb import cc  

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

…狂奔的蜗牛~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值