요즘은 좀 다시 살짝 gloomy 합니다. 분명 최근 제가 수행한 (저 개인한테는 아주아주 큰) 프로젝트를 거의 끝냈구요. 나름대로 성능도 확보했다고 즐거워하고 있지요. 심지어 간결하기까지 합니다. 꽤 좋은 성과를 이룬게 아닐까 합니다.ㅠㅠ. 그러나... 항상 그렇듯... 이런 일을 마치고 나면 그 성과에 대해 연속성을 가지고 일이 진행되면 좋겠지만..... 그렇게 되는 조직이 잘 없죠. 뭐 저도 잘 알고 있는 것입니다만... 하여간 그래서 이렇게 또 고민하고 고민합니다. 이렇게 아주 처음부터 끝까지 모두 내 손으로 직접 프로젝트를 수행한 경험은 드문일이니 너무 좋은 경험이며 제가 일하는 곳의 최종 목표를 위해서는 아주 좋은 일임에 분명한데... 살짝 기분이 다운되는 것은 아마~~~ 흠... 뭐 알콜이 좀 부족했나 보죠... ㅋㅋㅋ. 아무튼 오늘은 Python의 괜찮은 팁을 공유하고 있는 사이트 하나와 거기서 배운 팁하나 알려드릴까 합니다.
먼저 위 블로그를 한번 방문해 보시기 바랍니다. 주소는 [바로가기]입니다. 이 블로그의 저자의 표현을 따르면 bite sized tips를 알려준다고 하지만.. 뭐 제가 읽기에는 딱 한번에 읽을 적당한 크기의 글과 적당한 수준의 주제인듯 합니다. 뭐 저한테는요^^. 요즘 아주~~~ 찔끔찔끔 Python을 보고 있는데요. 그러다가 def의 입력인자를 재미나게 사용할 수 있다는 것을 알게 되었지요. 바로 **kwargs 입니다. 물론 kwargs라는 단어는 안 중요하지만... 뜻은 keywarded argument입니다.^^
위에 보이는 sin함수를 그리는 모듈을 하나 만들기로 했다고 하죠. 그런데 항상 주파수(f)나 바이어스(B)나 위상차(p)를 입력할 필요가 있는게 아니죠. 뭐 없으면 그냥 디폴트 값을 사용할 수 있으면 좋겠고... 이럴때 유용하게 사용할 수 있는 것이더군요^^
위에 보이듯이 plotSinWave라는 모듈에 입력 인자가 딸랑 하나처럼 보입니다. **kwargs라고 말이죠. 사실 **뒤에 아무 변수든 상관없습니다만...^^ 그리고 그 아래에서 사용한 코드를 보면 아하~~ 하실겁니다. 즉 해당 변수가 선언되어 입력되지 않으면 그냥 디폴트를 사용할 수 있구요. 그리고, 입력할 때, amp=1 과 같이 표현해서 입력하기 때문에 가독성이 좀 좋아집니다.^^
import numpy as np import matplotlib.pyplot as plt def plotSinWave(**kwargs) : """ plot sine wave """ endTime = kwargs.get('endTime', 1) sampleTime = kwargs.get('sampleTime', 0.01) amp = kwargs.get('amp', 1) freq = kwargs.get('freq', 1) startTime = kwargs.get('startTime', 0) bias = kwargs.get('bias', 0) time = np.arange(0.0, endTime, sampleTime) result = amp * np.sin(2*np.pi*freq*time + startTime) + bias plt.plot(time, result) plt.grid(True) plt.xlabel('time') plt.ylabel('sin') plt.show() plotSinWave(amp = 2, endTime = 3)
바로 위 코드가 전체 코드인데요. 딱 amp와 endTime만 딸랑 지정해 준거지요. 그래도 나머지는 이미 디폴트를 입력해 두었기 때문에 괜찮구요. 그 결과는
와 같이 나타나게 되는거지요^^ 뭐~ 아무것도 아닌 그냥 초 기초적인 내용입니다만... 그냥... 잠시 살짝 어느 길로 갈지... 발걸음은 얼마나 벌릴지... 얼마나 빨리 갈지를 가지고 고민하다가 살짝 머리를 식힐려는 의도라고 생각해주세요~~^^
'Software > Python' 카테고리의 다른 글
Win8에서 IPython Notebook 사용하기 (20) | 2015.02.27 |
---|---|
Python에서 수행해 본 간단한 FFT 코드 (38) | 2015.02.09 |
간단한 예제를 통해 본 Python Class (18) | 2015.02.06 |
Python에서 Open Dynamics Engine을 이용한 Two Link Pendulum 시뮬레이션 (20) | 2014.11.12 |
Python에서 간단하게 진자 운동 시뮬레이션을 애니메이션으로 구현하기 (21) | 2014.10.31 |
Python에서 화일로 저장된 데이터를 Plot하는 간단한 예제 (16) | 2014.10.29 |
Python 간단한 문법과 그래프 및 각 종 라이브러리를 받을 수 있는 곳 (18) | 2013.08.14 |