패스트캠퍼스 파이썬 웹개발 올인원 패키지 후기(8)
파이썬 웹개발 올인원 패키지 8일차 입니다.
지난 시간에 함수에 대해서 배우기 시작하였는데요, 이번시간에도 함수에 대해 좀 더 알아보겠습니다.
그리고 lambda(람다) 함수에 대해서도 설명 드릴 예정입니다.
시작해볼까요?
함수, 람다(lambda)

1. 힌트(hint)
# 예제 6 : 힌트
def func_mul3(x: int) -> list:
"""
인풋은 int 형 아웃풋은 list형 이라고 힌트를 준다.
이것을 따르지 않는다고 에러가 나지는 않지만, 함수의 사용방법 안내에 유용하다.
"""
y1 = x * 100
y2 = x * 200
y3 = x * 300
return [y1, y2, y3]
print(func_mul3(5))
print()
2. 람다(lambda)
# 람다식 예제
# 람다식 : 메모리 절약, 가독성 향상(과도한 사용은 가독성 하락), 코드 간결
# 함수는 객체 생성 -> 리소스(메모리) 할당
# 람다는 즉시 실행(Heap 초기화) -> 메모리 초기화
# 일반적 함수 -> 변수 할당
def mul_10(num: int) -> int:
return num * 10
var_func = mul_10
print(var_func)
print(type(var_func))
print(var_func(10))
print()
lambda_mul_10 = lambda num: num * 10
print("lambda:", lambda_mul_10)
print("lambda:", type(lambda_mul_10))
print("lambda:", lambda_mul_10(10))
print()
def func_final(x, y, func):
print("func_final:", x * y * func(10))
func_final(10, 10, lambda_mul_10)
func_final(10, 10, lambda x: x * 1000)
<Output>
[500, 1000, 1500]
<function mul_10 at 0x0000016F63EC6CA0>
<class 'function'>
100
lambda: <function <lambda> at 0x0000016F63EC6D30>
lambda: <class 'function'>
lambda: 100
func_final: 10000
func_final: 1000000
파이썬 클래스 - Self, 클래스 변수, 인스턴스 변수

1. 클래스 기본
# 선언
# class class_name:
# def class_func1():
# code
#
# def class_func2():
# code
# 예제 1
# 클래스 명은 첫째 문자 대문자 다음 단어의 첫문자도 대문자(camel case)
# 속성, 메소드
# 유저 클래스에서 예를 들자면,
# 속성 : 이름, 나이, 성별, 키, 몸무게, 주소, 전화번호 등
# 메소드 : 걷는다. 뛴다, 눕는다. 등
class UserInfo:
# 속성, 메소드
def __init__(self, name):
self.name = name
def user_info_p(self):
print("Name :", self.name)
user1 = UserInfo("SON")
user1.user_info_p()
user2 = UserInfo("Park")
user2.user_info_p()
2. 네임스페이스
# 네임스페이스 : 객체를 인스턴스화 할 때 저장된 공간
print(user1.name, user2.name)
print(type(user1), type(user2))
print(id(user1), id(user2))
print(user1.__dict__, user2.__dict__)
<Output>
Name : SON
Name : Park
SON Park
<class '__main__.UserInfo'> <class '__main__.UserInfo'>
2444746253552 2444746460752
{'name': 'SON'} {'name': 'Park'}

3. 클래스와 인스턴스의 차이
- 클래스 변수 : 직접 사용 가능, 객체보다 먼저 생성된다.
- 인스턴스 변수 : 객체마다 별도로 존재, 인스턴스 생성 후 사용 가능 하다.
4. self의 이해
# 예제 2 : self의 이해
class SelfTest:
def function1():
# 클래스 변수 임
print('function1 called!')
def function2(self):
print('function2 called!', id(self))
self_test = SelfTest()
# self_test.function1() << 에러가 발생함
SelfTest.function1()
self_test.function2()
print(id(self_test))
# SelfTest.function2() << 에러가 발생함 (self 인자를 받아야함)
SelfTest.function2(self_test)
5. 클래스 변수, 인스턴스 변수
# 예제 3 : 클래스 변수, 인스턴스 변수
class WareHouse:
# 클래스 변수
stock_num = 0
def __init__(self, name):
self.name = name
WareHouse.stock_num += 1
def __del__(self):
WareHouse.stock_num -= 1
user1 = WareHouse('Coupang')
user2 = WareHouse('Gmarket')
user3 = WareHouse('Auction')
print(user1.__dict__)
print(user2.__dict__)
print(user3.__dict__)
print(WareHouse.__dict__) # 클래스 네임스페이스, 클래스 변수(공유)
print(user1.name)
print(user2.name)
print(user3.name)
print(user1.stock_num) # 자기 네임스페이스(인스턴스 네임스페이스)에 없으면 클래스 네임스페이스에 가서 찾는다.
print(user2.stock_num)
print(user3.stock_num)
del user1 # 지울때 인스턴스의 __del__을 호출한다.
print(user2.stock_num)
print(user3.stock_num)
<Output>
function1 called!
function2 called! 1960583864480
1960583864480
function2 called! 1960583864480
{'name': 'Coupang'}
{'name': 'Gmarket'}
{'name': 'Auction'}
{'__module__': '__main__', 'stock_num': 3, '__init__': <function WareHouse.__init__ at 0x000001C87BE76940>, '__del__': <function WareHouse.__del__ at 0x000001C87BE769D0>, '__dict__': <attribute '__dict__' of 'WareHouse'
objects>, '__weakref__': <attribute '__weakref__' of 'WareHouse' objects>, '__doc__': None}
Coupang
Gmarket
Auction
3
3
3
2
2
객체지향 프로그래밍의 필수 개념 클래스에 대해서 드디어 배워보았습니다.
간단한 사용 방법과 개념에 대해서 배워 보았는데요,
생각보다 어렵네요.
패스트캠퍼스 파이썬 인강에서 배운 예제를 바탕으로 복습을 계속 해서 개념을 완벽히 잡고,
다음 시간을 준비해야 할 것 같습니다.
다음 시간에는 객체지향의 필수 개념 상속에 대해서 배울 것 같네요!
화이팅!
패스트캠퍼스 파이썬 인강 자세한 내용은 아래 링크를 참고해 주세요!
'Python Basics' 카테고리의 다른 글
| [패스트캠퍼스 수강 후기] 파이썬 인강 자기계발 챌린지 10 회차 미션 (0) | 2020.06.03 |
|---|---|
| [패스트캠퍼스 수강 후기] 파이썬 인강 자기계발 챌린지 9 회차 미션 (0) | 2020.06.02 |
| [패스트캠퍼스 수강 후기] 파이썬 인강 자기계발 챌린지 7회차 미션 (0) | 2020.05.31 |
| [패스트캠퍼스 수강 후기] 파이썬 인강 자기계발 챌린지 6 회차 미션 (0) | 2020.05.30 |
| [패스트캠퍼스 수강 후기] 파이썬 인강 자기계발 챌린지 5 회차 미션 (0) | 2020.05.29 |