본문 바로가기
Programming 기초

Python, __name__변수와 Decorate Function 사용하기

by 웨커몰 2023. 11. 14.

__name__변수

__name__변수를 사용하는 이유는 뭘까요. 

 

__name__ 변수는 Module의 이름을 담은 내장 Variable 입니다.

1) 모듈이 직접 실행될 경우 : " __name__" variable  =  "__main__"

2) 모듈이 import 되어 사용될 경우 : "__name__" variable = 해당 모듈 이름(파일명)

 

 

Python Decorate Function

프로그램에는 수 많은 클래스, 함수가 있습니다. 같은 Function을 서로 다른 함수에 포함하거나 추가한 내용을 수정할 때 Decorate function은 유용하게 사용할 수 있습니다.

 

Decorate function의 기본 형태는 다음과 같으며, 적용하기 위해서는 함수 전에 @decorate 함수 명을 추가하면 됩니다. 

 

def decorate (function):

      def inner_function():

           print("Good morning\n")

           print("Nice to meet you\n")

           ....

     return inner_function

 

@decorate 

def hello()

      print("Hello")

 

@decorate

def hi()

      print("Hi")

 

hello()

hi()

 

hello(), hi() 함수에 각각 "Good morning", "Nice to meet you" 를 포함하고자 할 경우, decorate function을 이용하면 쉽게 서로 다른 함수에 공통 수정사항을 추가하거나 삭제할 수 있습니다. 

 

@decorate함수명을 풀어쓰면 다음과 같습니다. @함수명이 훨씬 간단하고 사용하기 편하죠.

 

decorate_function = decorate (hi)     //inner_function값을 변수로 받음. 

decorate_function()                            // 변수로 받은 inner_function을 () 실행함. 

 


// __name__변수와 Decorate function을 사용한 예제.

// Fast_function과 Slow_function의 실행

import time

current_time = time.time()
print(current_time)

def speed_calc_decorator(function):
     def wrapper_function ():
          start_time = time.time()
          function()
          stop_time = time.time()
          print(f"{function.__name__} run speed: {stop_time - start_time}")
     return wrapper_function
 

@speed_calc_decorator
def fast_function():
     for i in range(1000000):
          i*i

@speed_calc_decorator
def slow_function():
     for i in range(10000000):
          i*i

fast_function()
slow_function()
 
>>>
1699966598.714241
fast_function run speed: 0.023977994918823242
slow_function run speed: 0.21317791938781738

 

'Programming 기초' 카테고리의 다른 글

환경 변수 PATH 란 무엇인가.  (0) 2023.11.12

댓글