모듈 ¶
모듈이란? ¶
- 파이썬 프로그램 파일 혹은 C 확장 파일
- 프로그램(함수, 클래스... )과 데이터를 정의
- 사용자가 모듈에 정의된 함수나 변수의 이름을 사용하도록 허용하는것 ( = 라이브러리)
모듈을 왜 사용할까? ¶
- 코드를 재사용 할 수 있다.
- 모든것이 모듈단위로 분리되어 있다.
- 별도의 이름공간이 있어서 다른 모듈과 겹치지 않기 때문에 독립적인 작업이 가능하다.
모듈만들기(간단하게..) ¶
~cpp c = 2 def add(a, b): return a+b def mul(a, b): return a*b
mymath.py 라는 파일로 저장한다..
~cpp >>> import mymath >>> dir(mymath) ['__builtins__', '__doc__', '__file__', '__name__', 'add', 'c', 'mul'] >>> mymath <module 'mymath' from 'C:\Python22\mymath.py'> >>> >>> mymath.c 2 >>> mymath.add <function add at 0x00A927E0> >>> mymath.add(3,4) 7 >>> mymath.mul(4,6) 24
이름공간 ¶
- 이름공간 = 이름이 저장되는 공간
- 자격변수 = ddd.sss 같이 이름공간이 명확히 나타나 있는 변수.
- 무자격변수 = ktf 같이 공간이 명확하지 않은 변수.
전역공간, 지역공간 ¶
globals(), locals()
~cpp a = 1 b = 2 def f(): localx = 10 localy = 20 print '전역변수:', globals() print '지역변수:', locals() f() print '모듈 수준에서의 전역변수:', globals() print '모듈 수준에서의 지역변수:', locals()
출력값
~cpp 전역변수 a,b 지역변수 localx,localy 아래 두개는.. a,b,f()
모듈 공간의 이름 알아보기 ¶
어떠한 속성을 정의하고 있는가...
~cpp >>> import string >>> dir(string) ['_StringTypes', '__builtins__', '__doc__', '__file__', '__name__', '_float', '_idmap', '_idmapL', '_int', '_long', 'ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'atof', 'atof_error', 'atoi', 'atoi_error', 'atol', 'atol_error', 'capitalize', 'capwords', 'center', 'count', 'digits', 'expandtabs', 'find', 'hexdigits', 'index', 'index_error', 'join', 'joinfields', 'letters', 'ljust', 'lower', 'lowercase', 'lstrip', 'maketrans', 'octdigits', 'printable', 'punctuation', 'replace', 'rfind', 'rindex', 'rjust', 'rstrip', 'split', 'splitfields', 'strip', 'swapcase', 'translate', 'upper', 'uppercase', 'whitespace', 'zfill']
모듈의 이름 공간얻기 ¶
~cpp 너무길다..직접보여주자..!! import string string.__dict__
이름공간을 갖는것들 ¶
- 모듈, 함수, 클래스 등..
- 외부에서 값 설정이 가능함..
~cpp >>> string.b Traceback (most recent call last): File "<pyshell#17>", line 1, in ? string.b AttributeError: 'module' object has no attribute 'b' >>> string.b=2 >>> string.b 2