실습 설명파이썬 함수 사용 팁
파이썬의 함수에는 크게 네 가지 형태가 있습니다.
함수를 정의하는 네가지 방법
1. 매개변수와 반환 값이 없는 형태
가장 기본 형태는 아래와 같습니다. 매개변수도 없고 반환 값도 없는 형태로 호출할 때는 함수명()을 이용해서 호출합니다.
def 함수명():
로직 ...
#example
def greetings():
print("Hello!")
2. 매개변수는 없지만 반환 값은 있는 형태
매개변수는 없지만 반환 값은 있는 형태도 있습니다. 마찬가지로 호출할 때는 함수명()을 이용하면 됩니다.
def 함수명():
return 반환 값
#example
def get_pi():
pi = 3.141592
return pi
3. 매개변수는 있지만 반환 값이 없는 형태
매개변수는 있지만 반환값이 없는 형태도 있을 수 있겠죠. 호출할 때는 전달 인자를 넣어서 함수명(전달 인자) 형태로 호출합니다.
def 함수명(매개변수1, 매개변수2, ...):
로직 ...
#example
def display(name, age):
print("Name: ", name, "Age: ", age)
4. 매개변수와 반환 값이 모두 있는 형태
가장 많이 쓰이는 형태로 매개변수와 반환 값이 모두 있는 형태입니다. 호출할 때는 전달 인자를 넣어서 함수명(전달 인자) 형태로 호출합니다.
def 함수명(매개변수1, 매개변수2, ...):
로직 ...
return 반환 값
#example
def index_view(request):
return render(request, "<h1>템플릿 입니다.</h1>")
인자를 전달하는 두가지 방법
함수를 호출할 때 인자를 전달하는 방법에는 크게 두가지가 있습니다. 위치로 인자를 전달하는 위치 전달 인자(Positional Arguments)와 키워드로 인자를 전달하는 키워드 전달 인자(Keyword Arguments)입니다.
위치 전달 인자(Positional Arguments)
위치 전달 인자는 우리가 계속 사용하던 방식으로 함수를 정의할 때 매개변수를 써준 순서대로 즉 매개변수가 정의된 위치에 맞게 인자가 전달되는 방식입니다.
# 함수 정의
def calc(a, b, c):
result = 100 * a + 10 * b + c
print(result)
return result
# 함수 호출
calc(1, 2, 3)
# 결과
123
예를들어, calc 함수를 정의할 때 a, b, c 순서대로 매개변수를 적어 주었으므로 calc(1, 2, 3)로 호출하게 되면 a에는 1이, b에는 2가, c에는 3이 위치에 맞게 들어가게 되는 것이죠. 만약 calc(3, 2, 1)로 호출하게 되면 a부터 순서대로 3, 2, 1이 들어가서 결과는 321이 됩니다.
키워드 전달 인자(Keyword Arguments)
키워드 전달 인자는 인자를 전달할 때 식별자를 앞에 붙여서 명시적으로 전달하는 방식입니다. 이렇게 말이죠.
# 함수 정의 (위와 동일해요)
def calc(a, b, c):
result = 100 * a + 10 * b + c
print(result)
return result
# 함수 호출
calc(a=1, b=2, c=3)
# 결과
123
매개변수에 어떤 값을 전달할지를 명시적으로 지정하면, 매개변수가 원래 정의된 순서와 관계없이 함수를 호출할 수 있습니다
# 함수 호출
calc(c=1, a=2, b=3)
# 결과
231
이렇게 함수 호출 시에 식별자와 함께 전달되는 인자를키워드 전달 인자(Keyword Argument)라고 합니다.
그럼 뭐가 더 좋은 건가요?
둘 중에 뭐가 더 좋다고 말하기는 어렵고 두 가지 방법 모두 사용됩니다. 키워드 전달 인자를 사용하면 전달 인자를 키워드와 함께 쓰기 때문에 코드를 조금 더 직관적으로 작성할 수 있다는 장점이 있지만 코드의 유연성을 떨어뜨립니다.
예를 들어 함수 정의부에서 매개변수의 이름이 다음과 같이 변경된다면
# 함수 재정의
def calc(d, e, f):
result = 100 * d + 10 * e + f
print(result)
return result
위치 전달 인자를 사용한 기존의 코드는 별다른 수정 없이도 기존과 같은 결과를 얻을 수 있지만
# 함수 호출
calc(1, 2, 3)
# 결과
123
키워드 전달 인자를 사용했다면 해당 키워드가 존재하지 않기 때문에 에러가 나게 됩니다.
# 함수 호출
calc(a=1, b=2, c=3)
# 결과
# TypeError: calc() got an unexpected keyword argument 'a'
우리는 기본적으로 위치 전달 인자를 사용하고 키워드 전달 인자는 필요할 경우에 사용하도록 하겠습니다.
매개변수에 대한 추가적인 내용은 파이썬 강의에서 다루도록 하고 지금은 두 가지 방법이 있다는 것을 알고 사용하는 방법을 익혀두는것이 중요합니다.
아래를 참고해서 코스토랑의 템플릿을 작성해 주세요. 천천히 흐름을 이해하며 각 단계가 무엇을 의미하는지 생각해 보세요.
- menus/index.html 을 렌더해서 결과로 돌려주도록 index View를 수정해 주세요.
- index.html 템플릿을 완성해 주세요.
- 서버를 실행하고 /menus로 접속해서 다음과 같이 화면이 잘 나오는지 확인해 주세요.
출처 코드잇
'BackEnd > Django로 웹 개발 시작하기' 카테고리의 다른 글
[Django 웹 개발 시작] 코스토랑 프로젝트 #04 날짜 바꾸기 (0) | 2023.03.23 |
---|---|
[Django 웹 개발 시작] 코스토랑 프로젝트 #03 메인 페이지 (0) | 2023.03.23 |
[Django 웹 개발 시작] Template Language 한 걸음 더 (0) | 2023.03.23 |
[Django 웹 개발 시작] 신메뉴 출시! (0) | 2023.03.20 |
[Django 웹 개발 시작] 레스토랑 프로젝트 #02 URL 연결하기 (2) | 2023.03.14 |