[부스트캠프 Pre-Cource] 1. OOP

김상윤·2022년 7월 27일
0

Python Naming Rule

CamelCase

  • 대문자를 통해 띄어쓰기 구분
  • Class명에 사용

snake_case

  • "_"언더바를 통해 띄어쓰기 구분
  • 변수명, 함수명에 사용

First-class Object

  • 변수나 자료구조에 할당이 가능한 객체
  • 파라미터로 전달 가능, 리턴값으로 사용 가능

Python 함수는 First-class Object

# 함수를 변수에 할당
def square(x):
	return x * x
f = square
f(5)
# 함수를 파라미터로 사용
def square(x):
	return x * x
def cube(x):
	return x*x*x
def formula(method, argument_list):
	return [method(value) for value in argument_list]

Inner Function

  • 함수내에 정의된 함수가 존재하는 형태
def print_msg(msg):
	def printer():
		print(msg)
	printer()
print_msg("Hello, Python")
  • closures
    : inner fuction을 return값으로 사용하는 형태
def print_msg(msg):
	def printer():
		print(msg)
	return printer
another = print_msg("Hello, Python")
another()

Decorator Function

  • 선언한 함수를 호출하면 @func_name의 파라미터로 호출된 함수를 넘겨주는 형태로 동작한다.
  • 선언한 함수를 호출 할 때 넘겨준 파라미터는 @func_name의 inner function에 파라미터로 넘겨진다.
def star(func):
	def inner(*args, **kwargs):
		print("*" * 30)
		func(*args, **kwargs)
		print("*" * 30)
	return inner
def percent(func):
	def inner(*args, **kwargs):
		print("%" * 30)
		func(*args, **kwargs)
		print("%" * 30)
	return inner

@star
@percent
def printer(msg):
	print(msg)
printer("Hello")


exponent

  • @func()에 인자를 넘겨줄 수 있음
  • 선언 한 함수를 받을 "wrapper" inner function을 필수로 설정해야함
def generate_power(exponent):
	def wrapper(f):
		def inner(*args):
			result = f(*args)
			return exponent**result
		return inner
	return wrapper
@generate_power(2)
def raise_two(n):
	return n**2

print(raise_two(7))
# 562949953421312 = 2^49
  • 2 -> exponent
    raise_two -> f
    7 -> *args

0개의 댓글