파이썬 기초문법 8

지리산근육곰·2021년 8월 10일
0

Python기초문법

목록 보기
8/8
post-thumbnail

9. Function (함수)

  • 특정 작업을 하는데 있어 효율을 높이기 위한 기능이다.
  • def function (param1, param2, ... ) :

  • 함수 사용의 목적은 재사용성 때문이다.

    같은 코드가 두번 이상 사용될 시 함수를 쓴다.

  • function 내에서(local)작업을 수행하고 return 으로 global에 보낸다.

9.1 Function 생성

#예시
def add(a, b): ## def 지정 function 이름 "add" 생성 param. a, b 생성
    c = a + b  ## statement 생성
    return c   ## global에 작업
    print(c)   ## 이경우 global 엔 영향이 없다.

# function 실행하기
add(3, 5)

# 사칙연산
def add(a, b):
    return(a+b)

def sub(a, b):
    return a - b

def mul(a, b):
    c = 0
    while b > 0:
        c = c + a
        b = b - 1
    return c

def dev(a, b):
    if b == 0:
        return 0  ## 0으로 나눌경우 error가 뜬다. 
    else:         ##따라서 function을 만들때 대부분 숫자 나누기 0은 0으로 표시되게한다
        return a / b

a = 10
b = 0

print("Add", add(a, b))
print("Sub", sub(a, b))
print("Mul", mul(a, b))
print("Dev", dev(a, b))

9.2 Function의 다양한 형태

9.2.1 Paramater, and return 이 존재할때

def add (a, b):
    return a + b

9.2.2 Paramater 이 없고 return 이 존재할때

def get_data():
    data = pd.read_csv("test.csv")  ## 특정 작업이 지정되어 있을 경우 parameter 가 필요 없다.
    return data                     ## 이경우 function 을 사용하면 데이터만 리턴한다.

9.2.3 Paramater 이 있고 return 이 없을때

a = 3
b = 4
c = 0
def add(a, b):
    c = a + b  ## function안(local) 에서만 작동한다
    print(c)   ## return 이 아닌 print로 값만 출력한다.

add(3, 4)
print(c)       ## global에서는 변하지 않는다.

def print_name(name):
    print(name)  ## name만 프린트 하고 더이상 작업이 없을때

def save_data(path, data):
    dta.to_csv(path)  ## 특정 작업을 시행하고 끝낼경우

### 9.2.4 parameter 와 return 이 없을때

def say_hi():
    print("Hi") ## 단순한 업무를 진행할 경우

say_hi()

def save_txt():
    with open("test.txt", 'w') as f:
        f.write(txt)  ## 특정 작업을 실행하고 끝인경우
                      ## global엔 변화없음

9.3 함수에 입력될 parameter의 개수를 모를경우

def add_many(*params): ## *를 붙임으로 parameter의 계수가 여러개임을 입력한다.
    total = 0
    for num in params:
        total += num
    return total

add_many(1, 2, 3, 4, 5)

9.4 parameter의 defult 생성

  • defult로 지정된 parameter를 keyword parameter라 한다.

def add_as_many(*numbers, b=100):
    total = 0
    for num in numbers:
        total = total + num
    total = total + b

    return total

add_as_many(1, 2, 3, 4, 5, 6) ## *numbers에 1~6입력 b = 100 defult

add_as_many(1, 2, 3, 4, 5, 6, b=500) ## b에 새로운 값을 넣을 수 있다.

9.5 Parameter: Local 과 Global

  • parameter에는 range와 lifetime 이 있다.
# 함수 parameter와 Global의 variable의 이름이 같을 경우
def change_name(name):
    name = "Doh"   ##local에서 이름을 바꾼다
    return name

name = "Kim"
name = change_name(name)  ## name을 update한다.

print(name)

# 함수 parameter와 Global의 variable의 이름이 같을 경우
def change_name(name):
    name = "Doh"   ##local에서 이름을 바꾼다
    print("Name is the function: %s" % name)

name = "Kim"
name = change_name(name) 

print(name)  ## Local 에서만 바뀌었고 Global에선 바뀌지 않는다.

10. Lambda Function

Lambda Expresion

  • 간단한 함수 즉 한줄 함수가 가능 할 때 사용한다.
  • 명령어 없이 사용 가능하다.
  • 반복문에서 주로 사용한다.

lambda param1, param2, ... : statement

def add(a,b):
    return a + b

# In lambda
f = lambda a, b : a+b

print(add(1, 3))
print(f(1, 3))

0개의 댓글