Python 파이썬 연재 시리즈
2020/03/11 - [공부/Python] - #1 Mac에서 파이썬 설치하기
2020/03/12 - [공부/Python] - #2 print() 함수 이용하기
2020/03/13 - [공부/Python] - #3 자료형과 문자열 기초
본 게시물은 서울 오픈스퀘어 D (Seoul OSD) 강좌를 바탕으로 작성되었습니다. Seoul OSD 강좌에서는 아나콘다(Anaconda) 주피터노트북(jupyter notebook)으로 실습을 진행했으며 이에 따라 일부 코드가 일반적인 파이썬 환경과 다르게 동작할 수 있습니다. |
함수를 만들어보자
def plus(a, b):
result = a + b
return result
r = plus(4, 5)
print(r)
위 코드는 기존 파이썬에는 없는 plus라는 함수를 만드는 과정이다.
def 임의의 함수이름(변수1, 변수2): 를 써주고 이후에 원하는 과정을 작성하면 된다.
그럼 return은 어떤 역할을 하는 것일까?
def plus_(a, b):
result = a + b
r = plus_(4, 5)
print(r)
이렇게 return을 뺀 함수를 만들고 출력을 비교해보자.
9 | none |
왼쪽은 return이 있을 때 이고 오른쪽은 return이 없을 때이다. 계산만 수행하고 return을 통해 다시 result안에 넣어주지 않았기 때문에 none으로 출력되는 것이다. 따라서 함수를 작성할 때는 return을 통해 수행한 값을 다음에 사용할 수 있도록 넣어주도록 하자.
매개변수 활용하기
만약 위의 plus 함수를 사용할 때 사용자가 변수를 지정하지 않으면 함수 제작자가 원하는 변수가 들어가 계산되도록 하고 싶다면 어떻게 해야 할까? 기본 매개변수를 지정하면 되는데 그 방법은 상당히 간단하다.
def plus_1(a = 5, b = 5):
result = a + b
return result
r = plus_1()
print(r)
r2 = plus_1(1, 10)
print(r2)
10
11
위에서 코드를 보면 알 수 있듯이 r은 변수를 아무것도 지정하지 않았기 때문에 기본 매개변수로 지정된 a=5와 b=5가 적용되어 연산되었다. 반면 r2와 같이 사용자가 변수를 지정하게 되면 자동으로 기본 매개변수가 아니라 사용자가 지정한 변수를 사용하여 연산이 진행된다.
조금 더 복잡한 함수를 작성해보자.
def person(name, age, address, phone):
r = '''이 사람의 이름은 {name_defult},
이 사람의 나이는 {age_defult},
이 사람의 주소는 {address_defult},
이 사람의 전화번호는 {phone_defult}'''
result = r.format(name_defult = name, age_defult = age, address_defult = address, phone_defult = phone)
return result
r = person('minsu', 20, 'seoul', '010-1234-5678')
print(r)
이렇게 매개변수를 작성해준 후 { } 중괄호를 이용해 문장 내에 변수가 들어갈 위치를 지정해준다. 그리고 변수.format 을 이용해 이 둘을 연결해주면 입력한 변수의 순서대로 문장이 작성된다. 결과는 아래와 같다.
이 사람의 이름은 minsu,
이 사람의 나이는 20,
이 사람의 주소는 seoul,
이 사람의 전화번호는 010-1234-5678
이와 같은 경우는 반드시 순서대로 작성해야하기 때문에 이 불편함을 없애려면 키워드 매개변수를 이용하면 된다.
def person(name, age, address, phone):
r = '''이 사람의 이름은 {name_defult},
이 사람의 나이는 {age_defult},
이 사람의 주소는 {address_defult},
이 사람의 전화번호는 {phone_defult}'''
result = r.format(name_defult = name, age_defult = age, address_defult = address, phone_defult = phone)
return result
r = person(name = 'minsu', address = 'seoul',
age = 20, phone = '010-1234-5678')
print(r)
키워드 매개변수는 함수를 사용할 때 변수 입력을 단순히 나열하는 것이 아니라 name = 'minsu'처럼 이 변수가 어떤 매개변수와 짝을 이루는지 까지 적어주는 것이다. 그러면 변수입력을 이름, 주소, 나이, 휴대폰 순으로 적었지만 결과는 아래와 같이 함수에서 작성된 대로 출력되었다.
이 사람의 이름은 minsu,
이 사람의 나이는 20,
이 사람의 주소는 seoul,
이 사람의 전화번호는 010-1234-5678
def sum_all(numbers):
print(numbers)
sum_all(1,2,3,4,5)
이렇게 모든 것을 더하는 함수를 작성하고 출력시키면 어떻게 될까?
TypeError: sum_all() takes 1 positional argument but 5 were given
우리의 바램과는 다르게 애러가 발생한다. 메시지를 읽어보면 대출 1개만 들어갈 수 있는 자리에 5개가 들어가서 애러가 발생했다는 것 같다. 이 경우 숫자를 튜플 형태로 들어가게 하면 될 것이다. 변수가 numbers에 들어갈 때 튜플 형태로 들어가게 하는 방법은 간단하다.
def sum_all(*numbers):
total = 0
for number in numbers:
total = total + number
print(total)
sum_all(1,2,3,4,5)
numbers 앞에 *별을 붙여주면 해결된다. 아래와 같이 잘 더해진 것을 알 수 있다.
15
'공부 | Study > Python' 카테고리의 다른 글
[Python GUI] #1 QT Designer 실행하기 (0) | 2021.03.08 |
---|---|
#5 [Seoul OSD] Docstring (0) | 2020.08.03 |
#3 자료형과 문자열 기초 (0) | 2020.03.13 |
#2 print() 함수 이용하기 (0) | 2020.03.12 |
#1 Mac에서 파이썬 설치하기 (0) | 2020.03.11 |