본문 바로가기

SeSAC 금융데이터 분석가/파이썬 프로그래밍

8/24 수

728x90

1. 변수 동시 할당
>> x = y = 6
>> print(x, y)
결과 : 6 6
 
2. Stack과 Queue
a = list(range(5))
a.pop()
a # [0, 1, 2, 3]. Last in First Out. <- Stack
#--------------------#
from collections import deque

a = deque([1,2,3,4])
a.popleft()
a # deque([2, 3, 4]). First In First Out. <- Queue
 
3. isinstance()

>> a = 10
>> isinstance(a, int)
결과 : True

 

4. Complex(복소수)

>> img_number = 3 + 4j
>> print(type(img_number), img_number.real, img_number.imag)
결과 : <class 'complex'> 3.0 4.0

 

5. 클래스의 이름은 PascalCase로 정의함

>> class ClassName:
         statement

 

6. 파이썬에서 표현할 수 있는 가장 큰 수
파이썬에서 가장 큰 숫자를 활용하기 위해 sys 모듈을 불러옵니다. 파이썬은 기존 C 계열 프로그래밍 언어와 다르게 정수 자료형(integer)에서 오버플로우가 없습니다. 임의 정밀도 산술(arbitrary-precision arithmetic)을 사용하기 때문입니다. 

오버플로우(overflow): 데이터 타입 별로 사용할 수 있는 메모리의 크기가 제한되어 있습니다. 표현할 수 있는 수의 범위를 넘어가는 연산을 하게 되면, 기대했던 값이 출력되지 않는 현상, 즉 메모리를 넘어선 상황을 의미합니다.

임의 정밀도 산술(arbitrary-precision arithmetic): 사용할 수 있는 메모리양이 정해져 있는 기존의 방식과 달리, 현재 남아있는 만큼의 가용 메모리를 모두 수 표현에 끌어다 쓸 수 있는 형태를 의미합니다. 특정 값을 나타내는데 4바이트가 부족하다면 5바이트, 더 부족하면 6바이트까지 사용할 수 있게 유동적으로 운용합니다.

import sys
max_int = sys.maxsize # sys.maxsize 의 값은 2**63 - 1 => 64비트에서 부호비트를 뺀 63개의 최대치
print(max_int) # 9223372036854775807
super_max = sys.maxsize * sys.maxsize
print(super_max) # 85070591730234615847396907784232501249

 

7. class

- 객체(Object): 자신 고유의 속성(attribute) 을 가지며 클래스에서 정의한 행위(behavior) 를 수행

- 클래스(Class): 공통된 속성(attribute)과 행위(behavior)를 정의한 것으로 객체지향 프로그램의 기본적인 사용자 정의 데이터형(user-defined data type)

- 인스턴스(Instance): 특정 `class`로부터 생성된 해당 클래스의 실체/예시(instance) 

- 속성(Attribute): 클래스/인스턴스가 가지는 속성(값/데이터)

- 메서드(Method): 클래스/인스턴스에 적용 가능한 조작법(method) & 클래스/인스턴스가 할 수 있는 행위(함수)

# 매직 메서드를 활용하여 인스턴스간의 비교연산(`>`, `==`)이 가능하도록 class를 정의
class Person:
	person = human # 클래스의 속성. 클래스 변수라고도 함. 모든 인스턴스가 공유
    
    def __init__(self, name, age): # 생성자 메서드. 인스턴스가 생성될 때 인스턴스의 속성을 정의할 수 있음
        self.name = name # self.속성명 = 값. 인스턴스 변수라고도 함
        self.age = age

    def __del__(self): # 소멸자 메서드
        print('떠날게..')

    def __gt__(self, other): # 매직 메서드
        return self.age > other.age

    def __eq__(self, other): # 매직 메서드
        return self.age == other.age
        
p1 = Person('1', 1)
p2 = Person('2', 2)
p3 = Person('3', 1)

print(p1 > p2) # False
print(p1 == p3) # True
print(p1 == p2) # False
print(Person.person) # human

- 매직 메서드: 더블언더스코어(`__`)가 있는 메서드는 특별한 일을 하기 위해 만들어진 메서드

 __str__(self),

class Person:
    def __str__(self):
        return '객체 출력(print)시 보여줄 내용'

 

 __len__(self),
 __repr__(self),
 __lt__(self, other),
 __le__(self, other),
 __eq__(self, other),
 __ne__(self, other),
 __gt__(self, other),
 __ge__(self, other)

 

- 인스턴스 메서드: 클래스 내부에 정의되는 메서드의 기본값은 인스턴스 메서드

 

- 클래스 메서드: 클래스가 사용할 메서드. `@classmethod` 데코레이터를 사용하여 정의. 호출 시, 첫 번째 인자로 클래스 `cls`가 전달. 클래스 자체(`cls`)와 그 속성에 접근할 필요가 있다면 클래스 메서드로 정의

 

- 스태틱(고정된) 메서드: 클래스가 사용할 메서드. `@staticmethod` 데코레이터를 사용하여 정의. 호출 시, 어떠한 인자도 전달되지 않음. 클래스와 클래스 속성에 접근할 필요가 없다면 정적 메서드로 정의

class MyClass:
    def instance_method(self):
        return self
    
    @classmethod
    def class_method(cls):
        return cls
    
    @staticmethod
    def static_method(arg):
        return arg

 

- 상속(Inheritance): 부모 클래스의 모든 속성이 자식 클래스에게 상속 되므로 코드 재사용성이 높아짐

class ChildClass(ParentClass):
    <code block>

issubclass(class, classinfo): class가 classinfo의 subclass면 True

isinstance(object, classinfo): object가 classinfo의 인스턴스인 경우 True


- 메서드 오버라이딩(Method Overriding)

 

- 다중 상속(Multiple Inheritance)

728x90

'SeSAC 금융데이터 분석가 > 파이썬 프로그래밍' 카테고리의 다른 글

8/26 금 ft. sh, crontab(리눅스 예약작업)  (0) 2022.08.26
8/25 목 ft. OpenSSH Key  (0) 2022.08.25
8/23 화  (0) 2022.08.24