【Python】Python 包 ② ( 自定义 Python 包 | 导入并调用自定义 Python 包 | `__init__.py` 定义 `__all__` 变量 )

这篇具有很好参考价值的文章主要介绍了【Python】Python 包 ② ( 自定义 Python 包 | 导入并调用自定义 Python 包 | `__init__.py` 定义 `__all__` 变量 )。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。





一、自定义 Python 包




1、PyCharm 中创建 Python 包


右键点击 PyCharm 中的 Python 工程根目录 , 选择 " New / Python Package " 选项 ,

python自定义包的导入,Python,python,开发语言,自定义包,导入自定义包,__init__.py,原力计划

输入 Python 包名称 , 然后点击回车 , 创建 Python 包 ;
python自定义包的导入,Python,python,开发语言,自定义包,导入自定义包,__init__.py,原力计划

创建完成后 , 自动生成了一个 my_package 目录 , 该目录下自动生成了一个 __init__.py 文件 ;
python自定义包的导入,Python,python,开发语言,自定义包,导入自定义包,__init__.py,原力计划

在命令行中 , 使用 tree /f 命令 , 查看 该 Python 工程的目录结构 :

Y:\002_WorkSpace\PycharmProjects\HelloPython>tree /f
卷 新加卷 的文件夹 PATH 列表
卷序列号为 C893-6821
Y:.
│  hello.py
│  main.py
│
├─.idea
│  │  .gitignore
│  │  HelloPython.iml
│  │  misc.xml
│  │  modules.xml
│  │  workspace.xml
│  │
│  └─inspectionProfiles
│          profiles_settings.xml
│
└─my_package
        __init__.py


Y:\002_WorkSpace\PycharmProjects\HelloPython>

python自定义包的导入,Python,python,开发语言,自定义包,导入自定义包,__init__.py,原力计划


2、自定义 Module 模块代码


右键点击 PyCharm 根目录中的模块包 , 然后选择 " New / Python File " 选项 ,
python自定义包的导入,Python,python,开发语言,自定义包,导入自定义包,__init__.py,原力计划

输入文件名 ,
python自定义包的导入,Python,python,开发语言,自定义包,导入自定义包,__init__.py,原力计划

点击回车 , 即可在 Python 包中创建了 模块代码 ;
python自定义包的导入,Python,python,开发语言,自定义包,导入自定义包,__init__.py,原力计划
在 my_module1.py 中实现一个函数 :

"""
Python 包模块代码示例
"""


def my_module1_print():
    print("my_package 的 my_module1 模块运行")

再次创建一个模块 my_module2.py , 在 my_module2.py 中实现一个函数 :

"""
Python 包模块代码示例
"""


def my_module2_print():
    print("my_package 的 my_module2 模块运行")


3、__init__.py 代码


__init__.py 源码文件可以空着 , 但是必须要有 , 这是 Python 包的标志 ;

有了 __init__.py 源码文件之后 , 该目录才会被当做包对待 ,

如下图所示 , my_package 目录下有 __init__.py 源码文件 , 其目录图标中间有个点 python自定义包的导入,Python,python,开发语言,自定义包,导入自定义包,__init__.py,原力计划 , 普通的目录是这个样子的 python自定义包的导入,Python,python,开发语言,自定义包,导入自定义包,__init__.py,原力计划 , 如 PyCharm 项目的根目录 HelloPython ;

python自定义包的导入,Python,python,开发语言,自定义包,导入自定义包,__init__.py,原力计划


__init__.py 源码 中可以定义 __all__ 变量 , 这是一个列表容器 , 元素类型是字符串 ;





二、导入并调用自定义 Python 包




1、使用 import 导入自定义包模块


导入后 , 可以 通过 包名.模块名.功能名 访问指定功能 ;


代码示例 :

"""
自定义 Python 包 代码示例
"""

import my_package.my_module1
import my_package.my_module2

my_package.my_module1.my_module1_print()
my_package.my_module2.my_module2_print()

执行结果 :

Y:\002_WorkSpace\PycharmProjects\pythonProject\venv\Scripts\python.exe Y:/002_WorkSpace/PycharmProjects/HelloPython/hello.py
my_package 的 my_module1 模块运行
my_package 的 my_module2 模块运行

Process finished with exit code 0


2、使用 from 导入自定义包模块


代码示例 :

"""
自定义 Python 包 代码示例
"""

from my_package import my_module1
from my_package import my_module2

my_module1.my_module1_print()
my_module2.my_module2_print()

执行结果 :

Y:\002_WorkSpace\PycharmProjects\pythonProject\venv\Scripts\python.exe Y:/002_WorkSpace/PycharmProjects/HelloPython/hello.py
my_package 的 my_module1 模块运行
my_package 的 my_module2 模块运行

Process finished with exit code 0


3、使用 from 导入自定义包模块中的函数功能


代码示例 :

"""
自定义 Python 包 代码示例
"""

from my_package.my_module1 import my_module1_print
from my_package.my_module2 import my_module2_print

my_module1_print()
my_module2_print()

执行结果 :

Y:\002_WorkSpace\PycharmProjects\pythonProject\venv\Scripts\python.exe Y:/002_WorkSpace/PycharmProjects/HelloPython/hello.py
my_package 的 my_module1 模块运行
my_package 的 my_module2 模块运行

Process finished with exit code 0





三、__init__.py 定义 __all__ 变量



__init__.py 中定义 __all__ 变量 , 其含义是该软件包中 , my_module1 模块是有效的 , 其它模块不生效 ;

__all__ = ["my_module1"]

python自定义包的导入,Python,python,开发语言,自定义包,导入自定义包,__init__.py,原力计划


使用

from my_package import *

代码 , 导入整个软件包 ,

如下代码中 , 只有 my_module1 模块中的内容是可用的 , my_module2 模块无法被访问 ;

"""
自定义 Python 包 代码示例
"""

from my_package import *

my_module1.my_module1_print()
my_module2.my_module2_print()

执行结果 :

Y:\002_WorkSpace\PycharmProjects\pythonProject\venv\Scripts\python.exe Y:/002_WorkSpace/PycharmProjects/HelloPython/hello.py
my_package 的 my_module1 模块运行
Traceback (most recent call last):
  File "Y:\002_WorkSpace\PycharmProjects\HelloPython\hello.py", line 8, in <module>
    my_module2.my_module2_print()
NameError: name 'my_module2' is not defined. Did you mean: 'my_module1'?

Process finished with exit code 1

python自定义包的导入,Python,python,开发语言,自定义包,导入自定义包,__init__.py,原力计划文章来源地址https://www.toymoban.com/news/detail-745438.html

到了这里,关于【Python】Python 包 ② ( 自定义 Python 包 | 导入并调用自定义 Python 包 | `__init__.py` 定义 `__all__` 变量 )的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【python基础】—函数def()的定义与调用、参数、return返回值及变量作用域

    语法: 举例: 上面我们定义一个名字为hello的函数,括号内部是函数接收的参数name,紧接着就是函数的功能代码。 多次调用 位置参数 这里的\\\"手拍黄瓜\\\"和\\\"大米饭\\\"是对应参数appetizer和course的位置顺序传递的,所以被叫作位置参数,这也是最常见的参数类型。 默认参数 注意

    2024年02月02日
    浏览(41)
  • 在__init__.py中找不到引用“ xxx”-Python / Pycharm

    复现论文时,作者给出源代码,我从guthub上下载下载放在pycharm中泡,但是显示很多地方都 在__init__.py中找不到引用 找了很多方法,最终: 需要在被引用的包中添加__init__.py文件【不需要在新建的文件中写什么】 原文章: ModuleNotFoundError: No module named \\\'xxx\\\'可能的解决方案大全

    2024年02月07日
    浏览(43)
  • 在python中找不到引用‘imread‘in’__init__.py‘?

    cv2.imread 在 ‘ init .py’ 中找不到引用 ‘imread’ cv2不提示相关的函数 pip install opencv-contrib-python==4.5.5.64 适用于:python3.7 python3.8 python3.9解释器

    2024年02月13日
    浏览(46)
  • Python导入torch包的方法

    随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容中下载torch包遇见的一些问题和解决方法。 Pytorch是torch的python版本,是由Facebook开源的神经网络框架,专门针对 GPU 加速的深度神经网络(DNN)编程。

    2024年02月20日
    浏览(37)
  • Python学习笔记(四):函数的定义、函数的返回值、None类型、函数说明文档、函数的嵌套调用、局部变量、全局变量、global关键字

    目录 一、函数介绍 1. 函数是: 2. 使用函数的好处是: 二、函数的定义: 三、函数的参数 1.传入参数的功能是: 2.函数的传入参数 - 传参定义 3.注意事项: 4.练习:测量体温 四、函数的返回值 1.函数返回值的定义 2.None类型 五、函数说明文档 六、函数的嵌套调用 七、变量的

    2024年02月05日
    浏览(67)
  • python如何在一个py文件中调用另一个py文件中的方法

    要在一个Python文件中调用其他Python文件中的方法,可以使用Python的模块导入功能。模块是一个包含Python定义和语句的文件,可以被其他Python程序导入和使用。 假设我们有两个Python文件,一个是file1.py,另一个是file2.py。如果我们想在file1.py中调用file2.py中的方法,我们可以按照

    2024年02月11日
    浏览(37)
  • 报错opencv Cannot find reference ‘imread‘ in ‘__init__.py‘,可以运行,但无法调用opencv算法

    测试代码为: 有问题的部分为: 灰色部分均为 Cannot find reference in \\\'__init__.py\\\'的报错,但程序可以运行并显示图片。 Cannot find reference ‘imread‘ in ‘__init__.py | __init__.py‘ http://t.csdn.cn/OEaoE 按照该文方法,修改至版本为 4.5.3.56,可以解决问题。但运行环境的opencv版本已经是 4

    2024年02月08日
    浏览(62)
  • python如何调用另外一个py文件中的函数

    在Python中,可以通过导入模块的方式调用另外一个.py文件中的函数。具体步骤如下: 创建一个.py文件,其中包含需要调用的函数,例如: 在调用该函数的代码文件中,使用 import 导入这个.py文件(注意,要确保两个文件处于同一目录下),例如: 在这个例子中,首先

    2024年02月11日
    浏览(525)
  • python 教你如何创建一个自定义库 colorlib.py

    目录 Colorlib 生成代码 模块代码 导入测试 测试一 测试二 应用测试 颜色列表 colorList 随机颜色元组 randcolorTuples 随机颜色字串 randcolorStrings Color类测试 测试一 测试二 题外话 有没有碰到过这样的场景:写代码时想要用上丰富的色彩,但苦思冥想搜肠刮肚只记得这几个常用颜色

    2024年03月23日
    浏览(44)
  • python跨文件夹调用别的文件夹下的py文件或参数方式

    目录 摘要: 第一章   运行另一个py文件 (1)在file_A.py中运行file_B.py文件,注意这里是运行,不是引用 (2)file_B.py使用file_A.py传递的参数 (3) 引用另一个py文件中的变量或者方法 第二章 python调用自己写的py文件 (1)同一个目录下的文件 (2)不同目录下的文件 (3)多

    2024年02月08日
    浏览(109)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包