在Python中,使用类实例化导入两次?

Joh*_*ton 5 python

models.py我有:

...
db = SQLAlchemy(app)

class User(db.Document):
...
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,serve.pymodels.py致电:

from models import User 
Run Code Online (Sandbox Code Playgroud)

是双重导入会实例化数据库两次并可能导致问题吗?

Jam*_*lls 11

是双重导入会实例化数据库两次并可能导致问题吗?

不,不会.一旦导入模块,无论通过该import语句进一步导入,它都可用.

该模块存储在sys.modules导入一次.

如果要重新加载必须使用的模块reload(module).

例: bar.py

xs = [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

导入两次:

>>> from bar import xs
>>> id(xs)
140211778767256
>>> import bar
>>> id(bar.xs)
140211778767256
Run Code Online (Sandbox Code Playgroud)

请注意,身份是相同的?

缓存:

>>> import sys
>>> sys.modules["bar"] is bar
True
Run Code Online (Sandbox Code Playgroud)