[패스트캠퍼스python] Hint과 클래스 기초

파이썬 인강 : Hint과 클래스 기초

1. Hint

데이터타입을 명시적으로 알려주는 역할을 한다

위의 사진에서와 같이 x : int의 의미는 x는 int형만 와야한다는 의미이고
-> list: 는 리스트형태로 출력될 것이다라는 의미이다.
패키지를 통해 해당 함수를 다른 파일로 빼놓을때 유용하게 사용할 수 있다.

1
2
3
4
5
6
7
8
9
def tot_length1(word: str, num: int) -> int:
return len(word) * num

print('hint exam1 : ', tot_length1("HeavyTalker", 10))
print(len("HeavyTalker"))

# 출력값은
hint exam1 : 110
11

2. 람다식 예제

람다식의 장점은 메모리 절약, 가독성 향상, 코드 간결해진다
함수와 람다의 차이점은

  • 함수는 객체 생성 -> 리소스(메모리) 할당
  • 람다는 즉시 실행 함수(Heap 초기화) -> 메모리 초기화
    즉 함수도 객체이기때문에 메모리에 할당되는 반면에 람다는 즉시실행함수여서 메모리를 효율적으로 사용할 수 있다.
    람다식을 남발하는 경우에는 가독성이 떨어지므로 실무에서는 주로 익명함수를 사용할때 람다식을 쓴다.
  1. 일반적 함수 -> 변수 할당

일반적인 함수에 변수할당법

위의 이미지는 우리가 일반적인 함수를 변수에 할당하는 방법이다
var_func이란 변수에 우리가 만든 def를 대입하면 터미널에서 볼수있듯이 메모리에 할당되어있고 type은 function이다.

1
2
3
4
5
6
7
8
9
print()
def mul_10(x: int) -> int:
return x * 10

mul_func = mul_10

print(mul_func(77))
# 출력값은
770
  1. 람다 함수 -> 할당
    위의 일반함수식과 비교하면
1
2
3
4
5
6
print()
lambda_mul_func = lambda x: x * 10
print(lambda_mul_func(77))

# 출력값은
770

동일한 결과값이 출력되는 것을 확인할수있다.
좀 더 나아가 활용할 수 있는 방법이 있다
함수를 매개변수로 받는 방법이다
위에서 만들었던 lambda_mul_func를 이용한 함수를 만들었다.

1
2
3
4
5
6
7
8
print()
def func_final(x, y, func):
print(x * y * func(7))

func_final(10, 10, lambda_mul_func)

# 출력값은
7000

만들어놓은 람다함수 사용하지않고 즉시 람다식을 넣어서 인자로 함수를 넘길 수 있다
None은 더이상 출력할 값이 없어서 출력되는 것임.

1
2
3
4
5
print(func_final(10,10, lambda x : x * 10))

# 출력값은
7000
None

3. 클래스선언

먼저 클래스를 사용해야 할 이유에 대해 알아보자
방대한 어플리케이션이 운영하기 위해서는 클래스방식의 코딩을 해서 구조화를 시키고 결합을 느슨하게 해서 유지보수에 용이하게 한다.

클래스선언시 첫글자는 대문자여야한다.
클래스는 속성과 매서드로 구분된다.

클래스(객체), 인스턴스 차이는 매우 중요하디

  • 네임스페이스 : 객체를 인스턴스화 할 때 저장된 공간
  • 클래스 변수 : 직접 사용 가능, 객체보다 먼저 생성
  • 인스턴스 변수 : 객체마다 별도로 존재, 인스턴스 생성 후 사용

아래는 클래스를 인스턴스 변수로 사용한 예이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class UserInfo:
def __init__(self, name): #초기화
self.name = name

def print_info(self):
print("Name: " + self.name)

def __del__(self):
print("Instance removed!")

# 인스턴스변수 생성하기
user1 = UserInfo("Kim")
user2 = UserInfo("Park")

print(id(user1))
print(id(user2))

user1.print_info()
user2.print_info()

# 클래스 네임스페이스 확인
print('user1 : ', user1.__dict__)
print('user2 : ', user2.__dict__)

print(user1.name)

# 출력값은
2683366237424
2683366443184
Name: Kim
Name: Park
user1 : {'name': 'Kim'}
user2 : {'name': 'Park'}
Kim