Recalling import in module

2019-07-06 22:44发布

I'm still learning python and after playing around with pygame I noticed I'm re-importing things in modules I'm importing that I've already imported.

import pygame

For instance I have some classes in a separate file, but I must also import pygame into that file too for them to work. Does it actually import the code twice? Will it slow down my program? Or does it just pull the same import from cache, but if it does that, why would I need to import it again?

Is there anything like (load) in lisp that just pulls in the code like it is part of the main file?

Thank You

3条回答
Viruses.
2楼-- · 2019-07-06 23:03

Subsequent imports pull the cached module reference from sys.modules. You need to import in order to add the module to the current namespace/scope.

查看更多
姐就是有狂的资本
3楼-- · 2019-07-06 23:08

When Python imports a module, it first checks the module registry (sys.modules) to see if the module is already imported. If that’s the case, Python uses the existing module object as is.

查看更多
仙女界的扛把子
4楼-- · 2019-07-06 23:22

Got it!
Okay I found what I was looking for. I just found it clunky to have to re-import code I already imported, especially when the file isn't a library or something, just split up code. found it here: http://norvig.com/python-lisp.html

execfile("file.py")

Answers my problem perfectly. It parses a file and executes the code in it. Using it I was able to take out the extra import statements and it runs perfectly :D

查看更多
登录 后发表回答