pyhton 중pycache__폴 더 의 생 성과 역할 에 대한 상세 한 설명

2083 단어 pyhtonpycache
python 으로 프로젝트 를 만 들 었 으 나 처음 실 행 된 후 프로젝트 루트 디 렉 터 리 에 이 생 성 되 었 습 니 다.pycache__폴 더,안 에는 py 파일 과 같은 이름 의'cpython-35.pyc'로 끝 나 는 여러 파일 들 이 있 습 니 다.cpython-35 의 각종 의미,cpython 은 c 언어 로 이 루어 진 Python 해석 기 를 대표 하고-35 는 3.5 버 전 을 대표 합 니 다.pyc 에 대해 서 는 모듈 호출 에 대해 먼저 알 아야 합 니 다.
모듈 호출
Python 이 모듈 을 가 져 올 때 실제로 가 져 온 모듈 을 한 번 실행 합 니 다.예 를 들 어 test.py 모듈 호출:

def haha():
  print("haha")

haha()

주 프로그램 main.py:

import test

print("good")

실행 결과:
haha
good
어떻게 해야만 호출 된 모듈 의 코드 를 실행 하지 않 고 단순히 호출 할 수 있 습 니까?모듈 코드 가 실행 되 지 않 으 려 면 를 사용 하 십시오.name__。모듈 가 져 오기 와 관련 이 없다 면,name__의 값 은main__,모듈 이 인용 되 어 가 져 오 면 이 모듈 안의name__값 은 파일 의 이름(.py 가 없 음)입 니 다.예 를 들 어 test.py:

def haha():
  print("haha")

haha()
print(__name__)

실행 결 과 는:
haha
__main__
test 가 인용 되 었 다 면,예 를 들 어 test 2:

import test

print("good")

실행 결 과 는:
haha
test
good
호출 된 모듈 에 코드 를 실행 하기 전에 if 를 추가 합 니 다.name__ == '__main__':이렇게 판단 하면 호출 된 모듈 의 코드 는 실행 되 지 않 을 것 이다.
유래
Python 프로그램 이 실 행 될 때 바 이 너 리 코드 로 컴 파일 하지 않 고 원본 코드 에서 프로그램 을 실행 합 니 다.쉽게 말 하면 Python 해석 기 는 원본 코드 를 바이트 코드 로 바 꾼 다음 해석 기 에서 이 바이트 코드 를 실행 합 니 다.
해석 기의 구체 적 인 작업:
1.모듈 의 로드 와 링크 완료;
2.소스 코드 를 PyCodeObject 대상(즉 바이트 코드)으로 컴 파일 하여 메모리 에 기록 하여 CPU 가 읽 을 수 있 도록 합 니 다.
3.메모리 에서 읽 고 실행 한 후 PyCodeObject 를 하 드 디스크 에 기록 합 니 다.즉,.pyc 또는.pyo 파일 에 복사 하여 현재 디 렉 터 리 에 있 는 모든 스 크 립 트 의 바이트 파일 을 저장 합 니 다.
그 다음 에 이 스 크 립 트 를 다시 실행 하면[로 컬 에 상기 바이트 파일 이 있 는 지]와[이 바이트 파일 의 수정 시간 이 원본 파일 뒤에 있 는 지]를 확인 하고 직접 실행 합 니 다.그렇지 않 으 면 상기 절 차 를 반복 합 니 다.
처음 코드 를 실 행 했 을 때 Python 해석 기 는 컴 파일 된 바이트 코드 를 에 두 었 습 니 다.pycache__폴 더 에서 이렇게 다시 실행 하면 호출 된 모듈 이 바 뀌 지 않 으 면 컴 파일 단 계 를 건 너 뛰 고 바로pycache__폴 더 에서 관련 된*.pyc 파일 을 실행 하여 프로젝트 실행 전의 준비 시간 을 크게 단축 시 켰 습 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기