고 품질 Python 코드 로 작 성 된 5 가지 최적화 기법

지금 나 는 Python 을 사용 한 지 이미 오래 되 었 지만,내 가 이전에 쓴 코드 들 을 돌 이 켜 볼 때,때때로 매우 낙담 할 때 가 있다.예 를 들 어 파 이 썬 을 처음 사 용 했 을 때 나 는 Sudoku 라 는 게임(GitHub 주소:https://github.com/MichaelWashburnJr/PythonSudoku을 썼 다.이 게임 은 당시 에 내 가 비교적 잘 할 수 있 는 종목 이 라 고 할 수 있다.그러나 지금 은 코드 를 직접 복사 하고 실행 할 수 없습니다.구체 적 인 이 유 는 제 가 인 코딩 할 때 setup.py 나 requires.txt 파일 을 추가 하지 않 았 기 때 문 입 니 다.물론 이런 오 류 는 다 시 는 범 하지 않 을 것 입 니 다!
이로부터 나 는 여러 해 동안 자신 이 작성 한 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 에 서 는 함수 와 반환 값 에 대해 의문 을 가지 기 쉽다.특히 어떤 라 이브 러 리 의 함 수 를 호출 할 때만약 개발 자가 문 서 를 조회 해야만 함수 기능 을 알 수 있다 면 이러한 시간 절약 은 매우 가치 있 는 개선 이 될 것 이다.어떻게 할 까요?어떻게 간단 한 변수 이름 을 바 꾸 어 개발 시간 을 절약 합 니까?
함수 나 변수 이름 을 명명 할 때 나 는 세 가 지 를 중점적으로 고려 할 것 이다.
  • 함수 나 변수의 기능
  • 함수 나 변수 와 연 결 된 단위
  • 함수 나 변수 가 계산 한 데이터 형식
  • 예 를 들 어,만약 내 가 함 수 를 만들어 서 사각형 의 면적 을 계산 하고 싶다 면,나 는 함 수 를"calc"라 고 명명 할 것 이다.rect_area”。그러나 이 는 사용자 에 게 충분 한 정 보 를 제공 하지 않 았 다.함수 가 값 을 되 돌려 줍 니까?아니면 값 을 다른 어 딘 가 에 저장 합 니까?반환 치 의 단 위 는 피트 입 니까?쌀 입 니까?
    함수 명 에 더 많은 정 보 를 제공 하기 위해 서 나 는 그것 을"get"으로 수정 했다.rect_area_sq_ft”。이것 은 사용자 로 하여 금 이 함 수 를 얻 고 면적 을 되 돌려 주 며 단 위 는 피트 라 는 것 을 똑똑히 알 게 한다.
    만약 에 더욱 우호 적 인 함수 와 변 수 를 사용 하여 개발 자 라 는 이름 으로 5 분 을 절약 하면 이런 시간 이 누적 되면 개발 자의 효율 을 크게 향상 시 킬 것 이다.
    총결산
    이 방법 들 은 내 가 다년간 Python 프로 그래 밍 을 사용 하여 쌓 은 경험 이다.어떤 것 은 나의 총 결 이 고,어떤 것 은 다른 사람의 지적 에서 나온다.나 는 상술 한 건의 가 네가 더 좋 은 Python 코드 를 쓰 는 데 도움 이 되 기 를 바란다.
    저자 丨 Michael Washburn Jr.
    번역자
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기