프로그래밍 문법/python

내가만든 모듈 import하기

씩씩한 IT블로그 2020. 10. 27. 13:37
반응형

1. 개요

내가 만든 모듈을 import해서 쓰는 방법이다.

같은 디렉토리안에 넣고, a.py모듈을 b.py에서 쓰고싶으면 b.py에서 import a를 하면된다. 즉 아래와 같이 쓸 수 있다.

# b.py파일

import a

 

 

2. 예시

- 디렉토리 구성

basic_nodes라는 모듈을 만들고, 이를 test2에서 불러 오려고 한다. 디렉토리 구성은 아래와 같다.

 

- basic_node.py

import numpy as np

class mean_node:
    def __init__(self):
        self._x=None
        self._z=None

    def forward(self, x):
        self._x = x
        self._z = np.mean(self._x)
        return self._z

    def backward(self, dz):
        dx = dz * 1 / len(self._x) * np.ones_like(self._x)
        return dx


class square_node:
    def __init__(self):
        self._x = None
        self._z = None

    def forward(self, x):
        self._x = x
        self._z = self._x * self._x
        return self._z

    def backward(self, dz):
        return dz * 2 * self._x

class mul_node:
    def __init__(self):
        self._x, self._y = None, None
        self._z = None
    def forward(self, x, y):
        self._x, self._y = x, y
        self._z = self._x * self._y
        return self._z

    def backward(self, dz):
        return dz * self._y, dz * self._x

class minus_node:
    def __init__(self):
        self._x, self._y = None, None
        self._z = None

    def forward(self, x, y):
        self._x, self._y = x, y
        self._z = self._x - self._y
        return self._z

    def backward(self, dz):
        return dz, -1 * dz

class plus_node:
    def __init__(self):
        self._x, self._y = None, None
        self._z = None

    def forward(self, x, y):
        self._x, self._y = x, y
        self._z = self._x + self._y
        return self._z

    def backward(self, dz):
        return dz, dz


def p():
    print("hihi")

a="value"

 

- test2.py

import한 모듈의 클래스, 함수, 변수 모두 쓸 수 있다.

import basic_nodes as nodes #파일이름을 import!

#클래스
node1=nodes.mul_node()
node2=nodes.minus_node()
node3=nodes.square_node()
node4=nodes.mean_node()

print(node1.forward(10,20))

#함수
nodes.p()

#변수
print(nodes.a)
200
hihi
value
반응형