[파이썬을 0부터 배우기] 37. 파이썬 커스텀 모듈 사용 및 주의사항

맞춤 모듈

시스템에서 제공하는 내장 모듈을 사용하는 것 외에도 자체 프로그램용 모듈을 작성할 수도 있습니다. 파일 .py은 모듈이므로 사용자 지정 모듈은 매우 간단하며 기본적으로 파일을 만드는 것과 같습니다 .py. .py단, 파일을 다른 코드에서 모듈로 사용할 경우 .py파일 이름은 식별자의 명명 규칙을 따라야 한다는 점에 유의해야 합니다 .

모듈 검색 경로

모듈 생성은 매우 간단합니다. 설치 식별자의 명명 규칙에 따라 .py모듈인 파일이 생성됩니다. 그러나 문제는 이 모듈을 찾기 위해 생성된 .py파일을 어디에 넣고 코드의 명령문을 사용해야 하느냐입니다 .import

파이썬의 내장 sys모듈 의 속성 path은 프로그램이 실행될 때 모듈을 찾는 디렉토리를 나열합니다.이 디렉토리 중 하나에 우리가 만든 모듈을 넣기만 하면 됩니다.

import sys
print(sys.path)
[
 'C:\\Users\\chris\\Desktop\\Test',
 'C:\\Users\\chris\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip',
 'C:\\Users\\chris\\AppData\\Local\\Programs\\Python\\Python37\\DLLs',
 'C:\\Users\\chris\\AppData\\Local\\Programs\\Python\\Python37\\lib',
 'C:\\Users\\chris\\AppData\\Local\\Programs\\Python\\Python37',
 'C:\\Users\\chris\\AppData\\Roaming\\Python\\Python37\\site-packages',
 'C:\\Users\\chris\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages'
]

__all__사용법

모듈에 있는 모든 내용을 가져오기를 사용 하는 경우 본질적으로 이 모듈의 속성을 from <模块名> import *찾아 속성에 선언된 모든 내용을 가져옵니다. 이 모듈에 속성이 설정되지 않은 경우 이 모듈의 모든 콘텐츠를 이때 가져옵니다.__all____all____all__

모듈의 개인 멤버

모듈에서 밑줄로 시작하는 변수 및 함수는 _모듈의 비공개 멤버이므로 모듈을 가져올 때 _밑줄로 시작하는 변수는 기본적으로 가져오지 않습니다. 그러나 필수 사항은 아니며 _코드에서 . 그러나 문제가 발생할 수 있으므로 이렇게 사용하는 것은 권장하지 않습니다.

요약하다

test1.py__all__: 모듈에 속성이 없습니다.

a = 'hello'
def fn():
    print('我是test1模块里的fn函数')

test2.py__all__: 모듈에 속성이 있습니다.

x = '你好'
y = 'good'
def foo():
    print('我是test2模块里的foo函数')
__all__ = ('x','foo')

test3.py_:로 시작하는 속성이 있습니다.

m = '早上好'
_n = '下午好'
def _bar():
    print('我是test3里的bar函数')

demo.py

from test1 import *
from test2 import *
from test3 import *

print(a)
fn()

print(x)
# print(y) 会报错,test2的__all__里没有变量 y
foo()


print(m)
# print(_n)  会报错,导入test3时, _n 不会被导入

import test3
print(test3._n)  # 也可以强行使用,但是强烈不建议

__name__사용법

실제 개발에서는 개발자가 모듈을 작성한 후 모듈이 프로젝트에서 원하는 효과를 얻도록 하기 위해 개발자가 .py직접 파일에 몇 가지 테스트 정보를 추가합니다. 예를 들면 다음과 같습니다.

test1.py

def add(a,b):
    return a+b

# 这段代码应该只有直接运行这个文件进行测试时才要执行
# 如果别的代码导入本模块,这段代码不应该被执行
ret = add(12,22)
print('测试的结果是',ret)

demo.py

import test1.py   # 只要导入了tets1.py,就会立刻执行 test1.py 代码,打印测试内容

이 문제를 해결하기 위해 파이썬에는 파일을 실행할 때 변수가 있습니다 __name__. 파이썬에서는 .py파일을 직접 실행할 때 .py파일에 있는 값 __name__이 이므로 파일을 직접 실행하는지 모듈로 임포트 __main__하는지 판단할 수 있다 ..py

def add(a,b):
    return a+b

if __name__ == '__main__':  # 只有直接执行这个`.py`文件时, `__name__`的值才是 `__main__`
    # 以下代码只有直接运行这个文件才会执行,如果是文件被别的代码导入,下面的代码不会执行
    ret = add(12,22)
    print('测试的结果是',ret)

지침

모듈을 사용자 정의할 때 사용자 정의 모듈 이름이 시스템 모듈 이름과 동일하지 않아야 한다는 사실에 주의해야 합니다. 그렇지 않으면 문제가 발생합니다!

고급 사례

[Python] 파이썬은 당신의 지능과 운에 도전하는 단어 추측 게임을 실현합니다!

[python] Python tkinter 라이브러리는 무게 단위 변환기를 위한 GUI 프로그램을 구현합니다.

[python] Selenium을 사용하여 (2023 Blog Star) 항목 가져오기

[python] Selenium 및 Chrome WebDriver를 사용하여 [Tencent Cloud Studio 실습 캠프]에서 기사 정보 얻기

Tencent Cloud Cloud 스튜디오를 사용하여 Baidu AI 예약을 실현하여 텍스트 인식 실현

[Fun with Python 시리즈 [Xiaobai must see] Python 다중 스레드 크롤러: 이모티콘 패키지 웹사이트 사진 다운로드

[Python으로 놀기 시리즈] [Xiaobai의 필수 볼거리] Python을 사용하여 Shuangseqiu의 역사적 데이터를 크롤링하고 시각적으로 분석

[파이썬으로 놀기 시리즈] [샤오바이 꼭 봐야지] 파이썬 크롤러 기술을 이용해 프록시 IP를 얻어 파일로 저장

[Xiaobai에서 꼭 봐야 할 것] PIL 라이브러리를 사용하여 여러 이미지를 순위 및 열로 합성하는 Python 이미지 합성 예제

[Xiaobai 필견] Python 크롤러 실전, 여신 사진을 일괄 다운로드하여 로컬에 저장

[Xiaobai 필견] Python 워드 클라우드 생성기 상세 분석 및 코드 구현

[샤오바이 필견] 파이썬, NBA 선수 데이터 예시 크롤링

[Xiaobai에서 꼭 봐야 할 것] Python을 사용하여 히말라야 오디오를 크롤링하고 저장하는 샘플 코드

[샤오바이 필견] 파이썬으로 리그 오브 레전드 스킨 사진 일괄 다운로드 기술 구현

[Xiaobai 필견] Python 크롤러 데이터 처리 및 시각화

[샤오바이 필견] 영광의 왕 영웅 스킨 사진을 쉽게 얻을 수 있는 파이썬 크롤러 프로그램

[Xiaobai에서 꼭 봐야 할 것] Python을 사용하여 개인화 목록 Word 문서 생성

[Xiaobai에서 꼭 봐야 할 것] Python 크롤러 전투: Onmyoji 웹사이트에서 사진을 가져와서 자동으로 저장

Xiaobai 필견 도서관 관리 시스템 시리즈 - 로그인 및 등록 기능을 위한 샘플 코드

Xiaobai의 실전 100건: Xiaobai 시작에 적합한 완전하고 간단한 쌍세구 복권 당첨 판정 프로그램

geopandas 및 shapely(.shp)를 사용한 공간 데이터 처리 및 시각화

셀레늄을 사용하여 Maoyan 영화 목록 데이터 크롤링

이미지 향상 알고리즘 Retinex의 원리 및 구현에 대한 자세한 설명

크롤러 시작 안내서(8): 시각적 분석을 위한 기상 데이터 크롤러 프로그램 작성

크롤러 입문 가이드(7): Selenium 및 BeautifulSoup을 사용하여 Douban Movie Top250 크롤링 예제 설명 [파충류 Xiaobai는 꼭 봐야 함]

크롤러 시작 가이드(6): 안티 크롤러 및 고급 기술: IP 프록시, 사용자 에이전트 변장, 쿠키 우회 로그인 확인 및 확인 코드 식별 도구

크롤러 입문 가이드(5): 분산 크롤러 및 동시성 제어 [크롤링 효율성 향상 및 요청 합리성 제어를 위한 구현 방법]

크롤러 시작하기(4): Selenium 및 API를 사용하여 동적 웹 페이지를 크롤링하는 가장 좋은 방법

크롤러 시작 가이드(3): Python 네트워크 요청 및 일반적인 안티 크롤러 전략

크롤러 시작하기(2): 데이터 추출 및 처리에 정규식을 사용하는 방법

파충류 시작하기(1) : 파충류의 기초와 기술을 배운다

이미지 인식에 딥러닝 모델 적용: CIFAR-10 데이터셋 실습 및 정확도 분석

Python 객체 지향 프로그래밍 기본 사항 및 샘플 코드

MySQL 데이터베이스 작업 가이드: Python을 사용하여 작업을 추가, 삭제, 수정 및 쿼리하는 방법 알아보기

Python 파일 작업 가이드: 인코딩, 읽기, 쓰기 및 예외 처리

Python 및 Selenium을 사용하여 크롤링 자동화#【Dragon Boat Festival Special Call for Papers】궁극의 기술을 탐색하면 미래는 당신에게 있습니다"Zong" #기사 기고

Python 다중 스레드 및 다중 프로세스 자습서: 포괄적인 분석, 코드 사례 및 최적화 기술

Selenium 자동화 도구 세트 - 전체 안내서 및 자습서

Python 웹 크롤러 기초 고급 실전 튜토리얼

Python 입문 자습서: for 루프, while 루프, 문자열 작업, 파일 읽기 및 쓰기, 예외 처리에 대한 기본 지식을 습득합니다.

Pandas 데이터 처리 및 분석 튜토리얼: 기초부터 실전까지

Python에서 일반적으로 사용되는 데이터 유형 및 관련 작업에 대한 자세한 설명

[2023년 최신] 분류모델 지표 개선을 위한 6대 방안 상세설명

입문 Python 프로그래밍 기본 및 고급 기술, 웹 개발, 데이터 분석, 기계 학습 및 인공 지능

4가지 회귀 방법을 사용한 그래프 예측 결과: 벡터 회귀, 임의 포레스트 회귀, 선형 회귀, K-최근접 이웃 회귀

추천

출처blog.csdn.net/qq_33681891/article/details/132335594