[파이썬] 함수 인자의 * & **

Soo·2023년 9월 12일
0

💡 *args

이건 이미 알고 있는 내용이라 간단히 짚고 가자면,
함수 인자가 몇개 들어 올지 모를 때 "def 함수명 (*인자명)" 으로 지정해 사용한다.

다만, 내가 이 파트에서 주요하게 정리하고 싶은 부분은 바로 아래이다.

💡 **kwargs

  • kwargs : keyword argument의 줄임말
  • {'키워드 : '특정 값'}으로 함수 전달

아래 코드의 단점은 plotSineWave()함수에 인자를 넣을 때, 숫자 순서들이 충분히 헷갈릴 수 있다는 점이다. 코드가 길 때는 def 지정된 인자들을 확인하기 어려울 수도 있음!!
이럴 때 사용하는게 "**kwargs" 이다.

def plotSinWave(amp,freq,endTime,sampleTime,startTime,bias):
  """
  plot sin wave
  y= a sin(2 pi f t + t_o) + b
  """

  time = np.arange(startTime,endTime,sampleTime)
  result = amp+np.sin(2 *np.pi * freq *time + startTime)+bias

  plt.figure(figsize=(12,6))
  plt.plot(time,result)
  plt.grid(True)
  plt.xlabel("time")
  plt.ylabel("sin")
  plt.title(str(amp)+ "sine(2*pi" + str (freq) + "*t" + str(startTime) +")+" + str(bias))
  plt.show()
  
plotSinWave(2,1,10,0.01,0.5,0)
#**karges 사용시 각 번호 살피기

#1.
def plotSinWave(**kwargs):
  """
  plot sin wave
  y= a sin(2 pi f t + t_o) + b
  """

  #2. (기본값을 아래같이 설정했으나, 코드에 인자 입력하면 그에 맞춰서 인식함)
  amp = kwargs.get("amp",1)
  freq =kwargs.get("freq",1)
  endTime = kwargs.get("endTime",1)
  sampleTime = kwargs.get("sampleTime",0.01)
  startTime = kwargs.get("startTime",0)
  bias = kwargs.get("bias",0)
  figsize =kwargs.get("figsize",(12,6))

  time = np.arange(startTime,endTime,sampleTime)
  result = amp+np.sin(2 *np.pi * freq *time + startTime)+bias

  plt.figure(figsize=(12,6))
  plt.plot(time,result)
  plt.grid(True)
  plt.xlabel("time")
  plt.ylabel("sin")
  plt.title(str(amp)+ "sine(2*pi" + str (freq) + "*t" + str(startTime) +")+" + str(bias))
  plt.show()

# 3.
plotSinWave()

바로 위 코드와 다른 점은 크게 3가지로 각 번호 표기한 부분을 보면된다.
2번 부분에 임의로 값을 지정해줬기에 3번 부분엔 특별히 인자를 기입할 필요가 없다.

그렇다면 다른 값을 넣어보자.

plotSinWave(amp=2, freq =0.5, endTime=10)

"**kwargs"를 사용했기 때문에 3번 부분에 모든 인자를 다시 입력할 필요없이 필요한 특정 인자에만 값을 수정해주었다.

profile
데린이인데요 ໒꒰ྀ ˶ • ༝ •˶ ꒱ྀིა (잘못 된 부분은 너그러이 알려주세요.)

0개의 댓글

관련 채용 정보