TIL

TIL. 24 함수 만들고 사용하기

codermun 2020. 11. 1. 17:16
728x90
반응형

## 함수 만들기

# 김왼손의 왼손코딩 강의에서는 이렇게 뒷부분에 등장하지 않았던 것 같으나 많고 많은 중요한 내용 중 하나가 등장했다고 생각하니

# 기본을 기본처럼 익히자.


## hello 함수 만들고 출력하기

## 함수는 def에 함수 이름을 지정하고 ( )(괄호)와 :(콜론)을 붙인 뒤 다음 줄에 원하는 코드를 작성한다(함수의 이름을 짓는 방법은 변수와 같다).

# 이때 코드는 반드시 들여쓰기를 한다.

def hello():
    print('helloo world')
    # 빈줄 1줄 사용

print 코드 아래의 빈줄은 print 함수를 실행 후 , 하면서 빈줄이 있음으로써 hello() 함수가 종료되는 것이다.

def hello():
    print('helloo world')
hello() # 빈줄 없이 바로 함수 호출

# vs 코드 작성시 빈줄을 사용하지 않고 바로 함수를 호출하여도 동작은 하지만 빈줄에 대해서 알고 있을 필요가 있다.

# hello() 라는 함수는 vs 코드에서 hello() 만 입력해도 안의 print가 있으므로 별도 print는 필요없다

# 또한 뒤의 () 를 생략해서도 안된다.


## 이렇게 함수를 사용할때는 함수를 호출(call)한다고 부른다

hello() # 함수 호출 (call)

# 앞은 숫자로 시작 x 공백 시작 x 는 변수를 할당할때와 동일하다.


## 함수의 실행 순서.

1. 파이썬 스크립트 최초 실행

2. hello 함수 호출

3. hello 함수 실행

4. print 함수 실행 및 'Hello, world!' 출력

5. hello 함수 종료 # 빈줄

6. 파이썬 스크립트 종료


## 함수의 작성과 호출순서

## 당연하지만 함수를 만들어 주기 전에 함수를 호출 할수 없다.


## 빈 함수 만들기

def okk():
    pass

 

## 내용이 없는 빈 함수를 만들 수 있으며, pass 를 이용해 아무일을 하지 않아도 함수의 틀을 유지해야할 때 사용한다.


## 덧셈 함수 만들기

def 함수이름(매개변수1, 매개변수2):
    코드
def add(a, b):
    print(a + b)

# 함수에 값을 넣어서 실제로 동작가능하도록 정의해주자

# 함수에서 값을 받아오려면 (사용자 입력에 따라 값이 달라짐로 받아온다는 표현을 쓴다)

# () 괄호 안에 변수 이름을 넣어주면 된다.

# 이때 넣어주는 변수를 "매개변수"(parameter)라고 부른다 // a == 매개변수 1, b == 매개변수2

 

add(100, 200)

## add 함수를 100, 200 을 넣어 호출해보자.

# 여기서 함수를 호출 할 때 넣는 값(100, 200)을 "인수"(argumunt) 라고 부른다


## 종합

# 함수 정의 시 값 a, b 는 매개변수

# 함수 호출 시 값 100, 200 은 인수 이다.


## 함수 독스트링 사용하기

## 독스트링 이란

## 파이썬에서는 함수의 :(콜론) 바로 다음 줄에 """ """(큰따옴표 세 개)로 문자열을 입력하면 함수에 대한 설명을 넣을 수 있다.

# 이런 방식의 문자열을 독스트링(문서화 문자열, documentation strings, docstrings)이라 한다.

## 단, 독스트링의 윗줄에 다른 코드가 오면 안 된다.

def add (a, b):

"""

이 함수는 a b 를 더한뒤 결과를 반환하는 함수이다

"""

return a + b



x = add(10, 20)



print(x) # return 반환 하는 함수로 print 사용해줌 또는 반환 값 변수에 할당
::
30
## 독스트링 출력 x


##(add.__doc__)add 함수의 독스트링 출력해줌

print(add.__doc__)

::

 이 함수는 a b 를 더한뒤 결과를 반환하는 함수이다

 



## help(객체) 를 이용해 확인 가능하다.

help(add)
::
Help on function add in module __main__:
add(a, b)
이 함수는 a b 를 더한뒤 결과를 반환하는 함수이다

## 함수 결과 반환 하기

## 함수 안에 print가 아닌 return을 이용하면 값을 함수 바깥으로 반환한다..(return에 값을 지정하지 않으면 None을 반환).

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

x = add(10, 20)
print(x)
::
30

 

# 이처럼 return을 사용하면 값을 바깥으로 반환 할 수 있고, 함수에서 나온 값을 변수에 저장할 수 있다.

# 즉, return으로 반환하는 값은 반환값이라고 하며 함수를 호출해준 바깥에 결과를 알려주기 위해 사용합니다.


# 반환값은 변수에 저장하지 않고 바로 다른 함수에 넣을 수도 있다. 다음은 print에서 바로 add를 호출하여 결과를 출력할 수 있다.

print(add(20, 30))
::
30


## 매개변수가 없고 반환값만 있는 함수

def opp():
    return 1
    
print(opp())
::
1

## return 으로 함수 중간에 빠져나오기

def not_ten(a):
    if a == 10:
        return
    print(a, '입니다')

not_ten(5)
::
5 입니다 출력

not_ten(10)

# 10이면 리턴으로 함수 중간에 빠져나와 return 아래 print를 실행하지 않아 아무것도 출력되지 않는다.

## 이처럼 return은 함수 중간에 빠져나올때 자주 사용하며 if 문과 조합해 특정조건에 빠져나오도록 만들 수 있다.

 


## 여러값 반환하기

def 함수이름(매개변수):
    return 반환값1, 반환값2
def aff(a, b):
    return a+b, a-b

x, y = aff(10, 20)

print(x)
:: 
30
print(y)
::
-10
print(x, y)
:: 30, -10

## 함수에서 정의한 바와 같이 30, -10 값이 반환되고

## 변수 2개를 사용해줌으로써 x <- 30, y <- -10을 할당하는 것을 볼 수 있다.

## 이는 언패킹을 이용한 것으로 아래 코드도 함께 참고하자

z = aff(10, 20)

print(z)
::
(30, -10)

## 이처럼 (30, -10) 한개의 튜플로 반환되는 것을 볼 수 있다.

## 즉 튜플이 변수 여러개에 할당되는 특성(언패킹)을 이용한 것이다.

i, j = (30, -10)

print(i)
::
30
print(j)
::
-10

## 언패킹을 이용해 각각 i, j에 값을 할당할 수 있다.


## 값 여러 개를 직접 반환하기

# 함수에서 값 여러 개를 직접 반환할 때는 다음과 같이 return에 튜플을 지정해주면 된다.

def one_two():
    return (1, 2)
# 사실 파이썬에서는 괄호 없이 값을 콤마로 구분하면 튜플이 되는데, 즉, 튜플 1, 2는 튜플 (1, 2)와 같습니다.
>>> 1, 2
(1, 2)

 

## 따라서 return 1, 2는 return (1, 2)와 의미가 같습니다.

def one_two():
    return 1, 2 # return (1, 2)와 같음

# 물론 return에서 리스트를 직접 반환해도 됩니다. 이때도 반환값을 변수 여러 개에 저장할 수 있습니다.

def one_two():
    return [1, 2]

x, y = one_two()

print(x, y) # x <- 1, y <-2 unpacking
:: 1 2

 

728x90
반응형