Engineering WIKI/Python
-
GeneratorEngineering WIKI/Python 2022. 5. 30. 17:17
파이썬 반복형 종류 Iter, next 함수 Generator 장점 Generator 코딩 실습 Generator 내장 함수 실습 반복 가능한 이유 ? ⇒ iter(x) 함수 호출 Generator 패턴 지능형 리스트, 딕셔너리, 집합 → 데이터 셋이 증가 될 경우 메모리 사용량 증가 → 제너레이터 완화 단위 실행 가능한 코루틴(Coroutine) 구현에 아주 중요 딕셔너리, 리스트 한 번 호출 할 때 마다 하나의 값만 리턴 → 아주 작은 메모리 양을 필요로 함 Generator 예제 1 def generator_ex1(): print('start') yield 'AAA' print('continue') yield 'BBB' print('end') temp = iter(generator_ex1()) pr..
-
일급함수Engineering WIKI/Python 2022. 5. 30. 16:52
다양한 매개변수 입력 (*args, **kwargs) *args 는 튜플로 받고, **kwargs는 딕셔너리로 받는다. def args_test(name, *contents, point=None, **attrs): return ' -> ({}) ({}) ({}) ({})'.format(name, contents, point, attrs) print('EX5-3 -', args_test('test1', 'test2', 'test3', id='admin') print('EX5-4 -', args_test('test1', 'test2', 'test3', id='admin', point=7) print('EX5-5 -', args_test('test1', 'test2', 'test3', id='admin', p..
-
파이썬 2진수, 8진수, 10진수, 16진수 변환Engineering WIKI/Python 2022. 5. 26. 14:41
먼저 파이썬은 기본 10진수이기 때문에 다른 진수는 아래와 같이 접두어가 붙습니다. 2진수: 0b 8진수: 0o 16진수: 0x 10진수에서 2진수, 8진수, 16진수 변환 bin(), oct(), hex() 내장함수 사용 파이썬에서 제공하는 내장함수를 사용하면 쉽게 변환 할 수 있습니다. value = 60 b = bin(value) o = oct(value) h = hex(value) print(b) print(o) print(h) # 0b111100 # 0o74 # 0x3c 결과는 전부 문자열 타입입니다. format() 내장함수 사용 forrmat() 내장함수를 사용하여 위 결과와 마찬가지로 변환할 수 있습니다. value = 60 b = format(value, '#b') o = format(v..
-
추상클래스(abstract class)Engineering WIKI/Python 2022. 5. 25. 17:14
1. 추상클래스(abstarct class)란 추상클래스란 미구현 추상메소드를 한개 이상 가지며, 자식클래스에서 해당 추상 메소드를 반드시 구현하도록 강제합니다. 상속받은 클래스는 추상메소드를 구현하지 않아도, import할 때까지 에러는 발생하지 않으나 객체를 생성할 시 에러가 발생합니다. 추상클래스를 만들기 위한 형식은 아래와 같습니다. 반드시 abc 모듈을 import 해야합니다. 추상메소드는 생략하면 기본적인 클래스 기능은 동작합니다만, 추상메소드를 추가한 후에는 객체를 생성하면 에러가 발생합니다. from abc import * class 추상클래스명(metaclass=ABCMeta): @abstractmethod def 추상메소드(self): pass 2. 추상클래스(abstract class..
-
파이썬 람다식Engineering WIKI/Python 2022. 5. 25. 17:09
메모리 절약, 가독성 향상, 코드 간결 lambda 매개변수들: 식 람다표현식 (익명함수) lambdaAdd = lambda n, m: n + m print(lambdaAdd(2,3)) #5 print(lambdaAdd(4,5)) #9 print((lambda n, m: n if n % 2 == 0 else m)(1, 3)) #3 print((lambda n, m: n if n % 2 == 0 else m)(2, 3)) #2 함수 vs 람다 함수는 객체 생성 → 리소스(메모리) 할당 람다는 즉시 실행(Heap 초기화) ⇒ 메모리 초기화 def plus_ten(x): return x + 10 plus_ten(1) # 11 plus_ten = lambda x: x + 10 plus_ten(1) # 11 (l..
-
-
Python3 vs Pypy3Engineering WIKI/Python 2022. 5. 25. 17:03
평소에 알고리즘 문제를 풀면서 Python을 지원하는 언어를 선택할 때, Python3와 PyPy3가 대표적으로 있었다. 원래 알던 개념은 PyPy3가 Python3의 실행시 시간이 매우 오래 걸린다는 단점이 있어, 그것을 개선하고자 JIT컴파일 방식을 도입한 것이라고 알고 있었다. 그러면, PyPy3를 이용하는 것이 무조건 효율적인데, Python3도 지원하는 이유가 무엇일까 궁금해졌다. 또한 여러 자료들을 찾아보면서, 특정경우에는 메모리, 시간 모두 Python3로 선택하는 것이 우수할 경우가 있었고, 또 다른 경우에는 메모리는 Python3가 우세하지만 시간 상으로는 PyPy3가 우수한 경우도 있었다. 컴파일 언어vs 인터프리터 언어의 개념 비교해 보면 컴파일 언어 : 소스 코드를 기계어로 컴파일(..
-
Python TDDEngineering WIKI/Python 2022. 5. 23. 22:17
unittest Python에 포함된 다양한 테스트를 자동화할 수 있는 기능이 포함되어 있는 표준 라이브러리 unittest에 포함된 주요 개념 TestCase : unittest 프레임 워크의 테스트 조직의 기본 단위 Fixture : 테스트함수의 전 또는 후에 실행 테스트가 실행되기 전에 테스트 환경이 예상 된 상태에 있는지 확인하는 데 사용 테스트 전에 데이터베이스 테이블을 만들거나 테스트 후에 사용한 리소스를 정리하는데 사용 assertion : unittest가 테스트가 통과하는지 또는 실패 하는지를 결정. bool test, 객체의 적합성, 적절한 예외 발생 등 다양한 점검을 할 수 있음 assertion이 실패하면 테스트 함수가 실패합니다. TDD (Test Driven Development..