2016-07-19 1 views
2

난 그냥이 코드를 썼다 :차별화 현지 수입

import os 
import helpers 

을 그리고 즉시 나는이 글을 읽을 때 나중에 helpers 내가 작성한 시스템 모듈 또는 1 인 경우, 궁금있을거야 실현 그리고 프로젝트의 dir (나는 그다지 기억할 수 없다! :)에 넣는다).

os은 시스템 모듈이고 helpers은 내 프로젝트에 속합니다.이 코드에서 분명히 알 수있는 Pythonic 방법은 무엇입니까? 그 효과에 대해 의견을 쓸 수는 있지만 그다지 좋지는 않을 것입니다.

다른 언어이 처리 방법 : 시스템이 프로젝트의 상대가 ""에 둘러싸여 포함하면서 <>에 둘러싸여 포함되어 있기 때문에 C에서

  • ++ 문제가 존재하지 않습니다.

  • 문제에 대한 C# 솔루션은 현재 프로젝트의 모든 파일에 정의 된 기능을 가져 오기 문없이 액세스 할 수 있다는 것입니다.

편집 : 나는 프로젝트 로컬 모듈을 가져 오기위한 from . import someModule 구문을 소개 a related PEP을 발견했다. 나는 그걸 시험해 볼거야. 그러나 그것은 충분하지 않습니다. 시스템 모듈을 가져 오기 위해서 나는 아직도 일반 import blah 구 문만 가지고있다.

+0

내가 원하는 언어에 대한 메커니즘이 있는지 알 수 없습니다. 그러나 당신은 반드시'sys.path'를 조작하고 설치된 패키지 나 프로젝트 특정 패키지로부터 가져 오는 컨텍스트 관리자를 작성할 수 있습니다. 이 방법이 가독성을 높이는 데 도움이되지만 유지 관리 기능은 PITA가됩니다. – SuperSaiyan

답변

1

내가 본 몇몇 오픈 소스 프로젝트에서 여러 가지 회사에서 일했는데, 이는 가져 오기 명령문을 그룹으로 분리하는 줄 바꿈과 줄 바꿈을 구분하여 코딩하는 방식으로 간단히 수행됩니다.

그룹은 항상 코어 라이브러리 가져 오기, 타사 가져 오기, 당사자 가져 오기 순서 순으로 있습니다.

그래서 그룹의 예는 다음과 같다 : 파이썬에서 많은 것들과 마찬가지로

import os 
import sys 
from argparse import ArgumentParser 

import requests 
import termcolor 

from my_app import my_module1 
from my_app import my_module2 

,이 스타일은 코딩 규칙이다. 하지만 일반적인 것이므로 대부분의 Python 개발자가 그룹화를 쉽게 이해해야한다고 생각합니다. 사실 PEP8에서도 권장됩니다.

이러한 가져 오기를 그룹화하는 프로세스를 자동화 할 수있는 isort이라는 인기있는 도구가 있습니다.

더 명확한 것을 원할 경우 동일한 프로젝트 코드에 대해 상대적 가져 오기를 사용할 수 없습니다. 그런 다음이 모듈이 동일한 패키지에서 제공된다는 것이 100 % 확실합니다.