인터프리터 언어 이며 동적타이핑, 약타입 언어이다.
삼항연산자가 없음 if나 else로 표현 가능
# Pythondata = "A" if True else "B"
// Kotlinval data = (true) if "A" else "B"
// Javapublic String condition(condition: Boolean) { return condition == true ? "A" : "B";}
lamdba(익명함수)와 def(함수)의 차이
PYC
GC
데코레이터
클로저
def outer_function_immutable(x): def inner_function(y) -> int: # x는 외부의 변수이지만 접근이 가능하고 저장되어있음
return x + y
return inner_function
def outer_function_mutable(x): def inner_function(y) -> int: nonlocal x
x += y
return x + y
return inner_function
closure_immutable = outer_function_immutable(10) # x는 이때 전달됨
print(closure(5)) # 출력: 15closure_mutable = outer_function_mutable(10) # x는 이때 전달됨
print(closure(5)) # 출력: 15print(closure(5)) # 출력: 20
일급 객체: 모든것을 객체로 취급함
from typing import Callable
def first_func(name):
return f"Hello {name}"def func(func: Callable[[str], str], name):
return func(name)
print(type(first_func))
print(func(first_func, "World"))
덕타이핑
class Duck:
def quack(self):
return "Quack!"class Person:
def quack(self):
return "I'm Quacking Like a Duck!"def make_it_quack(ducklike):
print(ducklike.quack())
duck = Duck()
person = Person()
make_it_quack(duck) # 출력: Quack!make_it_quack(person) # 출력: I'm Quacking Like a Duck!
다이나믹 타이핑: 자료형이 변수 선언시가 아닌 실행시 인터프리터 에 의해 추론 되어 정해지는것