gpt4 book ai didi

python - 导入在Python中是如何工作的?

转载 作者:行者123 更新时间:2023-12-01 02:19:25 33 4
gpt4 key购买 nike

使用matplotlib.pyplotflask.app不同,尽管pyplot.py的排列相似>app.py 在他们的包中。这是解释。

flask 包包含以下模块。

__init__.py
app.py

注意。这些并不是 Flask 包含的唯一模块。

每当我想使用 app.py 模块时,我可以通过两种方式来实现。它们在下面。

>>> import flask
>>> flask.app
<module 'flask.app' from 'C:\\Python34\\lib\\site-packages\\flask\\app.py'>
>>> from flask import app
>>> app
<module 'flask.app' from 'C:\\Python34\\lib\\site-packages\\flask\\app.py'>
>>>

现在让我们看一下 matplotlib 包。

matplotlib 包包含以下模块。

__init__.py
pyplot.py

注意。这些并不是 matplotlib 包含的唯一模块。

现在我将使用与 flask 相同的方法来使用 pyplot.py 模块,但这次第一种方法不起作用,我不这样做明白为什么。在这里。

>>> import matplotlib
>>> matplotlib.pyplot
Traceback (most recent call last):
File "<pyshell#20>", line 1, in <module>
matplotlib.pyplot
AttributeError: 'module' object has no attribute 'pyplot'
>>> from matplotlib import pyplot
>>> pyplot
<module 'matplotlib.pyplot' from 'C:\\Python34\\lib\\site-packages\\matplotlib\\pyplot.py'>
>>>

自学并不能帮助你解决这样的问题。任何想法都会受到赞赏。

最佳答案

由包的作者选择是否使用主包名称自动导入哪些内容。

当然,这些都是复杂的例子,在这些项目的源代码中很难找到它,但归根结底是一个包的根 __init__.py 文件导入触发的代码明确或不明确的子包。

因此,Flask 的 __init__.py 就好像包含这样一行

from flask.app import app

(虽然app可以是直接在__init__文件中实例化的简单对象,但不一定是另一个子包中的东西)

换句话说:Python 不会执行自动发现,更不用说“自动导入”子包中的代码了。对于您自己的代码,最好通过在根 __init__ 文件中显式导入来公开所有子包和公共(public)可用类,例如 __init__.py 我的小型“extradict”项目是这样的:

# coding:utf-8
from .version_dict import VersionDict
from .version_dict import OrderedVersionDict
from .normalized_dict import FallbackNormalizedDict
from .normalized_dict import NormalizedDict
from .map_getter import MapGetter
from .reciprocal_dict import BijectiveDict
from .extratuple import namedtuple
from .extratuple import defaultnamedtuple
from .extratuple import fastnamedtuple


__author__ = "João S. O. Bueno"
__version__ = "0.3.1"

这使得所有这些类和工厂可以直接供任何导入“extradict”的人使用。

如果某个特定的子包在初始化或使用内存方面非常昂贵,那么最好不要显式导入它,而只是让用户显式地执行此操作。例如,“pygame”是一个广泛使用的项目,它为 2D 图形提供简单的多媒体访问以及实时键盘和鼠标事件处理等,自动预导入其大部分子模块,但不处理处理电脑摄像头 - 所以我们必须这样做:

import pygame
import pygame.camera

在项目中使用网络摄像头。 (或者from pygame importcamera - 它的工作原理是一样的)。

关于python - 导入在Python中是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48098020/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com