파이썬 썸네일형 리스트형 파이썬 특징- 덕타이핑(Duck typing) Duck Typing Duck typing이란 특히 동적 타입을 가지는 프로그래밍 언어에서 많이 사용되는 개념으로, 객체의 실제 타입보다는 객체의 변수와 메소드가 그 객체의 적합성을 결정하는 것을 의미 동적 타입 언어인 파이썬은 메소드 호출이나 변수 접근시 타입 검사를 하지 않으므로 duck typing을 넒은 범위에서 활용할 수 있음 서로 상속되거나 하는 관계가 없어도, 내부에 동일한 fly()메소드가 있으면 `lift_off(entity)' 함수에서 fly가 정상적으로 실행 마지막 Whale 클래스는 해당 fly() 메소드가 없기 때문에, AttributeError가 발생 속성과 메소드 존재에 의해 객체의 적합성이 결정 class Parrot: def fly(self): print("Parro.. 파이썬, GIL 파이썬 GIL(Global Interpreter Lock) 인터프리터에 락을 걸어 다중코어 환경에서 멀티스레드가 실행되지 못하도록 하는 것 압축, 정렬, 인코딩 등 수행시간에 CPU 의 영향이 큰 작업(cpu bound)을 멀티 스레드로 수행하도록 한 경우 성능 문제 Python 코드(bytecode)를 실행할 때에 여러 thread를 사용할 경우, 단 하나의 thread만이 Python object에 접근할 수 있도록 제한하는 mutex(MUTual EXclusion, 상호배제) GIL 문제 멀티 스레드로 만들었어도 본질적으로 싱글 스레드로 동작 멀티스레드일 경우 thread context switch에 따른 비용도 발생하기 때문에 오히려 싱글스레드보다 시간이 오래 걸리는 문제 파이썬의 멀티스레드는 C.. 제너레이터 Generator(제너레이터, 발생자) → *iter()와 next() 메서드로 클래스를 작성하는걸 피하는 우아하고 간결한 문법, 값을 그 때 그 때 생성한다** 제너레이터는 이터레이터를 생성해주는 함수(함수 안에서 yield를 사용) yield에는 값(변수)을 지정 제너레이터는 제너레이터 객체에서 next 메서드를 호출할 때마다 함수 안의 yield까지 코드를 실행함. yield 문이 포함된 제네레이터 함수를 실행하면 제네레이터 객체가 반환되는데 이 때는 함수의 내용이 실행되지 않는다. next()라는 빌트인 메서드를 통해 제네레이터를 실행시킬 수 있으며 next() 메서드 내부적으로 iterator 를 인자로 받아 이터레이터의 __next__() 메서드를 실행시킨다. 제너레이터를 사용하는 이유 메모리.. 가비지 컬렉션(garbage collection, gc) GC 힙 영역(동적 메모리 할당)에서 사용하지 않는 객체를 삭제하는 프로세스 garbage collection(가비지 컬렉션)과 reference counting(레퍼런스 카운팅)을 통해 할당 된 메모리를 관리 레퍼런스 카운팅 모든 객체는 참조당할 때 레퍼런스 카운터를 증가시키고 참조가 없어질 때 카운터를 감소시킴 즉 해당 객체에 접근할 수 있는 방법의 수 이 카운터가 0 이 되면 객체가 메모리에서 해제(참조되지 않는 객체들 - unreachable) 순환참조 문제가 발생함 Mark and Sweep 자바와 자바스크립트, 순환참조 문제 해결 레퍼런스 카운트가 0이되면 제거하는 방식과 달리 의도적으로 gc를 실행해주어야 함, 어플리케이션과 gc실행이 병행됨 루트부터 그래프 순환을 통해 연결된 객체를 찾아내.. 파이썬- Generator(제네레이터)란? 파이썬 제너레이터에 대해 알아보았습니다. 아직 완전히 이해되지는 않았지만 일단 정리해두고 추가로 내용을 덧붙여나가겠습니다. Generator(제너레이터, 발생자)란? iterator를 생성해주는 함수, 함수 안에서 yield를 사용, yield에는 값(변수)을 지정 모든 generator는 iterator제너레이터 장점 이터레이터는 클래스에 iter, next 또는 getitem 메서드를 구현해야 하지만 제너레이터는 yield 키워드만 사용 제네레이터를 사용하면 yield 를 통해 그때그때 필요한 값만을 받아 쓰기때문에 모든 값을 메모리에 들고 있을 필요가 없게된다. 제너레이터와 yeild 제네레이터 함수를 호출하면 제네레이터 객체(generator object)가 반환, 이 때는 함수의 내용이 실행되지.. 파이썬 - isalnum(), isalpha() - 사실상 별로 기억하고 있을 필요는 없을 듯. isalnum 문자열이 영어, 한글 혹은 숫자로 되어있으면 참 리턴, 아니면 거짓 리턴. s1 = "1234abc" print(s1.isalnum()) >> True isalpha 문자열이 영어 혹은 한글로 되어있으면 참 리턴, 아니면 거짓 리턴. s1 = "1234abc" print(s1.isalpha()) >> True 이전 1 다음