Python의 "import x" 문과 "from x import y" 문을 정렬하는 올바른 방법은 무엇입니까?
python 스타일 가이드에서는 다음과 같이 그룹 Import를 권장합니다.
Import는 다음 순서로 그룹화해야 합니다.
- 표준 라이브러리 Import
- 관련 제삼자 수입
- 로컬 어플리케이션/특정 Import
그러나 두 가지 수입 방식을 어떻게 배치해야 하는지에 대해서는 언급하지 않았다.
from foo import bar
import foo
정렬에는 여러 가지 방법이 있습니다(모든 Import가 같은 그룹에 속해 있다고 가정합니다).
첫번째
from..import
,그리고나서import
from g import gg from x import xx import abc import def import x
첫번째
import
,그리고나서from..import
import abc import def import x from g import gg from x import xx
모듈 이름별 알파벳 순서, Import 종류 무시
import abc import def from g import gg import x from xx import xx
PEP8 에서는, 이것에 관한 우선 순서는 기재되어 있지 않습니다.또, 일부의 IDE 에서는, 그 기능의 개발자가 원하는 대로 행하고 있을 가능성이 있습니다.
이 내용을 명확히 하는 다른 PEP 또는 BDFL(또는 다른 Python 핵심 개발자)의 관련 의견/이메일을 찾고 있습니다.자신의 취향을 나타내는 주관적인 답변은 투고하지 말아 주세요.
수입품은 일반적으로 알파벳 순으로 분류되며 PEP 8 이외의 다양한 장소에 기재되어 있습니다.
알파벳 순으로 정렬된 모듈을 보다 빠르게 읽고 검색할 수 있습니다.결국 Python은 가독성이 가장 중요합니다.또, Import 한 것을 보다 간단하게 확인할 수 있어 중복 Import를 회피할 수 있습니다.
PEP 8에는 정렬에 관한 정보가 없습니다.즉, 사용할 것을 선택하는 것입니다.
평판이 좋은 사이트와 저장소의 몇 가지 언급에 따르면, 또한 인기도에 따르면 알파벳 순으로 정렬하는 것이 방법이다.
예를 들어 다음과 같습니다.
import httplib
import logging
import random
import StringIO
import time
import unittest
from nova.api import openstack
from nova.auth import users
from nova.endpoint import cloud
또는
import a_standard
import b_standard
import a_third_party
import b_third_party
from a_soc import f
from a_soc import g
from b_soc import d
Reddit 공식 저장소에는 일반적으로 PEP-8 가져오기 순서를 사용해야 한다고 명시되어 있습니다.그러나 각 Import 그룹에 대해 Import 순서를 다음과 같이 추가해야 한다는 몇 가지 추가 사항이 있습니다.
import <package>.<module> style lines in alphabetical order
from <package>.<module> import <symbol> style in alphabetical order
참고 자료:
- https://code.google.com/p/soc/wiki/PythonStyleGuide
- https://github.com/reddit/reddit/wiki/PythonImportGuidelines
- http://docs.openstack.org/developer/hacking/
- http://developer.plone.org/reference_manuals/external/plone.api/contribute/conventions.html#grouping-and-sorting
PS: isort 유틸리티는 Import를 자동으로 정렬합니다.
CIA의 내부 코딩 규칙(WikiLeaks Vault 7 유출의 일부)에 따라 파이썬 가져오기는 다음 세 그룹으로 분류해야 합니다.
- 표준 라이브러리 Import
- 서드파티제 Import
- 응용 프로그램별 Import
Import는 대소문자를 무시하고 이들 그룹 내에서 사전순으로 정렬해야 합니다.
import foo
from foo import bar
from foo.bar import baz
from foo.bar import Quux
from Foob import ar
PEP 8은 그것에 대해 전혀 언급하지 않았다.이 점에 대한 규약은 없으며, Python 커뮤니티가 반드시 하나를 정의할 필요는 없습니다.프로젝트에는 선택이 더 좋을 수 있지만 다른 프로젝트에는 최악의 선택입니다.솔루션마다 찬반 양론이 있기 때문에 이것은 선호도 문제입니다.그러나 관례를 따르려면 인용한 주요 순서를 존중해야 합니다.
- 표준 라이브러리 Import
- 관련 제삼자 수입
- 로컬 어플리케이션/특정 Import
예를 들어, Google은 이 페이지에서 가져오기를 각 범주(표준/서드파티/사용자)별로 사전 편집 방식으로 정렬할 것을 권장합니다.하지만 페이스북, 야후, 뭐 그런 곳에서는 다른 관례일 수도 있고...
나는 받아들여진 대답이 좀 장황하다고 느낀다.TLDR은 다음과 같습니다.
각 그룹 내에서 Import는 각 모듈의 전체 패키지 경로에 따라 대소문자를 무시하고 사전 편집 방식으로 정렬해야 합니다.
세 번째 옵션이 정답입니다.
import abc
import def
from g import yy # changed gg->yy for illustrative purposes
import x
from xx import xx
피톤 재주문 상품을 적극 추천합니다.승인된 답변의 두 번째 옵션에 이어 사전 커밋에도 통합되어 매우 유용합니다.
★★★★★import x
진술은 의 값에 따라 분류되어야 한다.x
모든 「」의 「」를 참조하십시오.from x import y
진술은 의 값에 따라 분류되어야 한다.x
.from x import y
뒤에 합니다.import x
★★★★★★★★★★★★★★★★★★.
import abc
import def
import x
from g import gg
from x import xx
from z import a
언급URL : https://stackoverflow.com/questions/20762662/whats-the-correct-way-to-sort-python-import-x-and-from-x-import-y-statement
'programing' 카테고리의 다른 글
선택한 특정 열을 새 DataFrame에 복사본으로 추출하는 중 (0) | 2022.11.26 |
---|---|
Instant를 날짜 형식으로 변환하는 방법 (0) | 2022.11.26 |
리스트에서 요소 찾기 및 바꾸기 (0) | 2022.11.26 |
자바에서는 int와 float 대신 byte를 사용하는 것이 더 효율적입니까? (0) | 2022.11.26 |
자바스크립트 함수의 이름이 문자열일 때 실행하는 방법 (0) | 2022.11.26 |