python基础—11模块与包

本文详细介绍了Python中的模块和包的概念。模块是包含函数和变量的Python文件,可以通过import导入。导入方式包括import模块名、from...import...、import...as...等。包是组织模块的方式,用于避免名称冲突,通过__init__.py初始化。模块制作与发布涉及创建、测试、打包和上传到PyPI。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、模块

1、定义

模块就是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块
模块是非常简单的Python文件,单个Python文件就是一个模块,两个文件就是两个模块。

2、模块导入

(1)import 模块名1,模块名2
(2)import 模块名.函数名
因为可能存在这样一种情况:在多个模块中含有相同名称的函数, 如果只是通过函数名来调用,解释器无法知道到底要调用哪个函数。 所以如果像上述这样引入模块的时候,调用函数必须加上模块名。

(3)from 模块名 import 函数名/变量名
通过这种方式引入的时候,调用函数时只能给出函数名,不能给出模块名, 但是当两个模块中含有相同名称函数的时候,后面一次引入会覆盖前一 次引入

(4)import 长模块名 as 短模块名
from 模块名import 长函数名 as 短函数名
导入的模块名/函数名/变量名过长,进行重命名

(5)from 模块名 import*
把一个模块的所有内容全都导入
这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声 明不该被过多地使用

import random
import time
import functools
from random import randint as rint

如果模块中含有__ all __ 变量:
在使用from 模块名 import* 导入时,只有__ all __ 变量才可以被导入
如果模块中没有__ all __ 变量:
则所有的信息都能导入

(6)第三方模块:不是python官方提供的模块,需要通过工具安装

import requests
import numpy as np
import matplotlib.pyplot as plt

第三方模块安装方式:
1) pip install 模块名
2)pip install -i https://pypi.douban.com/simple 模块名
3) 在pycharm的解释器环境中添加并实现安装

(7)自定义模块
将自己写的.py文件封装成一个模块,
则可以导入使用

#封装一个模块
name = 'root'
password = '123'

def login():
    print('login.....')
    
def register():
    print('register.....')
    
if __name__ == '__main__':
    print('正在调用website模块......')
    #print(__file__) #打印文件的绝对路径
    #print(__doc__)  #打印模块的帮助文档
#导入上面的自定义模块
import website
website.login()
website.register()

在这里插入图片描述
可以看到,在导入自定义模块的时候,可以使用模块里的函数和变量

导入模块的过程,实质是执行模块内容的过程:
在这里插入图片描述
在这里插入图片描述
可以看到,先执行了模块的内容,然后调用模块的login()和register()函数
然而有时候我们并不想要模块执行的结果,只想调用,那么怎么做:
在这里插入图片描述

___ main___ :模块的名称
如果当作模块导入时, 结果为模块名称, 这里是website
如果不是当作模块导入,结果为 ___ main___
所以:
如果被当作模块导入时,不满足 if 语句,所以就不执行函数
所以,我们在通常写代码调用函数时,最好加上这句if语句

二、包

包将有联系的模块组织在一起,有效避免模块名称冲突问题,让应用组织结构更加清晰。
创建:
在这里插入图片描述
在这里插入图片描述
创建包后会自动生成一个 __ init .py文件
导入包的过程,实质是执行包里面的
init __.py 初始化文件

import * 理论上是希望文件系统找出包中所有的子模块,然后导入它们。 But 会花长时间,并出现边界效应等。Python 解决方案是提供一个明确的包索引。 这个索引由 __ init __.py 定义 __ all __ 变量,该变量为一列表, 只会导入指定的内容

三、模块制作与发布

1、制作

每个Python文件都可以作为一个模块,模块的名字就是文件的名字,所以python文件起名字最好起英文。

在实际开中,当一个开发人员编写完一个模块后,为了让模块能够在项目中达到想要的效 果,这个开发人员会自行在py文件中添加一些测试信息。
为了避免这些测试信息在模块调用时执行,就需要使用
if __ name ==’ main __’: 语句

2、发布

(1)为模块文件创建一个文件夹,并将模块文件复制到这个文件中(一般,文件夹的名字和模块的名字一样)
在这里插入图片描述
(2)在文件夹中创建一个名为 setup.py 的文件,内容如下:

from distutils.core import setup

setup(
    name='verifycode',      # 模块名称
    version='1.0.0',        # 版本
    author='作者名',         
    author_email='作者联系邮箱',
    description="模块表述",
    py_modules=['verifycode'] #模块名,不需要 .py
)

此时文件夹中含有
在这里插入图片描述
(3)构建模块和发布文件:
python setup.py build
python setup.py sdist
在这里插入图片描述
进行解包
将发布安装到你的Python本地副本中:
python setup.py install

(4) pypi发布:
注册PyPI网站 http://pypi.python.org
向PyPI上传代码
python setup.py register
python setup.py sdist upload

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值