Python, is “import *” bad if I am importing all classes / functions from a file?
我听说"进口*"被认为是不好的做法。
例如,在Django应用程序中,我创建了5个模型,每个模型都需要一个管理页面,这是否仍然被认为是我的admin.py文件中的坏做法?
1
| from myapp.models import * |
编辑:这是我自己的代码,我知道我想从文件中导入所有内容。
- 它是错误的来源;您不知道只从行中导入哪些名称。请看最近的问题,问题出在哪里是from scipy import *行。
- 这就是我的问题,我知道我要导入什么,作为我自己的代码。
- 但是,您以后还会记得随着项目的发展,您在哪里使用EDOCX1[1]吗?
- 可能,我每天都在使用它,并且对数据模型有一个很好的了解。
- 如果你是唯一一个使用代码的人,那么你做什么并不重要。如果其他人正在使用代码,您确定他们会记得在哪里使用import *?
- @摇摆不定:那么你有多大的信心相信这个项目仍然足够小和不重要,以至于这个问题永远不会出现?为什么要冒险?
- 它不小。这很重要。但我仍然知道我的模特是什么。那是我的工作。无论如何,我喜欢下面的建议来导入模型,并在引用每个模型时使用它。
对。问题是,将来可能会添加更多的代码,这些代码可能会导致意外的问题,例如命名冲突。
我通常会选择:
1 2
| from myapp.models import MyModel
from myapp.models import MySecondModel |
另一种选择是:
1
| from myapp.models import (MyModel, MySecondModel) |
编辑:
正如@kalhartt所指出的,你也可以简单地做到。
1
| from myapp import models |
如果需要导入很多类,那么可以使用models.MyModel等。
- 我可以看到,但实际上我遇到了相反的问题,在这里我添加了一个新模型,并添加了一个管理页面,但是忘记了导入。这在当时相当明显。
- 是的,这实际上是这种方法的优点。如果你忘了添加一些东西,那么会很明显遗漏了什么。
- 我现在两者都做了一点,但是你的方式最终会得到大量的进口声明。另外,我通常不添加表单或模型,没有相应的视图来使用它。
- @在您描述的用例中,我倾向于使用from myapp import models或者(很少)使用简洁的import myapp.models as md。
- 这是一个很好的观点。
- @卡哈特:说得好。如果有很多的话,这确实是一个更好的解决方案。
- 这是否与"从模型导入"具有相同的效果?或者有什么区别?
- 我更新了我的答案,并给了你信用卡@kalhartt。= ]
- @摇摆不定:是的,区别在于你的代码中没有使用mymodel,而是models.mymodel。
- 好吧,我知道。