IT
파이썬 모듈과 패키지
파일 하나하나를 모듈이라고 볼 수 있으며 모듈들을 디렉토리 구조로 관리 하는것을 패키지라고 한다. 목적에 따라 정리 패키지는 상대 경로, 절대 경로 원칙을 따른다. python2 에서는 디렉토리 하에 init.py 를 만들어 해당 디렉토리가 패키지임을 선언한다. 클래스안의 함수를 사용하는 방법 from 디렉토리.파일명 import 클래스명 호출 : 클래스명.함수명() 클래스 alias 주기 from 디렉토리.파일명 import 클래스명 as alias명 호출 : alias명.함수명() # alias를 준 클래스명을 사용하면 에러 발생 파일째 모듈 가져오기 import 디렉토리명.파일명 보통 aslias 를 준다. as alias명 호출 : alias명.함수() 함수만 가져오기 (가장 권장됨) from 디..
파이썬 상속, 다중 상속
상속 클래스 상속, 다중 상속 파이썬은 다중 상속을 허용한다. 슈퍼클래스(부모) 및 서브클래스(자식) → 모든 속성, 메소드 사용 가능 상속의 사용 이유: 코드를 재사용. 생산성 (유지보수 용이) 여러 클래스가 같은 코드를 공유한다면 부모 클래스를 만들어 상속받아 동일하게 사용할 수 있다. class Human: # class Human(): 과 동일 def __init__(self): pass def eat(self): pass class Man(Human): def __init__(self): super().__init__() # 부모 초기화 class Woman(Human): pass obj.mro() : 클래스의 상속 정보를 리스트 형태로 리턴해준다. object 클래스는 모든 클래스의 부모다 다..
파이썬 Closure와 Decorator
함수 내 (함수 스코프 안)에서 변수를 체크 한다. 변수가 지역 스코프 내에 없는데 전역 변수에 있으면 전역 변수를 이용한다. 만일 같은 변수가 있다면 지역변수가 우선된다 하지만 인터프리터는 유무 만 체크하기 때문에 사용이 먼저 된다면 에러가 발생한다. 아래와 같다. b = 10 def func_v1(a): print(a) print(b) func_v1(10) # 에러 발생하지 않는다. # 결과 # 10 # 10 b = 10 def func_v2(a): print(a) print(b) b = 5 func_v2(5) # 에러가 발생한다. # 결과 # 에러 Closure 클로저 반환되는 내부 함수에 대해서 선언 된 연결 데이터를 가지고 참조하는 방식으로 반환 당시 함수 유효범위를 벗어난 변수 또는 메소드에 ..
파이썬 함수형 프로그래밍
일급 함수(일급 객체)라고도 한다. (Higher-order function) 파이썬에서는 모든것을 객체로 취급한다. 파이썬 함수의 특징 런타임 초기화가 가능하다. 변수 등에 함수를 할당 가능 (때문에 데코레이터나 클로저 같은 것 사용) 함수 인수 전달 가능 sorted(keys=len) 함수 결과로 리턴 가능 return funcs 함수 객체 예제 팩토리얼의 구현 def factorial(n): '''Factorial Function -> n : int''' if n == 1: # n < 2 return 1 return n * factorial(n-1) print(factorial.__doc__) print(factorial.__name__) print(fac..
파이썬 시퀀스 자료형 (순서가 있는)
가변형 자료형이 당연히 비가변형 보다 속도는 느리다. container 형이 flat 보다 느리다. Container : 서로다른 자료형[list, tuple, collections.deque] Flat : 한 개의 자료형[str, bytes, bytearray, array.array, memoryview] 가변(list, bytearray, array.array, memoryview, deque) 불변(tuple, str, bytes) 지능형 리스트(Comprehending Lists) # Non Comprehending Lists chars = '!@#$%^&*()_+' codes1 = [] for s in chars: # 유니코드 리스트 codes1.append(ord(s)) # Co..
파이썬 클래스, 매직 메소드
__ 가 붙은 기본 함수 매직 펑션 클래스를 생성할때 class UserInfo: def __init__(self, name): # 클래스를 초기화하는 필수 함수 self.name = name def user_info_p(self): print("Name : ", self.name) # 네임스페이스 # 변수.__dict__ 네임스페이스 : 객체를 인스턴스화 할 때 저장된 공간 클래스 변수 : 직접 사용 가능, 객체(인스턴스) 보다 먼저 생성 인스턴스 변수 : 객체마다 별도로 존재, 인스턴스 생성 후 사용 Self self란? class SelfTest: def function1(): # self 가 없다. 클래스 메소드 이다. self가 없어 누구의 메소드인지 모름 print('func 1 cal..