빅데이터 프로그래밍/Python

[Python] 09. 모듈과 패키지의 사용, import의 사용, Template

밍글링글링 2017. 8. 2.
728x90

01. Template

1. Eclipse ▶ Window  Preferences

2. utf-8 형식의 한글 인코딩 방식을 지정합니다.

- Java, C언어처럼 시작할 main 함수가 없음을 파이썬이 실행시 '_name_' 시스템 변수의 값을 비교하여

 '_main_'이면 블럭안의 코드를 실행합니다.

- pass: 추후 블럭을 구현한다는 표시

-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-



if __name__ == '__main__':
    pass

-------------------------------------------------------------------------------------

 

 

 

3. 모듈 생성시 template을 선택합니다.

 

02. 모듈과 패키지의 사용

- 데이터 처리를 위한 함수들을 모아놓은 것을 모듈이라고 합니다.

- 개발자가 다양한 분야의 SW를 개발할 수 있도록 미리 파이썬 언어에서 지원하는 것을 

내장 모듈이라고 합니다.

- 개발자는 자신이 필요한 모듈을 생성 할 수 있습니다.
- 모듈은 import하여 사용합니다.
   import 모듈이름
   import 패키지 이름.모듈 이름
   import 이름이 긴 패키지.모듈명 as 별명 
   from 모듈 이름 import 함수 이름 
   from 패키지 이름 import 모듈 이름
   from 패키지 이름.모듈 이름 import 함수 이름
- 모듈이 모이면 폴더가 생성되고 패키지라고 부릅니다.
  일반 폴더와 구분하기위해 패키지는 폴더안에 '__init__.py' 파일을 생성하며
  version 1.0 정도의 문자열을 내용으로 표시합니다.
- 하위 패키지의 생성은 계속적인 하위 폴더를 생성합니다.

 

1. 모듈의 선언
[실행 화면]
10
10

▷ /src/Lib.py
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-

def absolute(su1):
    if su1 < 0:
        su1 = su1 * -1
        
    return su1    

'''
print('__name__: ' + __name__) # Lib
print(absolute(10))
print(absolute(-10))
'''
    
if __name__ == '__main__':
    print('__name__: ' + __name__) # __main__
    print(absolute(10))
    print(absolute(-10))


-------------------------------------------------------------------------------------
 

 

2. 패키지안의 모듈을 선언

[실행 화면]

11
300
600
▷ /src/tool/Math.py
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-

def roundsu(su1):
    su1 = su1 + 0.5
    return str(int(su1))

def tot(*args):
    tot = 0
    for su in args:
        tot = tot + su
    return tot    

print(roundsu(10.5))
print(tot(100, 200))
print(tot(100, 200, 300))


-------------------------------------------------------------------------------------
 

 

3. 패키지를 동반한 모듈의 선언

[실행 화면]

20
10
su1: 100, su2: 200
su1: 200, su2: 100
 
▷ /src/tool/Tool.py
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-

def maxsu(su1, su2):
    if su1 > su2:
        return su1
    else:
        return su2

def minsu(su1, su2):
    if su1 < su2:
        return su1
    else:
        return su2

def swap(su1, su2):
    temp  =su1
    su1 = su2
    su2 = temp
    
    return su1, su2


print(maxsu(10, 20))
print(minsu(10, 20))

su1 = 100
su2 = 200
print("su1: " + str(su1) + ", " + "su2: " + str(su2))
su1, su2 = swap(su1, su2)    
print("su1: " + str(su1) + ", " + "su2: " + str(su2))


-------------------------------------------------------------------------------------
 

 

4. import를 이용한 모듈의 사용
- import 선언시 실행시에 import되는 모듈이 자동으로 실행됩니다.

[실행 화면]
같은 폴더안의 모듈 import
5000
MAX: 2000
MIX: 1000
su1: 100, su2: 200
su1: 200, su2: 100
 
roundsu(10.5): 11
tot(100, 200): 300
▷ /src/ModuleTest.py
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-
import time
import Lib
import tool.Tool
import tool.Tool as toolbox # 별명 지정

from tool.Tool import swap # 가져올 함수 선언, 여러개 선언은 ','로 구분
from tool.Math import *     # 모든 함수 import

if __name__ == '__main__':
    # print('__name__: ' + __name__)
    print('같은 폴더안의 모듈 import')
    print(Lib.absolute(-5000))              # import Lib
    time.sleep(1)  # 1 초
    
    print('MAX: ' + str(tool.Tool.maxsu(1000, 2000)))  # import tool.Tool
    time.sleep(1)  # 1 초
    
    print('MIX: ' + str(toolbox.minsu(1000, 2000))) # import tool.Tool as toolbox
    time.sleep(1)  # 1 초    
        
    su1 = 100
    su2 = 200
    print("su1: " + str(su1) + ", " + "su2: " + str(su2))
    su1, su2 = swap(su1, su2)    
    print("su1: " + str(su1) + ", " + "su2: " + str(su2))    
    time.sleep(1)
    
    print()    
    print('roundsu(10.5): ' + str(roundsu(10.5)))  # from tool.Math import *
    print('tot(100, 200): ' + str(tot(100, 200)))    
    

-------------------------------------------------------------------------------------
 

 

728x90

댓글