본문 바로가기
TIL (Today I Learned)/Python

[Python] Function

by 둥굴프 2023. 3. 29.
파이썬에 대한 기본적인 이해를 위해 작성했습니다.

 

Type annotations

def func_multi(a: int, b:int):
    return a * b

 

 

데이터 유형을 강제하지 않는다!

단순히 외부 라이브러리 및 IDE에서 사용할 수 있는 메타데이터다.

 

함수는 정수가 객체인 것처럼 객체이며 정수가 할 수 있는 것처럼 변수에 할당될 수 있다.

my_func = func_multi
my_func(2, 3)

하지만, 함수는 반드시 항상 무언가를 반환해야 한다. 반환 값을 지정하지 않으면 Python은 자동으로 None 개체를 반환한다.

def func_4():
    # does something but does not return a value
    a = 2

res = func_4()
print(res) # None

 

def

def 키워드는 함수(함수 클래스의 인스턴스)를 생성하고 본질적으로 변수 이름(함수 이름)에 함수를 할당하는 실행 가능한 코드 조각이다.
def에 도달하면 함수가 정의되지만 그 내부의 코드는 함수가 호출될 때까지 참조되지 않는다.
즉, 우리가 나중에 정의된 다른 함수를 호출하는 함수를 정의할 수 있는 이유다.

필요한 모든 함수가 정의되기 전에 호출하지 않는 한

 

다음과 같은 모듈이 있을 때 에러가 나는 경우와 아닌 경우를 고민해보자

def fn_1():
    fn_2()
    
def fn_2():
    print('Hello')
    
fn_1()
def fn_3():
    fn_4()

fn_3()

def fn_4():
    print('Hello')

 

위에서 말한 것처럼, 전자의 경우 함수가 호출되는 시점에 fn_2()는 참조할 수 있는 상태가 된다.

하지만 후자의 경우 함수가 호출되는 시점에 fn_4()는 참조할 수 없다.

따라서 전자의 경우 Hello가 출력되고, 후자의 경우 error가 발생한다.

 

lambda

lambda는 새 함수를 생성하지만 특정 이름에 할당하지 않는 함수를 정의하는 다른 방법이다.

대신 함수 개체(function object)를 반환한다. 또한, 원하는 경우 변수에 할당할 수 있다.

 

lambda 매개변수 : 표현식

 

func_5 = lambda x: x**2
func_5 # <function __main__.<lambda>>
func_5(2) # 4

'TIL (Today I Learned) > Python' 카테고리의 다른 글

[Python] For loop  (0) 2023.04.02
[Python] While loop  (0) 2023.04.02
[Python] ternary operator  (0) 2023.03.29
[Python] 식별자 이름 짓는 방법  (0) 2023.03.29
[Python] NEWLINE  (0) 2023.03.28

댓글