[파이썬 학습 매뉴얼] 파이썬 모듈 지식 총결산

4294 단어 python

가져오기 모듈(import) 실행 과정


1. 모듈 파일 찾기
2. 비트코드로 컴파일하기 (바이트 파일이 원본 파일보다 오래된 것을 발견하면 원본 파일을 수정한 적이 있으면 원본 파일을 다시 컴파일하고 표준 모듈 검색 라이브러리에서 바이트 파일만 발견하면 프로그램은 바이트 코드를 직접 불러온다)
3. 모듈에 정의된 대상을 만들기 위해 모듈의 코드를 실행한다(모듈에 불러오는 명령을 위에서 아래로 순서대로 실행한다).
이 세 가지 절차는 프로그램이 실행될 때만 모듈을 처음 가져올 수 있습니다.여러 번 가져오면 메모리에 불러온 대상만 추출합니다.기술적으로python은 모듈을 불러올 때sys라는 모듈을 저장합니다.modules의 테이블에서 가져오는 것을 실행할 때 테이블의 내용을 찾습니다. 존재하지 않으면 가져옵니다. 상기 세 가지 절차를 시작합니다.
주: 가져온 모듈은 바이트 코드를 생성하고 직접 실행하는 맨 윗부분의python 프로그램은 나타나지 않습니다.pyc 바이트 코드는 이 파일이 다른 모듈에서 가져온 적이 없으면, 맨 윗부분 파일의 바이트 코드는 메모리에서 사용하면 바로 버려집니다.

모듈 검색 경로 규칙


1. 프로그램의 홈 디렉터리(python 모듈을 실행할 때 사용자가 있는 현재 디렉터리)
2. PYTHONPATH 환경 변수 디렉터리(예를 들어 PYTHONPATH=/home/Python/lib, 우선순위는 왼쪽에서 오른쪽으로 검색)
3. 표준 링크 라이브러리 디렉토리
4.아무.pth 파일의 내용은.pth가 접미사인 파일이며 파일 내용의 디렉터리가 실제로 존재해야 정상적으로 가져옵니다(존재한다면. 이 방식은python에서 비교적 새로운 모듈 경로 규칙으로 PYTHONPATH의 대체 방식으로 사용할 수 있다. 경로 파일은 서로 다른 시스템과python 버전에 저장된 위치가 다르다. Python N.M으로 발표된 Python 버전이고 Windows 시스템에서는 C:\Python NM과 C:\Python NM\Lib\site-packages에서 경로 파일을 찾고 UNIX와 Linux에서는 loc/local/Python/python/python/packages에서 경로 파일을 찾는다.ckages/usr/local/lib/site-python, 시험'/usr/local/lib/python 3.4/dist-packages 이 디렉토리에서도 유효합니다.)
이 네 개의 구성 요소를 조합하면sys가 된다.path, 1, 3은 자동으로 정의되고, 2, 4는 사용자 정의로 프로젝트 확장 경로에 사용할 수 있습니다.
실제로 import 및 from 문은 대입문입니다.
1. import은 전체 모듈의 대상을 변수 이름에 값을 부여한다.
2.from은 모듈의 같은 이름의 변수에 하나 이상의 변수 이름을 부여한다.
from 문장은 변수를 가져올 때 이 모듈에 존재하는 변수를 덮어쓰고 혼란과 결함을 초래할 수 있습니다.사용할 때, 이 점을 주의하기만 하면,from 문장은 프로그래머에게 많은 번거로움을 줄일 수 있다.
내부 모듈 명칭 공간은 사전 대상으로 저장되며 일반적인 사전 대상일 뿐입니다.可以通过__dict__모듈 이름 공간 사전을 가져오는 방법입니다. 모듈에 부여된 변수 이름은 모두 사전의 키가 됩니다.
>>> import string
>>> list(string.__dict__)
['ascii_uppercase', '__spec__', '__cached__', '__name__', 'punctuation', 'ChainMap', 'ascii_lowercase', 'whitespace', '_re', '__builtins__', '_string', 'ascii_letters', 'capwords', 'octdigits', 'Template', '_TemplateMetaclass', '__doc__', 'printable', '__file__', '__loader__', 'hexdigits', 'digits', 'Formatter', '__package__']
>>> 

가져오기 작업에서는 상위 코드에 대해 가져온 파일의 코드가 표시되지 않습니다. 가져온 파일에는 가져온 파일의 변수 이름이 표시되지 않습니다. 더 정확히 말하면 다음과 같습니다.
1. 함수는 물리적으로 이 함수 안에 있지 않으면 다른 함수 내의 변수 이름을 볼 수 없다고 느낀다.
2. 함수 프로그램 코드는 명확한 가져오기를 실행하지 않으면 다른 모듈의 변수 이름을 볼 수 없습니다.
정확히 말하면 모듈의 삽입은 맨 윗부분(상층)으로 삽입할 수 없지만 아래로 깊이 있게 삽입할 수 있다.

모듈 재부팅


1. import 가져오기는 모듈에서 처음 가져올 때만 모듈의 코드를 불러오고 실행합니다.
2. 이후의 가져오기는 이미 불러온 모듈을 사용하고 다시 실행하지 않습니다
3. 이미 불러온 모듈을 다시 불러오려면reload 내장 함수를 사용하십시오.
reload와 import의 차이점은 다음과 같습니다.
1. reload는python의 내장 함수이지 문장이 아니다.
2.reload에 전달된 것은 이미 존재하는 모듈 대상이지 변수명이 아니다
3. reload는python에 있다.0은(는) 모듈에 있으며 가져와야 사용할 수 있습니다.from imp import reload
reload는 모듈의 맨 윗부분 파일의 내용을 다시 실행하지만,reload는 모듈 대상을 삭제하고 재구성하지 않고 적당한 곳에서 모듈 대상을 수정합니다.reload 함수는 모듈 중 더 깊은 모듈, 즉 맨 윗부분의 코드만 불러오지 않습니다.
reload 고려 사항:
reload는 모듈의 현재 이름 공간에서 모듈 파일의 새 코드를 실행합니다.
1. 파일의 맨 위에 값을 부여하는 문장은 변수 이름을 새 값으로 바꿉니다.
2. 리셋은 import을 사용하여 모듈을 읽은 모든 클라이언트에 영향을 줍니다.
3. 다시 불러오는 것은from을 사용하는 클라이언트에게만 영향을 미친다.
파일을 써서 위의 규칙을 실험해 보자.
우리는 파일 모듈이 하나 있다.py:
test="No modified"
이 코드만 썼어요.
프로그램에서 이 모듈을 가져오려면 다음과 같이 하십시오.
>>>import modul1
>>> test
'No modified'
>>> from modul1 import *
>>> modul1.test
'No modified'

위에서 보듯이 두 가지test는 하나는from문구를 통해 직접 값을 부여받은test이고, 다른 하나는모듈호출(import문구)을 통해얻은modul1.test.모듈 수정 1.py 파일 다음에 reload 문을 계속 실행합니다.
>>> from imp import reload
>>> reload(modul1)

>>> test
'No modified'
>>> modul1.test
'have been modified'
>>> from modul import *
>>> test
'have been modified'

규칙 2, 3을 검증하는 동시에 우리도from문장은 사실상 변수에 대한 값이고 import문장은 모듈에 대한 인용이라고 생각할 수 있다.reload 문장은 실제적으로 모듈을 수정하고 모듈을 다시 불러왔을 뿐,from 문장을 통해 얻은 변수를 직접 수정하지 않았습니다.from 문장을 다시 실행할 때 로컬 작용의 변수를 업데이트했습니다.

좋은 웹페이지 즐겨찾기