돈이 만드는 세상

#1-2 Python 초급강의 - 함수편 본문

프로그래밍/Python

#1-2 Python 초급강의 - 함수편

피델리오 2022. 2. 3. 23:57

파이썬에서 함수는 기본적으로 정의/호출로 구성되어 있습니다.
[Point] 함수를 정의하면, 해당 함수의 내용도 RAM에 저장이 됩니다.

정의하는 방법

def 함수명(인자1, 인자2, ...): # argument or parameter
    구문1
    구문2
    구문3
    ...
    return 아웃풋 # output이 있는 경우!
def f(wow_x):
    result = wow_x + 2
    return result

def wow_f(wow_x, wow_y):
    return wow_x - wow_y

호출하는 방법

wow_f(2, 3) # -1
wow_f(wow_x=2, wow_y=3) # -1
wow_f(wow_y=3, wow_x=2) # 순서를 바꿔줘도 됨
wow_f(3, wow_y=2) # 항상 positonal argument가 먼저 나오고, keyword argument가 뒤에 나와야함, 여기서 positional argument는 숫자 3을 말합니다.

항상 positonal argument가 먼저 나오고, keyword argument가 뒤에 나와야합니다. positional argument을 앞에 넣은 후 중간에 keyword argument를 넣고 다시 positional argument를 넣어도 안된다.

default arguments

def wow_f(x, y, const=0.1):
    result (x + y) * const
wow_f(3, 5) # default로 설정되어있기 때문에 전달하지 않아도 0.1로 전달된다.
wow_f(3, 5, 0.2) # 값을 넣게 되면 0.2로 전달되게 된다.

[Point] default argument를 주고 싶다면, arguments에서 가장 뒤에 위치하게 놓아야 합니다.

return 관련 주의사항

def f(x, y):
    print("함수가 호출되었습니다.")
    return x + y

result = f(3, 4)
print(result)

# 함수가 호출되었습니다.
# 7

함수 내 구문들은 함수를 호출할 때만 실행된다는 점을 알 필요가 있습니다.

함수의 4가지 유형

  • input O / output O
  • input O / output X
  • input X / output O
  • input X / output X
# 1. input O / output O
def calculate_sum(x, y):
    return x + y

result = calculate_sum(1, 2)

# 2. input O / output X
def save_data_in_database(x):
    print(x, "를 데이터베이스에 저장하겠습니다")
    print("저장 완료하였습니다.")

save_data_in_database(3)

# 3. input X / output O
def get_pi():
    return 3.141592

get_pi()

# 4. input X / output X
def get_current_item():
    import time
    return time.time()

current_time = get_current_time()
current_time
a = save_data_in_database(3)
print(a) # None

RAM에서 새로운 공간을 준비하고 a라는 주소 닉네임을 가지고 기다리고 있는데, return 값이 없어서 해당 공간에 아무것도 넣지 못한 상황입니다. 그래서 공간은 할당받았지만, 해당 공간에 아무것도 없다 라는 것을 나타내기 위해 None이 쓰이는 것입니다.

함수의 cascading

-func1(func2)과 같은 구조

def get_my_number():
    return 7
def my_sum(x, y):
    return x + y

#1
my_sum(get_my_number(), 5)
#2
lucky_number = get_my_number()
my_sum(lucky_number, 5)