파이썬/파이썬 기초 문법
파이썬 사용자 정의 함수와 None
쵠몽
2024. 9. 30. 13:55
1. 사용자 정의 함수
파이썬에선 특정 작업을 수행하기 위해 사용자가 직접 함수를 만들 수 있다. 함수를 만들면 메모리에 객체 형태로 올라가고 이 함수를 불러와서 사용할 수 있다.
def 함수명(매개변수1, 매개변수2, ...):
# 함수 내용
return 결과값
1-1. 매개변수와 반환 값이 없는 함수
def func1():
print('처음으로 만드는 함수')
func1()
func1()
func1()
for i in range(5):
func1()
func1()
temp = func1()
print(temp)
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. 반환 값이 있는 함수
def func1():
print('처음으로 만드는 함수')
func1()
temp = func1()
print(temp)
# temp가 func1의 메모리 주소를 가리키게 됨
temp = func1
print(temp)
temp() # temp() == func1()
def func4():
return '🎁'
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'
1-4. 기본값이 설정된 매개변수
def func6(num1=0, num2=0):
sum = num1 + num2
return sum
print(func6())
print(func6(10)) # sum = 10 + 0 즉, num1=10, num2=0
print(func6(10, 3))
# print(func6(, 3))
# print(func6(None, 3)) # None 타입은 계산할 수 없기 때문에 에러
print(func6(num2=3)) # sum 0 + 3 즉, num=0, num2=3
1-5. 가변 매개변수
def func7(*args):
return args
print(func7())
print(func7(10, 30, 50))
print(func7(10)) # 튜플 형태이기 때문에 (10,) 형태로 출력
1-6. 키워드 매개변수
def func8(id, name, age):
print(f'아이디: {id}')
print(f'이름: {name}')
print(f'나이: {age}')
func8('apple', '김사과', 20)
func8(age=30, id='orange', name='오렌지') # 매개변수 값을 지정하면 순서 상관 없음
매개변수의 값을 지정해서 넣으면 순서 상관 없이 넣어도 반환값이 지정되어 출력됨
dic1 = {'age': 25, 'id':'banana', 'name':'반하나'} # 딕셔너리 형태로 매개변수를 넣을 수 있음
func8(**dic1)
func8(*dic1) # *을 하나만 사용하면 키(Key) 값이 지정됨
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은 파이썬에서 아무 값이 없음을 표현하는 데 사용된다. 그 자체로 데이터 타입이 NoneType인 내장 상수이며 모든 None 값은 동일하다.
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: # None은 is 키워드 사용
print('전달된 값이 없습니다')
else:
print(num)
func11(10)
func11()
num = None
# None을 비교할 경우 == 보다 is를 권장
# 객체 비교 시 is # 값 비교 시 ==
if num is None:
print('num의 값은 없습니다')
if num == None:
print('num의 값은 없습니다')
str1 = 'Hello'
str2 = 'Hello'
# 객체 비교
result1 = str1 is str2
print(result1)
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