Function
특정 기능을 수행하기 위한 명령어들의 모음
→ 이전에 사용했던 print(), type() 등이 이에 해당함
- 사용자 정의 함수
def 함수명(매개변수(parameter)):
실행문
return 결과값
⇒ 매개변수 : 입력받는 값
▶️ f(x)라는 사용자 정의 함수를 만들고, x+2값을 출력하게 함
▶️ f(x)에서 x가 매개변수이므로 입력받는 값에 따라 다른 출력값이 나옴
Return
▶️ 위 두 셀의 차이는 return의 유무 차이임
▶️ return을 넣어주지 않으면 a 값에 1을 넣어 2라는 계산까지는 하지만 출력이 되지 않음
▶️ 다른 언어들과는 달리 파이썬은 return이 없으면 return None이 default값으로 들어감
전역변수 vs 지역변수
→ 함수 안에서 생성되는 변수 : 지역변수(local variable)
→ 프로그램 어디서나 사용할 수 있는 변수 : 전역변수(global variable)
⇒ 지역 변수는 함수가 종료되면 사라짐
⇒ 변수의 범위는 변수의 사용 가능 영역과 변수가 생존하는 시간과 관련 있음
▶️ 사용자 정의 함수 myFunc의 parameter 값으로 지역 변수를 생성함
▶️ localVar이 정의되지 않았다는 오류가 발생함
→ 지역 변수는 함수가 종료되면서 사라지기 때문에 localVar 값을 출력할 수 없게 되어 발생하는 오류
▶️ localVar 대신 globalVar 값을 출력하면 정상적으로 출력됨
▶️ my_sum = 0 : my_sum 변수를 만들어 초기값을 0으로 지정함
▶️ for 반복문을 생성해 1부터 10까지를 i 값에 저장 후 계속해서 더해나가도록 만듦
for i in range(1,11) :
my_sum += i
▶️ 1부터 10까지의 값을 더한 55가 출력됨
▶️ def my_sum(i,j) : i와 j는 매개변수(parameter)로 지정함
▶️ 변수 l에 초기값 0을 지정함
▶️ i부터 j까지의 범위를 k까지 저장
★ i부터 j까지 출력하기 위해서는 range(i, j+1)임을 유의 ★
▶️ l 값과 i 부터 j까지의 값을 더해나간 후 출력함
# 연습문제 #
이름과 나이를 인자로 받아 출력하는 함수를 정의해보자.
▶️ my_profile 함수를 생성해 parameter로 name과 age를 지정함
첫 번째 인자를 "더해"로 입력하면 나머지 두 개 인자값들을 전부 더하고 "더해"가 아닌 다른 값을 입력하면 "인자값을 제대로 넣어주세요."를 출력하는 프로그램을 작성해보자.
ex) my_func("더해", 1, 2) → 3
my_func(d, 1, 2) → "인자값을 제대로 넣어주세요"
▶️ my_sum 함수를 생성해 parameter로 p, i, j를 지정함
▶️ 만약 첫 번째 인자값에 '더해'를 입력하면 두 번째, 세 번째 인자값을 더하도록 실행함
▶️ 만약 첫 번째 인자값에 '더해'가 아닌 다른 말을 입력하면 '인자값을 제대로 넣으세요' 출력함
익명 함수(Anonymous Function) - lambda
lambda 매개변수 : 실행문
⇒ 1줄로 함수 선언할 때 편하게 쓰임
▶️ my_sum 함수를 생성해 parameter 값으로 x와 y를 지정함
▶️ x와 y를 더한 값을 출력하도록 함
▶️ 위와 같은 사용자 정의 함수를 한 줄로 표현이 가능함
▶️ my_lambda_sum_func 변수를 생성해 lambda 매개변수(x, y) : 실행문(x+y)를 저장함
내장함수(builtin)
▶️ 내장함수를 확인해보면 위와같은 함수들이 있음을 확인할 수 있음
▶️ 개수는 총 154개
Min / Max
max(iterable, key = 함수)
→ 최소 / 최대값 찾기
▶️ max 함수를 통해서 각각의 최대값을 찾고 출력함
▶️ 함수로 지정된 abs는 absolute, 즉 절대값을 의미하기 때문에 최대값으로 -10을 출력함
Filter
filter(필터링 여부를 결정한 함수, iterable)
→ 각 원소마다 함수가 호출되어, return 값이 true로 판정될 경우만 출력함
▶️ judge_fn 사용자 정의 함수를 생성해 parameter 값으로 value를 지정함
▶️ value 값을 2로 나눈 나머지가 0, 즉 짝수일 경우에 사용자 정의 함수 내에서 [1, 2, 3, 4, 5] 중 true로 판정되는 값을 출력함
Map
map(값을 변환할 함수, iterable)
→ 각 원소마다 함수가 호출되어 return값이 변함
▶️ power_fn 사용자 정의 함수를 생성해 parameter 값으로 value를 지정함
▶️ value값의 제곱을 출력하도록 함
▶️ power_fn(10)은 10의 제곱값이므로 100을 출력함
▶️ power_fn 사용자 정의 함수값을 이용해 [1, 2, 3]에 함수를 적용해 각각의 제곱값을 출력함
Enumerate
enumerate(iterable, 시작번호)
→ for문처럼 반복되는 구간에서 index값이 필요할 때, 몇 번째에서 에러가 발생했는지 파악이 가능함
▶️ output으로 2가지가 나옴 → index, value
▶️ 많은 데이터가 존재할 때 index를 인지하기 좋은 함수
▶️ index 값을 1부터 지정하기 위해서는 iterable 뒤에 1을 입력해주면 가능
▶️ list로 enumerate함수를 묶어 리스트로 표현 가능
★ enumerate와 zip은 1대1 대응만 가능함 ★
Zip
zip(*iterable)
→ 여러개의 리스트나 튜플 또는 순차 자료형을 짝지음
▶️ actor와 gender를 zip으로 묶어 각각 i와 j에 저장한 후 출력하면 (송중기, 남)이 하나에, (송혜교, 여)가 하나에 따로 출력됨
▶️ my_list 값과 kinds 각각을 연결하고 index까지 부여하고 싶을 때, enumerate와 zip을 함께 사용할 수 있음
'Data Analysis' 카테고리의 다른 글
코인 투자 프로그램 (2) | 2021.08.31 |
---|---|
[ Python ] 기본값 (0) | 2021.08.31 |
[ Python ] 언더바(_) (0) | 2021.08.31 |
[ Python ] 반복문 (0) | 2021.08.31 |
주식 관리 프로그램 (0) | 2021.08.31 |