함수
input을 넣었을 때 output이 어떻게 나올지 정하는 식
✅ 내장 함수
print()
, input()
, format()
등과 같이 기본적으로 제공되는 함수
✅ 사용자 함수
사용자가 직접 세우는 함수
def addCal(x, y): # x와 y를 입력하면 두 합을 구하는 함수를 선언
return(x + y) # for문 처럼 들여쓰기!!
print(addCal(2,3)) # 함수 호출
5
✅ 또 다른 함수 호출
def addCal(x, y):
return(x + y)
def pythagoras(x, y) :
return(((addCal(x**2,y**2)**(1/2)))) #함수 안에 함수 호출
print(pythagoras(3,4))
5.0
✅ pass
: 실행문 없이 진행 시킬 때 사용
def pythagoras(x, y) :
pass # 실행문 없음
❗인수의 개수와 매개변수의 개수는 같아야 한다.
def 함수명(매개변수1, 매개변수2, 매개변수3) :
f(매개변수1, 매개변수2, 매개변수3) #매개변수1, 매개변수2, 매개변수3에 관련된 식
함수명(인수1, 인수2, 인수3)
def addCal(x, y):
return (x + y) # x와 y의 합의 결과값을 반환
returnVal = addCal(2,3)
print(returnVal)
5
❗함수가 return
을 만나면 함수 실행을 종료하고 결과를 반환한다.
def divideNumber(n) :
if n % 2 == 0 :
return '짝수' # 함수 실행 종료 및 결과 반환
else :
return '홀수' # 함수 실행 종료 및 결과 반환
✅ 전역 변수
함수 밖에 선언된 변수로 어디에서나 사용은 가능하지만 함수 안에서 수정할 수는 없다.
num_out = 10 #전역 변수
def printNumbers():
num_out = 20
print(f'num_out: {num_out}')
printNumbers()
print(f'num_out: {num_out}')
num_out: 20 num_out: 10
✅ 지역 변수
함수 안에 선언된 변수로 함수 안에서만 사용 가능
def printNumbers():
num_out = 20 # 지역 변수
print(f'num_out: {num_out}')
print(f'num_out: {num_out}')
NameError: name 'num_out' is not defined
✅ global
global
을 사용하면 함수 안에서도 전역변수의 값 수정 가능!
num_out = 10
def printNumbers():
global num_out
print(f'num_out: {num_out}')
printNumbers()
print(f'num_out: {num_out}')
num_out: 10 num_out: 10
✅ 중첩 함수
함수 안에 함수가 있는 형태
def out_function():
print('out_function called!!')
def in_function():
print('in_function called!!')
in_function()
out_function()
in_function called!! out_function called!!
lambda
함수lambda를 이용해 함수를 쉽게 설정할 수 있다!
pythagoras = lambda a, b : ((a**2) + (b**2))**(1/2) #람다 함수 선언
print(pythagoras(3,4))
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
def plotSineWave(**kwars):
endTime = kwars.get('endTime', 1)
sampletime = kwars.get("sampleTime", 0.01)
amp = kwars.get("amp", 1)
freq = kwars.get("freq", 1)
startTime = kwars.get("startTime", 0)
bias = kwars.get("bias", 0)
figSize = kwars.get("figsize", (12,6))
time = np.arange(startTime, endTime, sampletime)
result = amp * np.sin(2 * np.pi * freq * time + startTime) + bias
plt.figure(figsize = figSize)
plt.plot(time, result)
plt.grid(True)
plt.xlabel("time")
plt.ylabel("sin")
plt.title(str(amp) + "*sin(2*pi)" + str(freq) + "*t" + str(startTime) + ")+" + str(bias))
plt.show()
이렇게 **kwars
를 사용하면 값을 디폴트 설정하거나, 함수에서 본인이 원하는 키워드를 설정할 수 있다.
# 디폴트 값 사용
plotSineWave()
plotSineWave(amp=2, freq=0.5, endTime=10)