Python 에서 import 메커니즘 에 대한 상세 한 설명
파 이 썬 공식
정의:한 모듈 의 파 이 썬 코드 는 가 져 오 는 프로 세 스에 의 해 다른 모듈 의 코드 에 대한 액 세 스 를 얻는다.
1.정의:
모듈(module):논리(하나의 기능 실현)에서 Python 코드(변수,함수,클래스)를 조직 하 는 데 사용 되 며 본질은*.py 파일 입 니 다.파일 은 물리 적 조직 방식"module"입 니 다.name.py",모듈 은 논리 적 조직 방식"modulename"。
패키지(package):모듈 과 하위 패키지 로 구 성 된 Python 응용 프로그램의 실행 환경 을 정의 합 니 다.본질은 차원 있 는 파일 디 렉 터 리 구조 입 니 다.( 가 있어 야 합 니 다.init__.py 파일).
2.가 져 오 는 방법
#
import model_name
#
import module_name1,module_name2
# 、 ( )、
from moudule_name import moudule_element [as new_name]
방법 별명 사용 시"new"사용name()"호출 함수,파일 에서 다시 정의 할 수 있 습 니 다"moduleelement()함수.3.import 본질(경로 검색 및 검색 경로)
moudel_name.py
# -*- coding:utf-8 -*-
print("This is module_name.py")
name = 'Hello'
def hello():
print("Hello")
module_test01.py
# -*- coding:utf-8 -*-
import module_name
print("This is module_test01.py")
print(type(module_name))
print(module_name)
실행 결과:
E:\PythonImport>python module_test01.py
This is module_name.py
This is module_test01.py
<class 'module'>
<module 'module_name' from 'E:\\PythonImport\\module_name.py'>
모듈 을 가 져 올 때 모듈 이 있 는 폴 더 는 자동 으로 를 생 성 합 니 다.pycache__\module_name.cpython-35.pyc 파일."import module_name"의 본질은"module "입 니 다.name.py"의 모든 코드 를 메모리 에 불 러 오고 모듈 과 같은 이름 의 변 수 를 현재 파일 에 기록 합 니 다.이 변 수 는'module'입 니 다.
module_test02.py
# -*- coding:utf-8 -*-
from module_name import name
print(name)
실행 결과;E:\PythonImport>python module_test02.py
This is module_name.py
Hello
"from module_name import name 의 본질은 지정 한 변수 나 방법 을 현재 파일 로 가 져 오 는 것 입 니 다.
package_name / __init__.py
# -*- coding:utf-8 -*-
print("This is package_name.__init__.py")
module_test03.py
# -*- coding:utf-8 -*-
import package_name
print("This is module_test03.py")
실행 결과:
E:\PythonImport>python module_test03.py
This is package_name.__init__.py
This is module_test03.py
"import package_name"가방 가 져 오기 의 본질은 이 가방 의 를 실행 하 는 것 입 니 다.init__.py 파일,파일 실행 후"package"name"디 렉 터 리 아래 생 성"pycache__ / __init__.cpython-35.pyc 파일.package_name / hello.py
# -*- coding:utf-8 -*-
print("Hello World")
package_name / __init__.py
# -*- coding:utf-8 -*-
# __init__.py "package_name" "hello"
from . import hello
print("This is package_name.__init__.py")
실행 결과:
E:\PythonImport>python module_test03.py
Hello World
This is package_name.__init__.py
This is module_test03.py
모듈 을 가 져 올 때 기본적으로 현재 디 렉 터 리 에서 찾 은 다음 시스템 에서 찾 습 니 다.시스템 에서 찾 는 범 위 는 sys.path 의 모든 경 로 를 순서대로 찾 습 니 다.4.가 져 오기 최적화
module_test04.py
# -*- coding:utf-8 -*-
import module_name
def a():
module_name.hello()
print("fun a")
def b():
module_name.hello()
print("fun b")
a()
b()
실행 결과:
E:\PythonImport>python module_test04.py
This is module_name.py
Hello
fun a
Hello
fun b
여러 함수 가 같은 모듈 의 같은 방법 을 반복 적 으로 호출 해 야 하 며,매번 호출 할 때마다 모듈 을 반복 적 으로 찾 아야 합 니 다.그래서 다음 과 같은 최 적 화 를 할 수 있다.module_test05.py
# -*- coding:utf-8 -*-
from module_name import hello
def a():
hello()
print("fun a")
def b():
hello()
print("fun b")
a()
b()
실행 결과:
E:\PythonImport>python module_test04.py
This is module_name.py
Hello
fun a
Hello
fun b
"from module"사용 가능name import hello"를 최적화 하여 검색 과정 을 줄 였 습 니 다.5.모듈 의 분류
내장 모듈
"dir("를 통 해builtins__)" Python 의 내장 함수 보기
>>> dir(__builtins__)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__','__name__', '__package__', '__spec__', 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round','set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
비 내장 함 수 는"import"를 사용 하여 가 져 와 야 합 니 다.Python 의 모듈 파일 은"설치 경로\Python\\Python 35\\Lib"디 렉 터 리 에 있 습 니 다.
제3자 모듈
"pip install"명령 을 통 해 설 치 된 모듈 과 자신 이 사이트 에서 다운로드 한 모듈.일반 제3자 모듈 은'설치 경로\Python\Python 35\\Lib\site-packages'디 렉 터 리 에 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.