python中模块和包是什么_python中模块和包的区别

问:Python中包和模块都可以被都是用import关键字进行引入的, 那么两者有什么区别呢?

模块: 一般来说, 单个py文件就叫模块(module), 调用这个模块直接使用"import 模块名"即可, 也可以使用"from 模块名 import 函数名/变量名/类名"和"from 模块名 import * "

包: 当我们写了几个相近的py文件后, 想要集成起来给别人使用. 这时候就需要用到我们的包了.

包就是为了多个py文件打包起来访问的东西. 只要在包里面放一个init.py文件, 在init.py文件import包里面的模块(py文件), 就可以实现"import 包名", 实现对多个模块的调用.

下面我们举例说明一下就很容易清楚了:

import模块: 我们在debug文件中import module模块, 然后调用模块里面的fun函数. 两个文件在同个目录下

# module模块

def fun():

print("hello world")

# debug

import module

module.fun()

运行程序代码:

95afe2c3d526

image.png

可以看到, 正常导入module文件并调用函数, 下面我们看看调用包.

"import 包": 我们需要导入模块1, 模块2的包(packet)

文件结构如下:

95afe2c3d526

image.png

模块代码如下:

# module1

def fun1():

print("我是模块1的函数")

# module2

def fun2():

print("我是模块2的函数")

# debug代码

import packet

packet.module1.fun1()

直接import packet的话试试, 然后调用packet.module1.fun1(), 发现程序报错了, AttributeError: module 'packet' has no attribute 'module1'

95afe2c3d526

image.png

这是因为python没法识别由多个py文件组成的包, 所以我们需要在包里面添加一个init.py文件. 在文件里面添加

import module1

import module2

文件结构如下:

95afe2c3d526

image.png

重新运行代码,发现程序正常调用两个模块的内容, 也就是说成功import包

95afe2c3d526

image.png

题外话: 如果不想在添加__init__.py是不是就没有办法访问module1和module2呢?

也不是, 利用在debug文件中引用时使用下面的语句也可以引用, 但它就不属于包结构了.包结构是含有__init__.py的文件夹, 而下面这种做法是属于导包中相对路径引用.

import packet.module1

import packet.module2

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值