1. How to make a Function
(A) 함수 정의하기
def 함수명():
(들여쓰기)실행문
*tab키를 이용하여 들여쓰기를 꼭 해야한다.
(B) 함수 호출하기
함수명()
*만약 함수명 뒤에 괄호()가 없으면 호출되지 않습니다.
2. Argument/Parameter(매개변수) 이용하기
(A) Argument를 이용한 함수 선언하기
def hello_to(Argument):
print("Hello", Argument)
ex)
def hello_to(name):
print("Hello", name)
(B) 함수 호출하기
hello_to("Raphael")
hello_to("Michael")
*Argument 없이 함수를 호출할 경우 오류 발생
(C) default value를 가진 함수 만들기
def hello_to(Argument = 기본값):
print("Hello", Argument)
* 기본값을 갖고있는 함수는 argument값이 없어도 기본값으로 출력이 됩니다.
(D) 응용 해보기
i) 덧셈을 수행하는 함수를 만들어 보세요. 함수의 이름은 plus입니다.
ii) 뺄셈을 수행하는 함수를 만들어 보세요. 함수의 이름은 minus입니다.
(저는 if문을 사용하여 뺄셈을 했을때 음수값이 안나오도록 만들어 보았습니다.)
(D) Return을 이용한 함수 만들기
- return이란 해당 함수를 수행한 이후 반환할 값을 의미한다. 연산 결과가 될 수 있고 다른 값이 될 수 있다.
3. Keyword Argument
- 우리가 지금까지 배운 함수의 형태는 Position Argument를 이용한 방식이다. 예를들어,
def plus(a,b):
return a+b
위와 같이 덧셈을 하는 함수를 만들고 이를 호출하기 위해 우리는 plus(2,1)처럼 a와 b에 할당하는 값(value)를 넣어야 한다. 이로써 a는 2를 b는 1이라는 값을 각각 할당 받게 된다. 이것을 Position Argument를 이용한 방식의 함수이다.
- Position Argument방식과는 다르게 Argument의 이름을 이용하여 할당하는 방식을 Keyword Argument라고 한다. 이 방식의 장점은 매개변수에 값을 직접 지정하므로 함수 호출 시 매개변수의 입력 순서가 중요하지 않다는 것이다.
(A) Keyword Argument 응용하기 - String Formatting
def say_hello(name,age):
return "Hello, name. You are age years old!"
위와 같은 함수가 존재할때, name과 age라는 매개변수(argument)의 값과 상관없이 say_hello함수를 호출하면 return문에 포함된 문자열(String)이 그대로 출력된다. return문의 문자열에 포함된 name과 age 부분이 매개변수의 값에 따라 자유롭게 변경될 수 있게 하기 위해 우리는 Keyword Arguement를 응용하여 사용할 수 있다.
def say_hello(name,age):
return f"Hello, {name}. You are {age} years old!"
이처럼 return문의 문자열 앞에 f(format)을 붙여주고 매개변수와 동일한 이름을 가진 문자열을 중괄호를 이용해 표시해준다. 일종의 매핑이라고 생각하면 이해가 쉽다. 이 방식을 String Formatting이라고 부른다.
귀찮지만 이외의 방식이 하나 더 존재한다. Java와 같은 언어를 미리 경험해 본 사람이라면 모두 아는 방식이다.
위의 사진과 같은 방식은 매개변수의 수가 많아지면 사용하기 불편하다.
4. *args, **kwargs
- 파이썬을 사용한다면 꼭 알아야 하는 것 중 하나가 바로 *args와 **kwargs이다.
- function을 만들 때 용도에 따라 매개변수를 사용한다. 파이썬의 특징 중 하나로 unlimited argument이다.
- 예를 들어 위와 같은 함수가 존재할 때, plus함수를 사용하기 위해서는 a,b에 해당하는 매개변수(positional argument)를 반드시 입력해야한다. 반대로 a,b이상의 즉, 두개 이상의 매개변수를 넣는다면 아래의 사진과 같이 에러가 발생하게 된다.
- 이때 사용할 수 있는 것이 *args(무한 매개변수)이다. *args를 사용한다면 아래 사진처럼 tuple을 형성한다는 것을 알 수 있다.
- 중요한 것은 *args는 positional argument만 사용가능하다.
- 그럼 a=1과 같은 변수형태의 keyword argument는 사용할 수 없는가? *args 대신 **kwargs를 사용하면 된다.
- *args와 **kwargs 두개를 동시에 사용할 수 있다.
- 여기서 *args와 **kwargs의 차이점은 *args는 Tuple의 형태로 **kwars는 Dictionary의 형태라는 것이다.
- 계속해서 python을 공부한다면 이 부분이 기본으로서 굉장히 중요한 개념으로 자리잡게 될 것이다.
- 예를 들어 계산기를 프로그램으로 구현할 때 무제한으로(당연히 표시할 수 있는 최대값의 제한은 있으나) 덧셈을 하는 기능을 만든다면? *args를 사용하면 간단히 구현할 수 있다.
'Back-end > Basic Python' 카테고리의 다른 글
파이썬 기초문법 - 5 (0) | 2020.07.31 |
---|---|
파이썬 기초문법 - 4 (0) | 2020.07.31 |
파이썬 기초문법 - 3 (0) | 2020.07.30 |
파이썬 기초문법 - 1 (0) | 2020.07.29 |
댓글