Data Analysis

[ Python ] 함수

곽수진 2021. 8. 31. 15:12
반응형

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