1-3 반환값이 있는 함수
def 함수명(변수1, 변수2, ...):
함수가 호출되면 실행할 문장
...
return 값
# 호출
함수명(값1, 값2, ...)
def func4():
print("hello python")
a = func4()
print(f'a에 저장된 값은: {a}')
a에 저장된 값은: None
# return 값이 없기 때문에 None이 나오게 된다.
def func5():
return '🎁'
present = func5()
print(f"present에 저장된 값은: {present}")
# present에 저장된 값은: 🎁
def func6(num1, num2):
sum = num1 + num2
return sum
result = func6(10)
print(result)
# TypeError: func6() missing 1 required positional argument: 'num2'
result = func6(10, 5)
print(result)
# 15
func6이라는 함수는 num1과 num2 두 변수에 해당하는 값을 입력해야 하는데 결과에 변수가 하나만 포함되어 있어서 오류가 발생합니다.
그러나 각각 num1과 num2에 해당하는 값을 입력하면 결과 값이 올바르게 반환됩니다.
※ 함수 내부에서 생성한 변수를 외부에서 사용하면 에러가 나지 않을까요?
print(num1, num2)
# NameError: name 'num1' is not defined
내 대답은 아니오 야.
변수 num1은 함수 내부에서 생성되었기 때문에 함수 외부에서 사용할 수 없습니다.
1-4 기본 매개변수
- 변수를 값으로 미리 채우는 함수
- 기본 매개변수는 첫 번째 매개변수에 적용할 수 없습니다.
def 함수명(변수1 = 값1, 변수2 = 값2, ...)
함수가 호출되면 실행할 문장
...
return 값
# 호출
변수 = 함수명(값1, 값2, ...)
# default 매개변수 있을 때 호출방법
변수 = 함수명()
def func6(num1 = 1, num2 = 1):
sum = num1 + num2
return sum
print(func6())
# 2
print(func6(10, 5))
# 15
result = func6(7, 3)
print(result)
# 10
- 값을 입력하지 않으면 설정값 2가 나옵니다.
- 값을 추가하기 때문에 값이 변경됩니다.
1-5 가변 개수의 매개변수가 있는 함수
- 변수 매개변수를 전달하는 경우 함수 내에서 튜플 형태로 사용하십시오.
def 함수명(*변수):
함수가 호출되면 실행할 문장
...
return 값
# 호출
변수 = 함수명(값1, 값2, ...)
# 호출
변수 = 함수명(값)
# 호출
변수 = 함수명()
def func7(*args):
result = 0
print(args)
print(func7())
# ()
# None
print(func7(10, 30, 20, 70))
# (10, 30, 20, 70)
# None
def func7(*args):
result = 0
for i in args:
result += i
return result
print(func7())
# 0
print(func7(10, 30, 20, 70))
# 130
- None이 나오는 이유: 인쇄물에 인쇄가 인쇄되어 반복의 부재로 나타나기 때문입니다.
- 그러나 print 대신 return으로 반환하면 None이 출력되지 않습니다.
1-6 매개변수를 사전 구조로 받는 함수
def 함수명(**변수):
함수가 호출되면 실행할 문장
...
return 값
# 호출
변수 = 함수명(변수1 = 값1, 변수2 = 값2)
def func8(id, name, age):
print(f'아이디: {id}')
print(f'이름: {name}')
print(f'나이: {age}')
dic1 = {'id': 'apple', 'name':'김사과', 'age':20}
func8(**dic1)
# 아이디: apple
# 이름: 김사과
# 나이: 20
func8(*dic1)
# 아이디: id
# 이름: name
# 나이: age
- 매개변수 이름과 사전 키는 동일해야 합니다.
- 사전 키는 문자열 형식이어야 합니다.
- 함수를 호출할 때 * 만 사용하면 키가 저장됩니다.
def func9(**args):
print(args)
dic1 = {'id': 'apple', 'name':'김사과', 'age':20}
user = func9(id = 'apple', name="김사과", age = 20)
user
# {'id': 'apple', 'name': '김사과', 'age': 20}
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)
# apple
def func10(num1, num2 = 1):
sum = num1 + num2
return sum
print(func10(10, 3))
# 13
print(func10(1))
# 2
- 함수가 이미 매개변수의 값을 미리 지정했다면,
- 두 개의 매개변수에 대한 값을 제공하면 두 개로 계산됩니다.
- 매개변수에 값을 지정하면 와 기본값을 사용하여 계산됩니다.
1-7 반환 값이 여러 개인 함수
def 함수명(변수1, 변수2, ...):
함수가 호출되면 실행할 문장
...
return 값1, 값2, ...
# 호출
변수 = 함수명(변수1, 변수2, ..)
def func10(num1, num2):
return num1 + num2, num1 - num2, num1 * num2, num1 / num2
result1, result2, result3, result4 = func10(10, 3)
print(result1)
# 13
print(result2)
# 7
print(result3)
# 30
print(result4)
# 3.3333333333333335
# 곱셈의 결과만 필요할 때
# 언더바(_) 사용
_, _, result3, _ = func10(10, 3)
print(result3)
# 30