본문 바로가기
인공지능/파이썬 기초

사용자 정의 함수 (feat.None)

by hyunji00pj 2024. 9. 30.

KDT_4기 파이썬 기초 0926(2)

2024.09.26 수업 내용 복습일기 두번째

 

오늘은 사용자 정의 함수와 None에 대해 알아보자

 

 

1. 사용자 정의 함수

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

def 함수명(매개변수1, 매개변수2, ...):
    # 함수 내용
    return 결과값

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

def func1():
  print('처음으로 만드는 함수')
func1()
func1()
func1()
print(func1())#반환값이 없어서 None찍힘

for i in range(5):
  func1()

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

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

def func3(start,end):
  sum = 0
  for i in range(start,end+1):
    sum += i
  print(f'{start}부터 {end}까지의 합 : {sum}')
  
  
func3(1,10)
func3(1, 100)

1-3. 반환 값이 있는 함수

반환값이 없으면 함수를 변수(temp)에 넣어 출력하면 None이 나옴

def func1():
  print('처음으로 만드는 함수')
  
func1()
temp = func1()
print(temp)

return을 통해 반환값을 준 함수는 다음과 같이 출력된다

 
def func4():
  return '🎁'
  
print(func4())

temp = func4()
print(f'temp에 저장된 값 : {temp}')

def func5(num1,num2):
  sum = num1 + num2
  return sum
  
print(func5(10,5))
temp = func5(4,3)
print(temp)

매개변수가 주어진 함수라면 매개변수는 항상 개수에 맞게 넣어주어야 한다 부족하게 넣으면 에러가 난다

print(func5(10)) #TypeError: func5() missing 1 required positional argument: 'num2'
#매개변수는 2개면 2개 넣어어야함 매개변수 자리 부족하게 넣으면 에러가 남
#함수의 밑에 주석으로 함수 간단한 설명과 매개변수 데이터타입, 무엇무엇을 넣어야하는지 써주면 좋다

1-4. 기본값이 설정된 매개변수

매개변수의 기본값이 설정된 함수는 다음과 같다

def func6(num1 = 0,num2 = 0):#기본값
    sum = num1 + num2
    return sum
    
print(func6())#안넣으면 기본값으로 처리됨
print(func6(10))
print(func6(10,3))
#print(func6(, 3))
#print(func6(None,3)) #TypeError: unsupported operand type(s) for +: 'NoneType' and 'int' 계산이 안되어서 오류
print(func6(num2=3))

1-5. 가변 매개변수

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

def func7(*args):
  return args
  
print(func7())
print(func7(10,30,50))

1-6. 키워드 매개변수

 

 

def func8(id,name,age):
  print(f'아이디: {id}')
  print(f'이름: {name}')
  print(f'나이: {age}')
  
  
func8('apple','김사과',20)

매개변수를  아래와 같이 키워드를 통해 전달할 수 있다

func8(age = 20,id = 'orange',name = '오렌지')

 

dic1 = {'age':25,'id':'banana','name':'반하나'}
func8(**dic1)# ** 키 비교후 값을 세팅

func8(*dic1)# * 키를 보내 변수에 맞춰 키가 세팅됨

 

1-7. 여러개의 반환값

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

만약 사칙연산을 모두 구하고 싶다면? 아래와 같이 여러개의 반환 값을 가진 함수를 사용할 수 있다

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

여러개의 반환값 중에서 하나만 쓰고 싶다면 아래와 같이 _를 사용하면 그 위치의 반환값은 적용되지 않는다.

_,_,result3,_ = func9(10,3)
print(f'곱셈:{result3}')

 

li1 = [10,20,30,40,50]

for _, v in enumerate(li1):
  print(f'값: {v}')

2.None의 특징

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

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

num = None
print(num)

def func10(num):
  if num >= 10:
    return num
    
    
print(func10(10))
print(func10(5))

def func11(num=None):
  if num is None:
    print('전달된 값이 없습니다')
  else:
    print(num)
    
func11(10)
func11()

num = None
#None을 비교할 경우 == 보다 is를 권장함
if num is None: #객체 비교할때 is (쉽게 생각해서 주소를 비교)
  print('num의 값은 없습니다')

if num == None: # 안에 있는 값을 비교할 때 ==
  print('num의 값은 없습니다')

str1 = 'Hello'
str2 = 'Hello'

#객체비교
result1 = str1 is str2
print(result1) #True

li1 = [1,2,3,4,5]
li2 = [1,2,3,4,5]

result2 = li1 is li2
print(result2) #False

#값 비교

result3 = li1 == li2
print(result3) #True

'인공지능 > 파이썬 기초' 카테고리의 다른 글

콜백함수와 람다함수  (0) 2024.09.30
변수의 범위  (2) 2024.09.30
컬렉션과 반복문 컴프리헨션  (0) 2024.09.29
제어문-반복문  (0) 2024.09.29
제어문 - 조건문  (14) 2024.09.29