Ich frage mich, ob es einen Unterschied zwischen dem Codefragment
from urllib import request
und dem Fragment
import urllib.request
oder ob sie austauschbar sind. Wenn sie austauschbar sind, welches ist die "Standard"/"bevorzugte" Syntax (falls es eine gibt)?
Vielen Dank!
Es hängt davon ab, wie Sie auf den Import zugreifen wollen, wenn Sie sich auf ihn beziehen.
from urllib import request
# access request directly.
mine = request()
import urllib.request
# used as urllib.request
mine = urllib.request()
Der Einfachheit halber oder um die Maskierung von eingebauten Elementen zu vermeiden, können Sie beim Importieren auch Aliasnamen verwenden:
from os import open as open_
# lets you use os.open without destroying the
# built in open() which returns file handles.
Sie verwenden Python3, wenn urllib im Paket enthalten ist. Beide Formen sind akzeptabel und keine Form des Imports wird gegenüber der anderen bevorzugt. Manchmal, wenn mehrere Paketverzeichnisse involviert sind, können Sie die ehemalige from x.y.z.a import s
verwenden
In diesem speziellen Fall mit dem urllib-Paket ist der zweite Weg import urllib.request
und die Verwendung von urllib.request
, wie es die Standardbibliothek einheitlich verwendet.
Zumindest in Python 2.x kann man nicht import urllib2.urlopen
machen
Sie müssen from urllib2 import urlopen
machen
Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import urllib2.urlopen
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named urlopen
>>> import urllib.request
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named request
>>>