加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python模块可以使用其他文件的导入吗?

发布时间:2020-12-20 12:35:47 所属栏目:Python 来源:网络整理
导读:我有这样的事情: # a.py import os class A: ... # b.py import a class B(A): ... 在B类(b.py)中,我希望能够使用在a.py中导入的模块(在本例中为os).是否可以在Python中实现此行为,还是应该导入两个文件中的模块? 编辑:我不担心导入时间,我的问题是导入块
我有这样的事情:

# a.py  
 import os
 class A:
   ...

 # b.py
 import a
 class B(A):
   ...

在B类(b.py)中,我希望能够使用在a.py中导入的模块(在本例中为os).是否可以在Python中实现此行为,还是应该导入两个文件中的模块?

编辑:我不担心导入时间,我的问题是导入块对文件造成的视觉混乱.我最终在每个控制器(RequestHandler)中都有这样的东西:

from django.utils import simplejson
 from google.appengine.ext import webapp
 from google.appengine.ext.webapp import template
 from google.appengine.ext import db

这就是我想要避免的.

解决方法

是的,您可以通过转到a.os来使用其他文件中的导入.

然而,pythonic的方法是只导入你需要的精确模块而不用链(它可以导致循环引用).

导入模块时,代码将被编译并插入名称字典中 – >模块对象.字典位于sys.modules.

import sys
sys.modules

>>> pprint.pprint(sys.modules)
{'UserDict': <module 'UserDict' from 'C:python26libUserDict.pyc'>,'__builtin__': <module '__builtin__' (built-in)>,'__main__': <module '__main__' (built-in)>,'_abcoll': <module '_abcoll' from 'C:python26lib_abcoll.pyc'>,# the rest omitted for brevity

当您尝试再次导入模块时,Python将检查字典以查看它是否已存在.如果是,它将返回已编译的模块对象给您.否则,它将编译代码,并将其插入sys.modules中.

由于字典是作为哈希表实现的,因此与创建循环引用的风险相比,此查找非常快并且占用的时间可以忽略不计.

Edit: I’m not worried about the import
times,my problem is the visual
clutter that the block of imports puts
on the files.

如果你只有大约4或5个这样的进口,它不会太杂乱.请记住,“明确比隐含更好”.但是,如果它真的困扰你那么多,那么这样做:

<importheaders.py>
from django.utils import simplejson
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from google.appengine.ext import db


<mycontroller.py>
from importheaders import *

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读