我进行了一些研究,发现了以下文章:http://effbot.org/zone/import-confusion.htm。虽然这似乎是一个很好的指南,但它是在1999年写的,已经有一段时间了。我正在使用Python 3.4.3,因此我认为有些东西已经改变了,这让我感到担忧,因为我不想学习无用的内容。因此,在Python 3中,有哪些导入包和模块的方法?哪些方法是最常见的,应该优先使用?
import module
from module import this, that, tother
from module import *
module.py
文件以加载module
的详细信息已经进行了微调,但导入本身的行为仍按照您链接的页面上描述的方式运作。)from ..module import blah
的操作。这种导入只能从包内部使用;它允许包中的模块以相对于包的方式引用同一包中的其他模块(即,无需指定如何导入顶级包)。您可以在 PEP 328 中阅读详细信息。不过,即使如此,这基本上只是链接页面上提到的 from module import blah
样式语法的新变体。
__import__
在 Python 3 中仍然可用。这是一个内部函数,只有在进行某些非常规操作时才需要使用它。对于 importlib
模块中的各种函数(以及已弃用的 imp
模块),同样适用。这些导入函数的巫术级别因函数而异,但对于普通的“我只想导入这个模块并使用它”的用法,你基本上永远不需要使用它们。只有当你想要做一些像动态导入运行时未知名称的模块之类的事情时,才需要使用它们。>>> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
import
module_name 并且 它保留名称空间,我建议在有多种导入方法的情况下,如Python3手册条目中所示,并且您可以通过覆盖 __import__()
方法或通过自己编写来扩展它们,我会说坚持使用它,直到您有一个充分的理由不这样做。
事实上,__import__()
被双下划线包围也是不要去碰它的提示。
from package import (x, y)
from authentication.views import SignupView, LoginView, VerificationView, SignupDetailView
#mymod1.py
def add_fun(a,b):
return a+b
def sub_fun(a,b):
return a-b
def mul_fun(a,b):
return a*b
def div_fun(a,b):
return a/b
#mymod2.py
def fun1(...):
........
........
def fun2(...):
........
........
以下是导入的不同方式:
from mypkg.mymod1 import * #import all the function from mymod1
add_fun(10, 20)
mul_fun(10, 2)
from mypkg.mymod1 import add_fun,div_fun #import only needed functions from mymod1
add_fun(10, 20)
div_mul(10, 2)
from mypkg import mymod1 #import mymod module
mymod1.add_fun(10, 20)
mymod1.mul_fun(10, 2)
import mypkg #import package and use different models inside it
mypkg.mymod1.add_fun(10, 20)
mypkg.mymod1.mul_fun(10, 2)
我们可以使用以下方式在 Python 中导入模块
import module
from module import function
from module import *
虽然使用
from module import *
不是一个好的实践,因为可读性:其他程序员无法理解当前模块中实际使用了什么。 内存过载:所有内容都加载到内存中。 使用模块的最佳实践。
import package_name
,但我仍然无法访问子模块中的函数。我做错了什么? - Wesley