파이썬 모듈


모듈은 특정한 기능 함수 클래스를 모아 놓은 파일이다.

여러분이 파이썬을 개발 할 때 import 모듈명을 사용하여 만들어진 모듈을 사용했을 것이다.

이제 여러분이 이런 모듈을 직접 만들어 볼 차례이다.



모듈 작성과 사용


우선 간단한 예제 모듈을 만들어 보도록 하자


#!/usr/bin/python

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

def helloKorea():
    print("안녕하세요.")

def helloEnglish():
    print("Hello")


위와 같이 작성 후 tool1.py 이라고 저장 한다.

같은 폴더 위치에 main.py  이라고 파일을 하나 만들고 해당 파일에 위의 모듈을 사용하는 예제를 작성 한다.


아래와 같이 tool.py과 main은 같은 위치에 있어야 한다.

C:\example>dir

...

2016-11-13 오후 01:00   55    tool.py

2016-11-13 오후 01:02   45    main.py

...


아래는 main.py 예제이다.

모듈을 가져다 쓸때는 .py를 빼고 import 파일명

모듈의 함수를 가져다 쓸 때는 파일명.함수명 


#!/usr/bin/python

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


import tool1


tool1.helloKorea()

tool1.helloEnglish()


실행을 시켜 보면 다음과 같은 결과 값이 출력 된다.


안녕하세요.

Hello


다음 모듈 설명 가기 ====> click

반응형

'프로그램 > Python' 카테고리의 다른 글

[Python] 예외 처리, try, except, else  (0) 2016.11.26
[Python] 모듈 #2  (0) 2016.11.13
[Python]클래스(3)  (0) 2016.11.02
[Python]클래스 (2)  (0) 2016.09.16
[Python]클래스 (1)  (0) 2016.09.16

클래스와 인스턴스


앞에서 클래스사용 법에 대해 간략하게 설명 드렸는데 개념이 없이 바로 예제로 설명해 어려움이 있을 것 같아

개념 설명을 추가 하도록 하겠습니다.


다들 어린 시절 학교 앞에서 뽑기를 해본 적이 있을 것이다. 

뽑기를 할때 국자에 소다와 설탕을 넣고 끓인 후 ☆ ♡ 등 모양의 틀로 찍고 그 모양대로 잘라먹은 기억을 다들 가지고 있을 것이다.


여기서 틀은 클래스라 생각 하자 틀을 찍어서 계속 뽑기를 여러개 만들 수 있는데 여기서 뽑기는 인스턴스라고 생각해보자

한개의 틀만 있으면 똑같은 뽑기를 계속 만들 수 있다. 


아래 코드를 보자


 #아래는 틀과 같은 역활을 하는 클래스 선언이다.

 class Human :
         name = ""


 h1 = Human() #Human 이라는 클래스(틀)로 h1 인스턴스(뽑기)를 만든다.

 h2 = Human() #Human 이라는 클래스(틀)로 h2 인스턴스(뽑기)를 만든다.



클래스 변수와 함수


클래스 변수와 함수 사용법에 대해 알아 보겠다.


아래 Human 클래스에 이름 변수를 확인 할 수 있다.

사용 방법은 Class 밑에 들여쓰기 후 변수를 정의 하면 된다.


인스턴스 생성 후에는 인스턴스명.변수명을 사용 하면 된다. 


 class Human :

         name = ""


 h1 = Human() 

 h1.name = "철수"


함수 역시 클래스 밑에 들여쓰기 후 함수를 정의하면 된다.

인스턴스 생성 후에는 인스턴스명.함수명을 사용 하면 된다. 


 class Human :

         name = ""

         def introduce(self) :

             print "내 이름은 %s 입니다."%self.name


 h1 = Human() 

 h1.name = "철수"

 h1.introduce()




생성자 함수(__init__) 선언


앞에서 인스턴스 호출 후 다음에 인스턴스의 이름을 넣었다.


 h1 = Human() 

 h1.name = "철수"


매번 인스턴스를 생성하고 이름을 넣어주는 일이 번거로울 것이다.

그래서 인스턴스를 생성과 동시에 인스턴스를 초기화 시켜주는것이 생성자 함수(__init__) 이다.


 class Human :

         name = ""

         def __init__(self,name):

             self.name = name

         def introduce(self) :

             print "내 이름은 %s 입니다."%self.name


 h1 = Human("철수") 

 h1.introduce()



이전 클래스 설명 가기 ====> click

반응형

'프로그램 > Python' 카테고리의 다른 글

[Python] 모듈 #2  (0) 2016.11.13
[Python] 모듈 #1  (0) 2016.11.12
[Python]클래스 (2)  (0) 2016.09.16
[Python]클래스 (1)  (0) 2016.09.16
[Python]파일(File) 사용법  (0) 2016.09.16

파이썬 클래스 사용법 #2



다시 클래스에 대해 이어서 설명 해 보겠다. 


원래 난해하고 쉽지 않은 내용이니 좌절하지 말고 끝까지 보길 바랍니다.


자 다른 예로 설명해 보겠다.


음료 자판기를 예를 들어 설명해 보겠다.


간단하게 돈 넣으면 음료수 2개중 한개를 선택해 음료수가 나오게 하겠다.


==========================================================

#!/usr/bin/python

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


total_money = 10

product = '음료1','음료2'

price = 2, 3


in_money = input("돈을 넣어주세요(2~3)")

sel_drink = input("음료를 선택해 주세요(1~2)")


if sel_drink == 1 and in_money >= 2:

    print"%s 나왔습니다."%product[0]

    total_money = total_money + 2

elif sel_drink == 2 and in_money >= 3 :

    print"%s 나왔습니다." % product[1]

    total_money = total_money + 3


print"자판기에 %d원 있습니다."%total_money

==========================================================

결과 :  

돈을 넣어주세요(2~3)3

음료를 선택해 주세요(1~2)1

음료1 나왔습니다.

자판기에 12원 있습니다.

==========================================================


이제 여기서 거스름 돈도 주는 기능을 넣고 싶고 음료수도 더 추가 하고 싶다.


어떻게 되겠는가.. 프로그램 전반적으로 다시 다 수정 해야 된다.


하지만 다음과 같이 위의 기능을 클래스로 만들어 뒀으면


==========================================================

#!/usr/bin/python

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


class vend_machine :

    total_money = 10

    in_money = 0

    sel = 0

    product = '음료1', '음료2'

    price = 2, 3


    def input_money(self):

        self.in_money = input('돈을 넣어주세요')


    def get_drink(self):

        sel = input('음료수를 선택해주세요')

        if sel == 1 and self.in_money >= 2:

            print"%s 나왔습니다." % self.product[0]

            self.total_money = self.total_money + 2

        elif sel == 2 and self.in_money >= 3:

            print"%s 나왔습니다." % self.product[1]

            self.total_money = self.total_money + 3

        print"자판기에 %d원 있습니다." % self.total_money



vm = vend_machine()

vm.input_money()

vm.get_drink()

==========================================================

결과 :  

돈을 넣어주세요3

음료수를 선택해주세요1

음료1 나왔습니다.

자판기에 12원 있습니다.

==========================================================


클래스 부분만 수정 하고 


클래스를 사용하는 부분 

   vm = vend_machine()

   vm.input_money()

   vm.get_drink()

)


은 변경 할 필요가 없이 수정이 가능하다. 


다음은 음료수를 추가해 보고 거스름돈도도 나오게 해보자


==========================================================

#!/usr/bin/python

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


class vend_machine :

    total_money = 10

    in_money = 0

    sel = 0

    product = '음료1', '음료2', '음료3'

    price = 2,3,4


    def input_money(self):

        self.in_money = input('돈을 넣어주세요')


    def get_drink(self):

        sel = input('음료수를 선택해주세요')

        if sel == 1 and self.in_money >= 2:

            print"%s 나왔습니다." % self.product[0]

            self.total_money = self.total_money + 2

            self.in_money = self.in_money - 2

        elif sel == 2 and self.in_money >= 3:

            print"%s 나왔습니다." % self.product[1]

            self.total_money = self.total_money + 3

            self.in_money = self.in_money - 3

        print"자판기에 %d원 있습니다." % self.total_money

        print"거스름돈 %d원 있습니다." % self.in_money

        self.in_money = 0


vm = vend_machine()

vm.input_money()

vm.get_drink()

==========================================================

결과 :  

돈을 넣어주세요5

음료수를 선택해주세요1

음료1 나왔습니다.

자판기에 12원 있습니다.

거스름돈 3원 있습니다.

==========================================================


클래스만 수정 하였고 클래스를 사용하는 부분은 전혀 수정을 가하지 않았다.


또한 이렇게 클래스를 만들어 두면 다른 프로그램에서 사용 할 수 있다.


이것을 프로그램의 재 사용성이라고 하며 


재 사용성을 높여 프로그램의 생산성, 유지보수성을 향상 시킬수 있다.


 

이전 클래스 설명 가기 ====> click

다음 클래스 설명 가기 ====> click




반응형

'프로그램 > Python' 카테고리의 다른 글

[Python] 모듈 #1  (0) 2016.11.12
[Python]클래스(3)  (0) 2016.11.02
[Python]클래스 (1)  (0) 2016.09.16
[Python]파일(File) 사용법  (0) 2016.09.16
[Python]사용자 입력  (0) 2016.09.16

파이썬 클래스 사용법



클래스에 대해 알아보겠다.


클래스는 무엇인가 DATA + 함수 즉 자료와 행동 두 가지를 모두 묶어서 관리 할 수 있는 사용자 자료 형이다.


간단한 예를 통해 이해를 도와 보자


더하기 예제

==========================================================

#!/usr/bin/python

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

a = 1

b = 2

sum = a + b

print sum

==========================================================

결과 :  

3

==========================================================


더하기 하는 예제 이다 여기서 1,2 말고 다른 값도 더하고 싶다 그럼 어떻게 하나


==========================================================

#!/usr/bin/python

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

a = 1

b = 2

c = 3

d = 4

e = 5

f = 6

sum = a + b

print sum

sum = c + d

print sum

sum = e + f

print sum

==========================================================

결과 :  

3

7

11

==========================================================


이렇게 변수를 늘리고 연산 작업을 계속 늘여 써야 가능 할텐데 우린 함수라는 것을 배웠으니


다음과 같이 처리가 가능 할 것이다.


==========================================================

#!/usr/bin/python

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


def sum(a, b) :

    print a+b


sum(1,2)

sum(3,4)

sum(5,6)

==========================================================

결과 :  

3

7

11

==========================================================


연산 작업은 함수로 만들어서 처리가 가능 하다 하지만


더한 값을 또 더하고 싶다면 어떻게 하나?? 함수를 수정해 더한 값을 저장 하게 끔 해야 한다.


==========================================================

#!/usr/bin/python

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


def sum(a, b) :

    retval = a + b

    print retval

    return retval


a = sum(1,2)

b = sum(a,1)

c = sum(a,b)

==========================================================

결과 :  

3

4

7

==========================================================


위와 같이 값이 관리 될 수 있도록 하면서 함수를 사용하고 싶을 때는 클래스를 사용한다.


==========================================================

#!/usr/bin/python

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


class calc :

    lastValue = 0


    def sum(self,a ):

        self.lastValue = self.lastValue + a

        print self.lastValue


c = calc()

c.sum(1)

c.sum(2)

c.sum(5)

==========================================================

결과 :  

1

3

8

==========================================================


위와 같이 클래스만 관리하면 따로 함수도 만들 필요도 없고 변수도 클래스 안에서 모두 관리 가능하다.


다음 클래스 설명 가기 ====> click

반응형

'프로그램 > Python' 카테고리의 다른 글

[Python]클래스(3)  (0) 2016.11.02
[Python]클래스 (2)  (0) 2016.09.16
[Python]파일(File) 사용법  (0) 2016.09.16
[Python]사용자 입력  (0) 2016.09.16
[Python] 함수 (3)  (0) 2016.09.16

+ Recent posts