사용자 정의 함수란 사용자가 특정 작업을 수행하기 위해 직접 작성한 함수
를 의미합니다. 파이썬에는 많은 내장 함수들이 있지만, 때로는 우리의 요구사항에 맞게 동작하는 함수를 직접 만들어야 할 때가 있습니다. 이때 사용자 정의 함수를 작성하게 됩니다. 기본적인 구조는 아래와 같습니다.
def 함수명(매개변수1, 매개변수2, ...):
# 함수 내용
return 결과값
def func1():
print('처음으로 만드는 함수!')
func1() # 함수 실행
for i in range(5): #반복문에서 함수 실행
func1()
def func2(num): #num 매개변수
print(f'입력받은 숫자: {num}')
func2(5) # 함수실행
매개변수로 받은 num은 함수 안에서만 사용 가능하다.
func2('안녕')
정수가 아닌 문자열을 넣어도 데이터 타입을 지정해주지 않아 오류가 나지 않는다 그래서 파이썬은 프로그램을 잘못 짤 가능성이 많다.
def func3(start, end):
sum = 0
for i in range(start, end + 1):
sum += i
print(f'{start}부터 {end}까지의 합: {sum}')
func3(1,100)
func3(10, 20)
def func5():
return '🎁'
presents = func5()
print(f'presents에 저장된 갑: {presents}')
def func6(num1, num2):
sum = num1 + num2
return sum
result = func6(10, 5)
print(result)
None
은 파이썬에서 특별한 값으로, 아무런 값이 없음을 표현하는 데 사용됩니다. 다른 언어에서의 null 또는 nil과 유사한 개념입니다.
None은 파이썬의 내장 상수이며, 그 자체로 데이터 타입이 NoneType입니다. 모든 None은 동일하므로, 두 개의 None 값을 비교할 때 항상 True를 반환합니다.
변수를 초기화할 때 아무런 값이 할당되지 않았음을 나타내기 위해 None을 사용할 수 있습니다.
variable = None
함수에서 특정 조건에서 아무런 값도 반환하지 않아야 할 때 None을 사용합니다. 사실, 함수에서 return 문이 생략되거나 없으면 기본적으로 None을 반환합니다.
def my_function(x):
if x > 10:
return x
a = my_function(1)
print(a)
x가 10 이하일 때는 아무런 값도 반환하지 않게 코드를 작성하였지만. 실제로는 None이 반환된다.
함수의 매개변수에 기본값으로 None을 할당하여 선택적으로 인자를 전달받을 수 있게 만들 수 있습니다.
def hello(message=None):
if message is None:
print("Hello!")
else:
print(message)
None을 사용하여 값의 존재 여부를 확인할 수 있습니다.
# 값의 존재 여부 확인
def get_data_from_database():
pass
data = get_data_from_database()
print(data)
if data is None:
print('데이터를 수신하지 못함!')
else:
print('데이터를 수신받음!')
None
을 검사할 때는 == 대신is 연산자
를 사용하는 것이 좋습니다. is는 객체의 동일성을 검사하는 반면, ==는 객체의 동등성을 검사하기 때문입니다.
li1 = [1, 2, 3, 4, 5]
li2 = [1, 2, 3, 4, 5]
# 서로 다른 객체
result1 = li1 is li2
# 값이 다른 객체
result2 = li1 == li2
print(result1)
print(result2)
def func6(num1, num2):
sum = num1 + num2
return sum
print(func6(10, 3))
def func6(num1 =1, num2=1): # 안넣었을경우 1로 들어감
sum = num1 + num2
return sum
print(func6())
print(func6(10))
print(func6(10, 3))
print(func6(num2=10))
뒤에있는 매개변수에 넣고싶을 때 num2라는걸 명시해주면 된다.
def func7(*args):
result = 0
# print(args)
for i in args:
result += i
return result
print(func7(10, 30, 70, 90, 100))
def func8(id, name, age):
print(f'아이디: {id}')
print(f'이름: {name}')
print(f'나이: {age}')
func8('apple','김사과',20)
func8(id='apple',name='김사과',age=20)
결과가 같게 나온다.
dic1 = {'id':'apple','name':'김사과','age':'20'} func8(**dic1)
- 무조건 매개변수명과 키값이 일치해야한다.
- 딕셔너리의 키는 만드시 문자열 형태여야한다
- 딕셔너리 값을 보낼 때 ** 를 앞에 써줘야한다.
- 키를 보낼때에는 * 한개를 입력한다
def func9(**args):
print(args)
for i in args:
if i == 'id':
id = args[i]
return id
# 받을 때 딕셔너리로 받아야한다
user = func9(id = 'apple', name='김사과',age=20)
print(user)
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}')
_, _, result3, _ = func10(10, 3)
print(result3)