고 품질 Python 코드 로 작 성 된 5 가지 최적화 기법
이로부터 나 는 여러 해 동안 자신 이 작성 한 Python 코드 의 품질 변화 과정 을 총 결 하 였 다.그것들 은 더욱 간결 하고 건장 하 며 읽 기 쉬 워 졌 다.그런데 파 이 썬 코드 가 더 좋아 진 이 유 는 무엇 일 까요?
본 논문 에서 필 자 는 여러분 과 함께 Python 코드 의 최적화 수단 이나 크 거나 작은 것 을 연구 할 것 입 니 다.이것 이 당신 이 Python 코드 의 질 을 향상 시 키 는 데 도움 이 되 기 를 바 랍 니 다.물론 이런 방식 은 다른 프로 그래 밍 언어 와 기술 에 도 적용 된다.
1.PIP 를 통 해 설치 할 수 있 는 패키지 로 코드 설정
새 Python 패 키 지 를 사용 하려 면'pip install'명령 을 사용 하여 패키지 이름 이나 가방 의 위 치 를 따라 설치 할 수 있 으 면 매우 편리 합 니 다.
이 점 을 실현 할 수 있 는 많은 방법 이 있 습 니 다.제'go to'프로젝트 의 실현 방법 은 setup.py 파일 을 만 드 는 것 입 니 다.
우리 가'flask'에 있다 고 가정 해 봐.example.py"에 간단 한 Flask 프로그램 이 있 습 니 다.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
def main():
app.run()
if __name__ == ‘__main__':
main()
우 리 는 그것 을 설치 가능 한 Python 패키지 로 설정 할 수 있다.방법 은:우선 그것 을 하나의 단독 폴 더 로 이동 시 키 는 것 입 니 다.example/")다음 프로젝트 루트 폴 더 에 다음 과 같은 setup.py 파일 을 만 듭 니 다.
from distutils.core import setup
setup(
name='flask_example',
version='1.0',
description='Hello, World! in flask.',
packages=['flask_example'],
install_requires=[
'Flask==0.12.2'
],
entry_points = {
'console_scripts': 'runserver=flask_example.flask_example:main'
}
)
이렇게 하면 일련의 장점 을 가 져 올 수 있다.우선,"pip install-e"를 사용 하여 로 컬 에 프로그램 을 설치 할 수 있 습 니 다.이렇게 하면 개발 자 들 은 setup.py 파일 이 모든 힘 든 작업 을 처리 하기 때문에 프로젝트 를 쉽게 복제 하고 설치 할 수 있 습 니 다.그 다음 에 setup.py 파일 을 사용 하여 의존 관계 관 리 를 한다.install_requires 변 수 는 사용 할 패키지 와 버 전 을 정의 할 수 있 습 니 다.사용 하 는 패키지 이름과 버 전이 확실 하지 않 으 면'pip freeze'를 실행 하여 볼 수 있 습 니 다.
마지막 으로 프로그램 패키지 의 입구 점 을 정의 할 수 있 습 니 다."runserver"를 간단하게 실행 하면 명령 행 에서 코드 를 실행 할 수 있 습 니 다.
2.linter 도구 캡 처 코드 오류
linter(문법 검사)를 사용 하면 코드 의 문법 문 제 를 자동 으로 복구 할 수 있 습 니 다.PyLint 는 강력 한 Python 버 전의 linter 도구 입 니 다.Git 과 같은 버 전 관리 시스템 을 사용 하면 코드 를 제출 하기 전에 Git 이 linter 실행 코드 를 통 해 문법 문 제 를 해결 할 수 있 습 니 다.
우선 PyLint 패 키 지 를 설치 해 야 합 니 다.
pip install pylint
그리고 다음 코드 를.git/hooks/pre-commit 에 추가 합 니 다.pre-commit hook 이 있다 면 파일 의 끝 에 pylint 명령 을 추가 하면 됩 니 다.
#!/bin/sh
pylint <your_package_name>
이렇게 하면 코드 가 Git 저장 소 에 제출 되 기 전에 각종 오 류 를 자동 으로 포착 할 수 있다.문법 오류 외 에 다른 linter 도구 가 포착 할 수 있 는 흔 한 오류 도 포착 할 수 있다.3.상대 경로 가 아 닌 절대 경 로 를 사용 하여 가 져 오기
Python 에서 상대 경 로 를 사용 하여 모듈 을 가 져 오 는 경 우 는 매우 적 습 니 다(예 를 들 어 from.import). <모듈 이름>).Python 프로젝트 에 setup.py(또는 다른 유사 한 메커니즘 을 사용)파일 을 만 들 었 다 면 모듈 의 전체 경 로 를 통 해 하위 모듈 을 간단하게 참조 할 수 있 습 니 다.
PEP-8(Python 스타일 가이드)은 절대 경 로 를 가 져 오 는 것 을 추앙 합 니 다.이렇게 되면 가방 이름 이 더욱 직관 적 이 고 Python 소프트웨어 재단 에 따 르 면'더 규범 적'이 라 고 한다.
상대 경 로 를 사용 하 는 것 은 곧 악몽 이 될 것 이다.초기 에는 문제 가 없 었 을 수도 있 지만 모듈 경 로 를 바 꾸 거나 중대 한 재 구성 을 하면 정말 골 치 아 팠 다.
4.문맥 관리(키워드 포함)
파일,흐름,연결 을 언제든지 열 면 컨 텍스트 관리 자 를 사용 합 니 다.컨 텍스트 관리 자 는 파일 의 닫 기 를 처리 하고 이상 을 던 질 수 있 습 니 다.Python 에서 with 키 워드 를 사용 하면 이 기능 을 잘 실현 할 수 있 습 니 다.
대부분의 Python 초보 자 들 은 다음 과 같은 방식 으로 파일 을 쓸 수 있 습 니 다.
f = open(‘newfile.txt', ‘w')
f.write(‘Hello, World!')
f.close()
이렇게 하 는 것 은 매우 간단 하지만 이런 상황 을 상상 해 보 세 요.만약 에 당신 이 파일 에 수천 줄 을 썼 다 고 가정 하면 불행 하 게 도 갑자기 이상 을 던 졌 습 니 다.당신 의 파일 이 정확하게 닫 히 지 않 았 습 니 다.이때 당신 이 파일 에 쓴 모든 데 이 터 는 손상 되 거나 잃 어 버 릴 것 입 니 다.걱정 하지 마 세 요.간단 한 재 구성 을 통 해 이상 이 발생 하 더 라 도 파일 이 정상적으로 닫 히 는 것 을 확보 할 수 있 습 니 다.우 리 는 이렇게 할 수 있다.
with open(‘file', ‘w') as file:
file.write(‘Hello, World!')
아주 간단 해!그리고 코드 가 더욱 간결 해 졌 습 니 다.하나의"with"문 구 를 사용 하여 여러 개의 컨 텍스트 관리 자 를 열 수 있 으 며,여러 개의"with"문 구 를 끼 워 넣 지 않 아 도 됩 니 다.
with open(‘file1', ‘w') as f1, open(‘file2', ‘w') as f2:
f1.write(‘Hello')
f2.write(‘World')
5.직관 적 이 고 적절 한 함수 와 변수 이름 사용Python 에 서 는 함수 와 반환 값 에 대해 의문 을 가지 기 쉽다.특히 어떤 라 이브 러 리 의 함 수 를 호출 할 때만약 개발 자가 문 서 를 조회 해야만 함수 기능 을 알 수 있다 면 이러한 시간 절약 은 매우 가치 있 는 개선 이 될 것 이다.어떻게 할 까요?어떻게 간단 한 변수 이름 을 바 꾸 어 개발 시간 을 절약 합 니까?
함수 나 변수 이름 을 명명 할 때 나 는 세 가 지 를 중점적으로 고려 할 것 이다.
함수 명 에 더 많은 정 보 를 제공 하기 위해 서 나 는 그것 을"get"으로 수정 했다.rect_area_sq_ft”。이것 은 사용자 로 하여 금 이 함 수 를 얻 고 면적 을 되 돌려 주 며 단 위 는 피트 라 는 것 을 똑똑히 알 게 한다.
만약 에 더욱 우호 적 인 함수 와 변 수 를 사용 하여 개발 자 라 는 이름 으로 5 분 을 절약 하면 이런 시간 이 누적 되면 개발 자의 효율 을 크게 향상 시 킬 것 이다.
총결산
이 방법 들 은 내 가 다년간 Python 프로 그래 밍 을 사용 하여 쌓 은 경험 이다.어떤 것 은 나의 총 결 이 고,어떤 것 은 다른 사람의 지적 에서 나온다.나 는 상술 한 건의 가 네가 더 좋 은 Python 코드 를 쓰 는 데 도움 이 되 기 를 바란다.
저자 丨 Michael Washburn Jr.
번역자
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.