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)
'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 |