2011-05-15 2 views
11

저는 Python을 처음 사용하기 때문에 여러 코드 파일과 폴더에서 코드를 분리하는 간단한 방법을 찾지 못했습니다.Python의 다중 코드 파일 및 폴더 작업

오늘 내가하는 일은 각 폴더마다 __init__.py 파일을 만듭니다. 때로는 비어 있습니다. 왜 내가 그걸하는지 모르겠지만 필요한 것 같습니다. 이것이 C#으로 작업 한 첫 번째 차이점입니다.

두 번째 차이점은 모든 파일이 다른 파일을 참조 할 때마다 from model.table import Table과 같은 가져 오기를 사용해야한다는 것입니다. 나는 여러 참조가있는 경우 그리고 여러 수입을 사용해야합니다 :

from model import table1,table2 

다음 코드의 나머지 부분에서 내가 예를 당 table1.Table1를 사용해야합니다. 내가 원하지 않을 경우에, 나는

from model.table1 import Table1 
from model.table2 import Table2 

을해야하고 나는 단지 내가 모든 파일이 동일한에 있다면 C 번호에 익숙해 것과 너무 차이가 Table1

을 사용할 수 있습니다 우리는 import 할 필요가 없었습니다. 저에게 더 간단한 방법이 있습니까?

답변

14

당신은 모듈을 읽어해야합니다 : 기본적으로 http://docs.python.org/tutorial/modules.html

, 당신이 바로 코드를 정리되지 않은 생각 좀 더 상세하고 좋은 권고 사항은이 문서를 확인하십시오. 파이썬에서는 디렉토리와 파일이 의미가 있습니다. 파일에 무엇을 쓰는 것이 아닙니다. 모든 새로운 디렉토리 (__init__.py)와 새로운 파일을 만들 때마다 새로운 "네임 스페이스"를 만듭니다 ...

당신이 간단하게 할 수 model.py 파일에 정의 된 파일 /mydatabase/model.pyTable1, Table2을 등이있는 경우 :

from mydatabase.model import * 

Table 클래스에 새로운 파일을 생성하지 마십시오!

2

파이썬 가져 오기 시스템은 C#의 네임 스페이스와 상당히 비슷합니다. 원하는 경우 모듈의 가져 오기 동작을 __init__.py에 맞춤 설정할 수 있습니다. import * 또는 from x import *을 사용하여 모듈에서 정의한 모든 공용 객체를 현재 네임 스페이스로 가져올 수도 있습니다.

는 C#으로 고려 :

using System; 
Console.WriteLine("hello world!"); 

파이썬에서, (이 완전히 인위적인 상황을 사용) 할 수있는 :

system/ 
system/__init__.py 
system/console.py 

__init__.py에서 :

import console 

system/console.py에서 :

는 이제 파이썬 코드에서 당신은 할 수 : 이것은 일반적으로 파이썬에서 좋은 생각으로 간주되지 않습니다

from system import * 
console.write_line('hello world!') 

그러나. http://effbot.org/zone/import-confusion.htm