ProgramingTip

수입 주문 코딩 표준

bestdevel 2020. 10. 14. 08:06
반응형

수입 주문 코딩 표준


PEP8 은 다음을 제안합니다.

다음 순서로 그룹화되어야합니다.

  1. 표준 라이브러리 가져 오기
  2. 관련 제 3 자 수입
  3. 로컬 애플리케이션 / 라이브러리 특정 가져 오기

각 수입품 그룹 사이에 빈 줄을 넣어야합니다.

표준 정적 코드 분석 도구를 사용하여 패키지 어디서나 위반 여부를 확인하는 방법이 있습니까 , 같은 pylint, pyflakes, pychecker, pep8?


위반 사례 :

from my_package import my_module
from django.db import models
import os

가져 오는 올바른 방법 :

import os

from django.db import models

from my_package import my_module

현재 버전의 pylint는 이제이 작업을 수행하고 오류 클래스 C0411로보고합니다.


업데이트 (2016) : sbywater 가 가장 최근에 답변했습니다.


그것을 발견! (실수로 "해커의 기술 가이드"를 읽는 동안)

hacking 이라는 OpenStack Hacking Style Checks 프로젝트 에는 가지 고유 한 확장 기능이 도입되었습니다 . hacking_import_groups 가운데 (관련이 커밋 ).flake8

예 :

  • 요구 사항

  • 예제에 사용 된 파일

    • tox.ini (맞춤 검사를 사용하고 싶다고 flake8에 알려야합니다)

      [hacking]
      local-check = hacking.core.hacking_import_groups
      

      UPD : hacking검사 경로 의 최신 버전이 변경 되었으나 이제 hacking.checks.imports.hacking_import_groups.

    • test.py (체크 대상)

      import requests
      import sys
      from my_module import print_smth
      
      
      print_smth(requests.get('https://google.com'))
      print_smth(sys.version)
      
    • my_module.py(에서 사용하는 로컬 가져 오기 오기 test.py)

      def print_smth(smth):
          print smth
      

그런 다음 flake8반대하면 test.py:

$ flake8 test.py
test.py:2:1: H305  imports not grouped correctly (requests: third-party, sys: stdlib)
test.py:3:1: H305  imports not grouped correctly (sys: stdlib, my_module.print_smth: project)
test.py:3:1: H306  imports not in alphabetical order (sys, my_module.print_smth)

그런 경우 I 그룹 올바른 순서의 다음의 수입 PEP8:

import sys

import requests

from my_module import print_smth


print_smth(requests.get('https://google.com'))
print_smth(sys.version)

발견 된 경고 없음 :

$ flake8 test.py
$

미래에 누군가를 도울 수 있기를 바랍니다.


https://pypi.python.org/pypi/isort 또는 https://github.com/timothycrosley/isort를 살펴보세요

isort는 전역 레벨 가져 오기 행 (try / excepts 블록, 함수 등을 제외하고 가져 오기)에 대해 지정된 파일을 구문 분석하고 가져 오기 유형별로 그룹화 된 파일의 맨 위에 모두 놓습니다.

  • 미래
  • Python 표준 라이브러리
  • 제 3 자
  • 현재 Python 프로젝트
  • 명시 적 로컬 (. 가져 오기 전 : from. import x)

사용자 지정 별도 섹션 (구성 파일의 forced_separate 목록에 의해 정의 됨) 각 섹션 내에서 가져 오기가 알파벳순으로 정렬됩니다. isort는 중복 파이썬 가져 오기를 자동으로 제거하고 가져 오기에서 지정된 줄 길이 (기본값 : 80)까지 긴 줄을 감 쌉니다.

https://pypi.python.org/pypi/flake8-isort는 이 기능을 flake8에 연결합니다.


flake8플러그인이 존재합니다 flake8-가져 오기 위해 .

이 패키지는 3 개의 새로운 flake8 경고를 추가합니다.

I100 : 수입 명세서의 순서가 잘못되었습니다.

I101 : 가져 오기에서 가져온 이름의 순서가 잘못되었습니다.

I201 : 섹션 또는 가져 오기 사이에 줄 바꿈이 없습니다.

참고 URL : https://stackoverflow.com/questions/22722976/import-order-coding-standard

반응형