-
사용자 정의 함수(def)Python 2021. 11. 25. 00:23
*본 게시물은 21-2학기 연세대학교 일반대학원 온라인데이터수집과분석(이상엽 교수님) 수업 내용을 정리한 것입니다.
파이썬에는 2가지 함수가 존재합니다. 하나는 기본 제공 함수(built-in function)이고, 다른 하나는 사용자 정의 함수(user-defined function)입니다.
빌트인 함수는 print(), len()같이 사용자가 별도의 정의를 내리지 않고도 파이썬에서 사용할 수 있는 기본 함수를 말합니다. 사용자 함수는 기본 제공 함수로 반복 task를 수행할 수 없을 때 정의하는 함수라 할 수 있습니다.
사용자 정의 함수는 define으로 생성할 수 있습니다. ①함수 이름, ②파라미터(함수에서 사용될 변수), 실제 ③동작문(body) 그리고 return이라는 ④함수의 반환값으로 구성됩니다. 따라서 사용자 정의 함수는 다음과 같이 생겼음을 알 수 있습니다.
123def function_name(param1, param2...):bodyreturn xxxcs def(ine) 뒤에 함수 이름이 오고, 괄호 안에 파라미터가 오고, body라는 동작문, 그리고 return이라는 반환값이 있음을 확인할 수 있습니다. 실제 사용자 정의함수를 사용하는 방법은 아래와 같습니다.
12345678# 위의 기본 사용자 함수꼴을 사용해서 만들어본다면...def subtract(x,y):s = x - yretun s#만든 함수를 작동시켜 본다면?subtract(10, 5) # 값은 5가 반환됩니다.cs 함수를 작동시킬 때는 def에서 파라미터로 지정했던 갯수랑 똑같은 인자가 들어와야 합니다! 만일 동일 갯수의 인자가 들어오지 않으면 "TypeError: 함수이름() missing 1 required positional argument: 'param'"이라는 경고가 표출됩니다.
함수의 body에는 보다 복잡한 내용들이 들어갈 수도 있습니다.
1234567891011121314151617# for문을 사용한 사용자 정의 함수def add_numbers(x):total = 0for i in x:total = total + ireturn total# 위의 함수를 숫자로 구성된 리스트에 적용한다면?x = [1,2,3]add_numbers(x)# 일단 total 0인 상태에서 시작하게 됩니다.# x라는 리스트 안에 원소 i가 있을 때 total과 더하게 되므로# 일단은 0+1# 다음은 total이 1인 상태에서 다음 리스트 원소인 2와 더해져서 3# total이 3인 상태에서 다시 for문이 도므로 x안의 3까지 더해집니다# 따라서 최종 반환값은 6cs 숫자 뿐만 아니라 다른 명령어도 가능합니다. 아래 함수는 이상엽 교수님 수업 자료에 있는 예시입니다.
123456789101112# 문장에 단어가 몇 개 있는지 세는 간단한 함수를 작성한다고 생각합니다.# 전처리는 우선 끝에 있는 공백을 없애고, 마침표를 없애는 것부터 시작합니다.# 다음으로는 공백을 기준으로 문장을 잘라줍니다.# 잘려진 단어(어절)의 갯수를 len()으로 셉니다def count_words(text):cleaned_text = text.strip().replace('.', '')cleaned_text = cleaned_text.split()return len(cleaned_text)text = 'Today is a good day.'count_words(text) # ['today', 'is', 'a', 'good', 'day']의 길이인 5가 반환됩니다.cs 여기서부터는 다양한 함수의 예시입니다. 연습 겸 복습 겸 작성해보았습니다.
12345678910111213141516171819202122232425262728### 숫자가 0보다 큰 지 아닌 지를 리턴하는 함수 ###def bigger(a):if a > 0:print(a, '은/는 0보다 큽니다')bigger(100) # 100 은/는 0보다 큽니다.### 둘을 더해주는 함수 ###def summation(a,b):summ = a+breturn summsummation(10000, 9) # 100009summation(a=10000, b=9) #혹은 이렇게도 함수를 사용할 수 있습니다.### 빼기 함수, 그런데 파라미터에 기본값을 지정한다면? ###def subtract(x,y = 0):res = x - yreturn ressubtract(7,4) # 3 리턴# y= 0이 작동되지 않은 이유는 인자에 4를 넣음으로써 새로 y값이 할당되었기 때문입니다.# 다만 아래와 같이 인자를 하나만 넣는다면 y = 0이 유지가 됩니다
# 인자를 하나만 넣어도 가능한 이유는 y에 0이 버티고 있기 때문입니다 ^^ㅋㅋsubtract(3) # 3 - 0 = 3cs 'Python' 카테고리의 다른 글
함수2 - 함수의 종류 (0) 2022.03.07 함수1- 함수 기초 (0) 2022.02.16 4. 자료형(data types)- 리스트(list) (0) 2021.09.11 3. 자료형(data types)- 숫자 numbers (0) 2021.09.11 2. Python의 함수(function) (0) 2021.09.10