from urllib import request
및 조각
import urllib.request
그들은 서로 바꿀 수 있는 경우 또는. 교환 가능한 경우, 이는 " standard" /" preferred";;; 구문 (경우)?
감사합니다!
이 때 어떻게 의존하기 액세스하려는 가져오기의) 는 다음과 같은 뜻이 있다.
from urllib import request
# access request directly.
mine = request()
import urllib.request
# used as urllib.request
mine = urllib.request()
또한 가져올 때 셨으며 앨리어스가 교도관님도요 단순하게 또는 마스크을 피하기 위해 구축됨 ins:
from os import open as open_
# lets you use os.open without destroying the
# built in open() which returns file handles.
이미 많은 사람들이 'vs' 에서 '가져오기의 설명하고 이에 대한 좀 더 후드 아래에 있는, 그래서 난 로렌아줌마가 시도하시려면 설명하기 위해 실제 차이가 없다.
첫째, 기본 가져오기의 못하며창조된 제표를 정확히 말씀 드리겠습니다.
>. 'X' 를 만들고 있는 모듈에서의 참조입니다 임포트합니다 모듈에서는 >. 현재 이름공간이. 그럼 경로를 완료됨으로 모듈에서는 정의해야 합니다 >. 특정 속성, 메서드 내부에서 모듈에서는 액세스하면 (예: >. 'x' 이름 '또는' 조지아트리부트)
>. 'X' 모든 공용 객체에는 임포트합니다 모듈에서는 만들고 참조입니다 >. 현재 이름공간이 (즉, 모든 것을 모듈에서의 의해 정의된 >. 이름 없는 '로 시작하는 _') 또는 있는모든 이름 >. 당신이 말한. >. >. 또는, 즉 뒤에을 you& # 39, ve 실행하십시오 기술서임을 됩니다 >. 일반 (오히려) 이름을 사용할 것을 가리키는 'X' 에 정의된 모듈에서는. >. 하지만 'X' x ',' 이름 자체가 정의되지 않은, 그래서 doesn& # 39 빗나갔다. 만일 '이름' >. 이미 정의된, 새 버전을 바뀝니다. 이름 앞에 'X' 는 아웃하기로 >. 일부 다른 객체까지 너회의 모듈에서는 변경일 가리키십시오 디이브이 되지 않습니다. >. >. 따라서 모든 이름은 국내 이름공간이 모듈에서 사용할 수 있습니다.
지금 우리가 볼 때 일어나는 let& # 39 의 'Y' 가져오기의 x:
>>> import sys
>>> import os.path
'확인' 시s.모두리스 이름이 'os' 와 '오스트발트':
>>> sys.modules['os']
<module 'os' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.pyc'>
>>> sys.modules['os.path']
<module 'posixpath' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.pyc'>
확인란 '글로벌 ()' 와 '동네 이름이' os '와' 오스트발트 딕트 이름공간이 () '':
>>> globals()['os']
<module 'os' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.pyc'>
>>> locals()['os']
<module 'os' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.pyc'>
>>> globals()['os.path']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'os.path'
>>>
위에서 예를 들어, 우리가 늑대굴에서 'os' (해당 지역 및 글로벌 네임스페이스을 추가됩니다. 그래서, 우리는 'os' 사용할 수 있어야 합니다.
>>> os
<module 'os' from
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.pyc'>
>>> os.path
<module 'posixpath' from
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.pyc'>
>>>
&, 헤립 아니라, '길'.
>>> path
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'path' is not defined
>>>
삭제하면 'os' 에서 '네임스페이스인 너회가 won& 지역 (), t # 39' os '또는' 오스트발트 인컨텍스트 액세스하려면 있어야 할 경우에도 ',' 시s.모두리스 존재하는 ':
>>> del locals()['os']
>>> os
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'os' is not defined
>>> os.path
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'os' is not defined
>>>
이제 let& # 39 에 보면 '에서.
>>> import sys
>>> from os import path
'확인' 시s.모두리스 이름이 'os' 와 '오스트발트':
>>> sys.modules['os']
<module 'os' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.pyc'>
>>> sys.modules['os.path']
<module 'posixpath' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.pyc'>
그래서 않았다 '는' 시s.모두리스 동일합니까 사용하여 임포트한 임포트합니다 때 우리는 '이름'.
그래. # 39 의 let& 지역 () '와' 글로벌 () '이' 확인하는 이름공간이 딕토스 다음과 같습니다.
>>> globals()['path']
<module 'posixpath' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.pyc'>
>>> locals()['path']
<module 'posixpath' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.pyc'>
>>> globals()['os']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'os'
>>>
'길' '가 아니라' 오스트발트 사용하여 액세스할 수 있습니다.
>>> path
<module 'posixpath' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.pyc'>
>>> os.path
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'os' is not defined
>>>
>>> del locals()['path']
>>> path
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'path' is not defined
>>>
한 최종 사용 예를 앨리어싱:
>>> from os import path as HELL_BOY
>>> locals()['HELL_BOY']
<module 'posixpath' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.pyc'>
>>> globals()['HELL_BOY']
<module 'posixpath' from /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.pyc'>
>>>
어떤 경로를 정의:
>>> globals()['path']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'path'
>>>
임포트합니다 경우 동일한 '이름' 서로 다른 두 모듈:
>>> import sys
>>> from os import stat
>>> locals()['stat']
<built-in function stat>
>>>
>>> stat
<built-in function stat>
다시 '에서' 슈틸 가져오기의 stat.
>>>
>>> from shutil import stat
>>> locals()['stat']
<module 'stat' from
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/stat.pyc'>
>>> stat
<module 'stat' from
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/stat.pyc'>
>>>
차이가 있습니다. 경우에 따라, 다른 won& # 39, 그 중 하나를 사용할 수 없다. 예를 들어보겠습니다. 말하도다 우리는 다음과 같은 구조:
foo.py
mylib\
a.py
b.py
Now, I want to 가져오기의 브룩스피 '에' '앨프리'. 임포트합니다 앨프리 '을' foo '' 보고 싶습니다. 어떻게 해야 합니까? 'A' 에서 두 명령문입니다 써요.
import b
'Foo.py' 에서 써요.
import mylib.a
'Foo.py', '이 아니라' 임포터로 실행할 때 발생합니다. 인터프리터는 가져오기의 문에 대한 불만이 커질 것으로 보인다 '고 모듈에서는 앨프리 없다' ('가져오기의 b') b. 그래서 어떻게 이 문제를 해결 한? 이런 상황에서 '에서' a '를' 가져오기의 미리b.b 기술서임을 가져오기의 변경 이후 'a' 와 'b' 모두 '미리브 작동하지 않을 수 있는'. 이때 (또는 하나 이상의 솔루션을) 를 사용하는 것이 절대 가져오기의:
from mylib import b
출처: https://stackoverflow.com/questions/16004076/python-importing-a-module-that-imports-a-module
윈도 2.x 적어도 실망에는 urllib2.urlopen '에서' 가져오기의 수행할 수 없습니다.
'에서' urllib2 우를로펜 임포트합니다 수행해야 합니다
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
>>>