def 함수명(매개변수1, 매개변수2, ...):
# 함수 내용
return 결과값
def func1():
print('처음으로 만드는 함수!')
func1()
func1()
처음으로 만드는 함수!
처음으로 만드는 함수!
for i in range(5):
func1()
처음으로 만드는 함수!
처음으로 만드는 함수!
처음으로 만드는 함수!
처음으로 만드는 함수!
처음으로 만드는 함수!
def func2(num):
print(f'입력받은 숫자 : {num}') # 지역변수 : 스택에 저장. 필요없으면 바로 폐기
func2(10)
func2(4)
입력받은 숫자 : 10
입력받은 숫자 : 4
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부터 10까지의 합: 55
1부터 100까지의 합: 5050
def func4():
print('안녕하세요 Python!')
func4() # 함수 실행
temp = func4() # 함수 실행 후 반환값을 temp에 저장
print(temp)
temp = func4 # 함수의 주소를 temp에 저장
print(temp)
temp()
안녕하세요 Python!
안녕하세요 Python!
None
<function func4 at 0x7a4f12b73be0>
안녕하세요 Python!
def func5():
return '🎁'
presents = func5()
print(f'presents에 저장된 값: {presents}')
presents에 저장된 값: 🎁
def func6(num1, num2):
sum = num1 + num2
return sum
print(func6(10, 5))
temp = func6(4, 3)
print(temp)
# print(func5(10)) # TypeError: func5() missing 1 required positional argument: 'num2'
# print(sum)
# print(num1)
# print(num2)
15
7
variable = None
# 값의 존재 여부 확인
def get_data_from_database():
pass
data = get_data_from_database()
print(data)
if data is None:
print('데이터를 수신하지 못함!')
else:
print('데이터를 수신받음!')
None
데이터를 수신하지 못함!
def func():
pass # # pass 라고 써놓으면 나중에 구현해도 됨.
def func(x):
if x > 0:
return x
# x가 10 이하일 때는 아무런 값도 반환하지 않는다. 실제로는 None이 반환된다.
print(func(10))
10
print(func(-1))
None
def hello(message=None):
if message is None: # if message == none: 이렇게 하지 않음.
print("Hello!")
else:
print(message)
hello('hi')
hi
hello()
Hello!
li1 = [1, 2, 3, 4, 5]
li2 = [1, 2, 3, 4, 5]
# 객체 비교
result1 = li1 is li2
# 값 비교
result2 = li1 == li2
print(result1)
print(result2)
False
True
def func6(num1=1, num2=2):
sum = num1 + num2
return sum
print(func6())
3
print(func6(10))
12
num1에만 10이 들어가고, num2에는 그대로 2가 들어있어서 둘이 더하여 12가 출력된 것으로 보임.
print(func6(10,3))
13
num1=10, num2=3 들어가서 둘이 더하여 13이 출력됨.
# print(func6(, 3))
# print(func6(None, 3))
print(func6(num2=3)) # 뒤의 변수에 값을 넣고 싶은 경우
4
7. 가변 매개변수
함수를 호출할 때 *를 사용하면 시퀀스(리스트, 튜플 등)의 요소를 개별적인 위치 인자로 풀어서 전달할 수 있다.
def func7(*args):
return args
print(func7())
print(func7(10)) # 튜플로 묶을 때는 (10, ) 이렇게 콤마가 꼭 붙음.
print(func7(10, 30, 50))
()
(10,)
(10, 30, 50)
def func8(a, b, c):
return a + b + c
numbers = [1, 2, 3]
func8(*numbers)
6
8. 키워드 매개변수
- 키워드 매개변수는 일반적으로 기본값이 설정된 매개변수와 함께 사용된다.
- 함수의 매개변수에 기본값을 설정하면, 함수를 호출할 때 해당 매개변수를 생략할 수 있다.
def func9(id, name, age):
print(f'아이디: {id}')
print(f'이름: {name}')
print(f'나이: {age}')
func9('apple', '김사과', 20)
아이디: apple
이름: 김사과
나이: 20
func9(age=30, id='orange', name='오렌지')
아이디: orange
이름: 오렌지
나이: 30
# 매개변수명과 딕셔너리의 키가 같아야함
# 딕셔너리의 키는 반드시 문자열 형태
dic1 = {'age':25, 'id':'banana', 'name':'반하나'}
func9(**dic1)
아이디: banana
이름: 반하나
나이: 25
# *의 데이터를 보낼 경우 키가 저장
func9(*dic1)
아이디: age
이름: id
나이: name
9. 여러개의 반환 값
def func10(num1=0, num2=0):
return num1+num2, num1-num2, num1*num2, num1/num2
result = func10(10, 3)
print(result)
(13, 7, 30, 3.3333333333333335)
result1, result2, result3, result4 = func10(10, 3)
print(f'덧셈:{result1}')
print(f'뺄셈:{result2}')
print(f'곱셈:{result3}')
print(f'나눗셈:{result4}')
덧셈:13
뺄셈:7
곱셈:30
나눗셈:3.3333333333333335
_, _, result3, _ = func10(10, 3)
print(f'곱셈:{result3}')
곱셈:30
li1 = [10, 20, 30, 40, 50]
for _, v in enumerate(li1):
print(f'값: {v}')
값: 10
값: 20
값: 30
값: 40
값: 50
10. 함수 삭제하기
함수도 파이썬 객체이므로 참조 카운팅과 가비지 컬렉션의 원칙에 따라 동작한다.
함수를 참조하는 변수나 요소가 없게 되면 해당 함수는 가비지 컬렉터에 의해 메모리에서 제거될 수 있다. del 명령어를 사용하여 함수에 대한 참조를 명시적으로 제거할 수 있다. 하지만 이것이 함수가 즉시 메모리에서 제거된다는 것을 보장하지는 않는다.
def func11():
print('안녕하세요 파이썬')
func_var = func11
func_var()
안녕하세요 파이썬
def my_function():
print("Hello, World!")
del my_function
# 이후 my_function()을 호출하려고 하면 오류 발생.