본문 바로가기

카테고리 없음

4일차-3

사용자 정의 함수

 

사용자 정의 함수란 사용자가 특정 작업을 수행하기 위해 직접 작성한 함수를 의미합니다. 파이썬에는 많은 내장 함수들이 있지만, 때로는 우리의 요구사항에 맞게 동작하는 함수를 직접 만들어야  때가 있습니다. 이때 사용자 정의 함수를 작성하게 됩니다. 기본적인 구조는 아래와 같습니다.

 

def 함수명(매개변수1, 매개변수2, ...):
    함수가 실행될 때 실행할 문자
    reyurn 결과값

 

-매개변수와 반환 값이 없는 함수

def func1():
  print('처음으로 만드는 함수!')
func1()
func1()
func1()
처음으로 만드는 함수!
처음으로 만드는 함수!
처음으로 만드는 함수!
for i in range(5):
  func1()
처음으로 만드는 함수!
처음으로 만드는 함수!
처음으로 만드는 함수!
처음으로 만드는 함수!
처음으로 만드는 함수!

for문처럼 이용하여 반복하여 수행할 수 있다.

-매개변수가 있고 반환 값이 없는 함수

def func2(num):
  print(f'입력받은 숫자: {num}')
func2(100)
func2(4)
입력받은 숫자: 100
입력받은 숫자: 4

 

def func3(start, end):
    sum = 0
    for i in range(start, end+1): # 프린트에서 end까지의 합이니까 +1을 해줘야 한다
        sum += i
    print(f'{start}부터 {end}까지의 합: {sum}')
func3(1,10)
1부터 10까지의 합: 55​

 -반환 값이 있는 함수

def func4():
  print('안녕하세요 파이썬!')
func4()
# temp=func4()
temp=func4  # 함수를 변수로 저장하려면 실행하고 저장하면 안됨
print(f'temp에 저장된 값:{temp}')
안녕하세요 파이썬!
temp에 저장된 값:<function func4 at 0x7bead081f010>
temp()
안녕하세요 파이썬!
def func5():
  return'😍' #리턴값을 만들어줌
temp=func5() #리턴값을 만들어 주었기 때문에 다른 변수로 저장가능
print(f'temp에 저장된 값:{temp}')
temp에 저장된 값:😍
def func5():
  return'😍'

# 위에 있는 수식을 더 많이 사용한다.

def func6():
  print('😍')

범용성이 높은 위에 수식을 더 많이 사용한다

def func6(num1,num2):
  sum=num1+num2
  return sum
print(func6(10,5))        # print(num1,num2) 함수에서만 찍어볼수 있다
                          #temp=func6(10) #매개변수를 두개적어줘야하는데 하나만 적어서 에러남
temp = func6(10,5)
print(temp)
15
15

※ None의 특징

None 파이썬에서 특별한 값으로, 아무런 값이 없음을 표현하는  사용됩니다. 다른 언어에서의 null 또는 nil 유사한 개념입니다.

None 파이썬의 내장 상수이며,  자체로 데이터 타입이 NoneType입니다. 모든 None 동일하므로,  개의 None 값을 비교할  항상 True 반환합니다.

 

 

기본값이 설정된 매개변수

 

def func6(num1,num2):
  sum=num1+num2
  return sum
print(func6(10,3))
13

 

def func6(num1=1,num2=1): # 기본값 설정해줌 아무것도 안넣어주면 일로 해석
  sum=num1+num2
  return sum
print(func6())
print(func6(10))
print(func6(10,3))
print(func6(num2=10)) # 10을 뒤로 보내주고 싶을때
2
11
13
11
11

 

가변 매개변수

 

함수를 호출할  * 사용하면 시퀀스(리스트, 튜플 등)의 요소를 개별적인 위치 인자로 풀어서 전달할  있습니다.

def func7(*args):
    print(args)
    result=0
    return result
print(func7())
print(func7(10,30))
print(func7(10,30,70,90,100))
()
0
(10, 30)
0
(10, 30, 70, 90, 100)
0
def func8(id, name,age):
  print(f'아이디:{id}')
  print(f'이름:{name}')
  print(f'나이:{age}')
func8('apple','김사과',20)
아이디:apple
이름:김사과
나아ㅣ:20
func8(age=40,id='banana',name='바나나')
아이디:banana
이름:바나나
나이:40

앞에 저렇게 이름을 지정해 주면 순서가 달라져도 상관없이 잘 나온다.

dic1={'age':25, 'id':'melon', 'name':'이메론'}
func8(**dic1) # 매개변수의 이름에 맞춰 값을 전달
아이디:melon
이름:이메론
나이:25
func8(*dic1) # 매개변수 순서에 따라 키를 전달
아이디:age
이름:id
나이:name​
여러 개의 반환 값
def func10(num1,num2):
  return num1+num2
result1 = func10(10,3)
print(result1)
13

 

def func10(num1,num2):
  return num1+num2,num1-num2,num1*num2,num1/num2
result1, result2, result3, result4= func10(10,3)
print(f'덧셈: {result1}, 뺄셈: {result2}, 곱셈: {result3}, 나눗셈: {result4}')
덧셈: 13, 뺄셈: 7, 곱셈: 30, 나눗셈: 3.3333333333333335

이렇게 여러 가지 계산도 한 번에 나타낼 수 있다.

_, result2, _, _= func10(10,3) # _ 처리해주면 값을 안만듦
print(f'곱셈: {result3}')
곱셈: 30

 내가 원하는 값만 보고 싶으면 이렇게 _ 처리해 주면 된다.