파이썬에 대한 기본적인 이해를 위해 작성했습니다.
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 |
댓글