Python(三十四)python的包

简介: 我们在实际开发中,可能需要应用到多个模块,使用模块可以有效避免变量名或函数名重名引发的冲突,为了方便管理,python为我们提供了包的概念。 什么是包呢?简单理解,包就是目录,只不过在该目录下必须存在一个名为“init.py” 的文件。注意,这是 Python 2.x 的规定,而在 Python 3.x 中,init.py 对包来说,并不是必须的。 一:创建包如下图所示: 二:init.py文件就如上边所说,python3包中__init__.py文件不是必须的。但是有也是没有问题的。对于__init__.py文件来说,首先是一个python文件,所有还可以用来写pytho

我们在实际开发中,可能需要应用到多个模块,使用模块可以有效避免变量名或函数名重名引发的冲突,为了方便管理,python为我们提供了包的概念。

什么是包呢?简单理解,包就是目录,只不过在该目录下必须存在一个名为“init.py” 的文件。

注意,这是 Python 2.x 的规定,而在 Python 3.x 中,init.py 对包来说,并不是必须的。

一:创建包

如下图所示:

image.png

二:init.py文件

就如上边所说,python3包中__init__.py文件不是必须的。但是有也是没有问题的。

对于__init__.py文件来说,首先是一个python文件,所有还可以用来写python模块,但是不建议这么写,尽量保证__init__.py足够轻:

ruby

复制代码

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time    : 2021/12/30 15:02
# @Author  : camellia
# @Email   : 805795955@qq.com
# @File    : __init__.py.py
# @Software: PyCharm
class CLanguage:
    def __init__(self, name, add):
        self.name = name
        self.add = add
    def say(self):
        print(self.name, self.add)

 

这样,我们可以直接在代码中调用CLanguage这个类。但是  不建议这么写。

init.py还有一个作用就是模糊导入,模糊导入中的*中的模块是由__all__来定义的,init.py的另外一个作用就是定义package中的__all__,用来模糊导入,这个在下边的迷糊导入会说到

三:导入包

我们在包下边创建两个python模块:

ruby

复制代码

test1.py:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time    : 2022/1/6 15:39
# @Author  : stone
# @Email   : 805795955@qq.com
# @File    : test1.py
# @Software: PyCharm
def plus():
    print("1 + 1 = 2")

test2.py:

ruby

复制代码

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time    : 2022/1/6 15:39
# @Author  : stone
# @Email   : 805795955@qq.com
# @File    : test2.py
# @Software: PyCharm
def reduces():
    print("1 - 1 = 0")

导入包这里和导入模块是差不多的。

但是这里分为

1:精确导入

(1):导入包(这样导入只能使用__init__.py中的内容)

ini

复制代码

import testPackage
# 调用__init__.py中的方法
CLanguage = testPackage.CLanguage('时间里的', 'https://guanchao.site')
CLanguage.say()

输出:

arduino

复制代码

时间里的 https://guanchao.site

 

(2):精确导入  导入某一个模块

arduino

复制代码

import testPackage.test2
testPackage.test2.reduces()

输出:

ini

复制代码

1 - 1 = 0

 

(3):精确导入(导入某一个包下某一个模块下的某一个方法)

python

复制代码

from testPackage.test1 import plus
# 调用方法
plus()

输出:

ini

复制代码

1 + 1 = 2

 

2:模糊导入

在__init__.py中 添加如下代码:

ini

复制代码

__all__ = ["test1", "test2"]

在文件中调用:

python

复制代码

# 模糊导入
from testPackage import *
# 调用方法
test1.plus()
test2.reduces()

输出:

ini

复制代码

1 + 1 = 2
1 - 1 = 0

 

四:查看模块成员:dir()函数

使用dir函数:

python

复制代码

# 导入包(这样导入只能使用__init__.py中的内容)
import testPackage
print(dir(testPackage))

输出:

css

复制代码

['CLanguage', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']

 

五:查看模块成员:__all__变量

go

复制代码

import testPackage
print(testPackage.__all__)

输出:

css

复制代码

['test1', 'test2']

 

六:__file__属性:查看模块的源文件路径

go

复制代码

import testPackage
print(testPackage.__file__)
import testPackage.test2
print(testPackage.test2.__file__)

输出:

makefile

复制代码

F:\camellia\python\testProject\testPackage__init__.py
F:\camellia\python\testProject\testPackage\test2.py

以上大概就是python中的包的使用方法

有好的建议,请在下方输入你的评论。

目录
相关文章
|
25天前
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
42 4
|
24天前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
24天前
|
持续交付 Python
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。
|
3月前
|
Python
下载python所有的包 国内地址
下载python所有的包 国内地址
|
16天前
|
Python 容器
[oeasy]python048_用变量赋值_连等赋值_解包赋值_unpack_assignment _
本文介绍了Python中变量赋值的不同方式,包括使用字面量和另一个变量进行赋值。通过`id()`函数展示了变量在内存中的唯一地址,并探讨了变量、模块、函数及类类型的地址特性。文章还讲解了连等赋值和解包赋值的概念,以及如何查看已声明的变量。最后总结了所有对象(如变量、模块、函数、类)都有其类型且在内存中有唯一的引用地址,构成了Python系统的基石。
26 5
|
25天前
|
Python
Python的模块和包
总之,模块和包是 Python 编程中非常重要的概念,掌握它们可以帮助我们更好地组织和管理代码,提高开发效率和代码质量
37 5
|
24天前
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性
WK
|
4月前
|
Python
如何在Python中导入包
在 Python 中,包是一种组织代码的方式,通过包含 `__init__.py` 文件(在 Python 3.3 及以上版本可选)的目录实现。包内可以包含多个模块(`.py` 文件)和其他子包。导入包有多种方式:整体导入包、导入特定模块、导入特定函数或类、导入子包等。推荐的做法是明确指定导入内容以提高代码的可读性和可维护性。此外,确保包目录结构正确,并将其添加到 Python 的搜索路径中。对于分发包,使用 setuptools 和 pip 等工具更为便捷。
WK
134 66
WK
|
4月前
|
Python
如何在Python中创建包
在Python中创建包十分简便,主要涉及目录结构的设置及`__init__.py`文件的配置。虽然Python 3.3后空`__init__.py`文件不再强制要求,但在特定场景下保留它有助于保持兼容性或执行包初始化代码。创建包的具体步骤包括:构建目录结构、编写模块代码、(可选)编写初始化代码等。例如,可以创建一个名为`mypackage`的目录,其中包含`__init__.py`及多个模块文件如
WK
121 62
|
3月前
|
机器学习/深度学习 搜索推荐 数据可视化
Python量化炒股常用的Matplotlib包
Python量化炒股常用的Matplotlib包
39 7