본문 바로가기

Python

(48)
[ Module ] Struct, c 구조체 호환 PythonStruct#Ubuntu 18.04 LTS#Python 3.6.5 #>> 상세 설명, 실행화면 When use?C Struct와 Python value 간의 변환이나 파일에 Binary Data를 저장하거나, Network Connection 시에 주로 사용된다고 한다.나는 C Struct와 Python value 간의 호환을 위해서 사용하였다. 사용하기 전에 조사를 해 본바로는 언어에 따라 내용을 직렬화해 data로 전달해 주어야 한다는 얘기도 있었다.이 부분에 대해서는 추가로 테스트가 필요하지만, C언어는 기본적으로 data를 직렬화하기 때문에 구조체의 내용을 그대로 전달하면 문제가 없을 것으로 생각된다.( 일단, local에서 server와 client 코드의 동작을 잘 이루어 졌다. )..
[ MODULE ] audioop:: pcm data 모노, 스테레오 정보 바꾸기 PythonAudioop:: Manipulate raw audio data#Ubuntu 16.04 LTS#Python 3.5.2 #>> 상세 설명, 실행화면 audioopThe audioop module contains some useful operations on sound fragments. It operates on sound fragments consisting of signed integer samples 8, 16 or 32 bits wide, stored in Python strings. This is the same format as used by the al and sunaudiodev modules. All scalar items are integers, unless specified ..
[ BASIC ] 발생자 제네레이터 PythonGenerator#Ubuntu 16.04 LTS#Python 3.5.2 제네레이터이터레이터를 생성해주는 함수이며 발생자라고 부르기도 한다.이터레이터와 마찬가지로 모든 값을 다 반환하고 나면 StopIterater 예외를 발생시킨다. 재네레이터는 __iter__, __next__ 메소드를 가지고 있으며 yield라는 키워드를 사용한다.재네레이터 객체에서 __next__ 메소드를 호출할 때마다,재네레이터 함수 안의 yield까지 코드를 실행한 뒤 값을 반환하고 다음 __next__를 기다린다. 즉, yield를 사용하면 값을 제네레이터 함수는 yield 다음 코드 실행을 잠시 중단하고 함수의 바깥으로 값을 전달하면서 코드 실행을 함수 바깥에 양보하여 함수 바깥의 코드가 실행되도록 한다. + Tip..
[ BASIC ] 반복자 이터레이터 PythonIterator#Ubuntu 16.04 LTS#Python 3.5.2 이터레이터?값을 차례대로 꺼낼 수 있는 객체로 반복자라고도 불린다. 만약 연속한 숫자를 미리 만들면 숫자가 적을 때는 상관없지만 숫자가 아주 많을 때는 메모리를 많이 사용하므로 성능에 불리하다.그래서 파이썬에서는 이터레이터만 생성하고 값이 필요한 시점이 되었을 때 값을 만드는 방식을 사용하는데 이를 지연 평가( lazy evaluation )라고 한다. 반복 가능한 객체 = 이터레이터 ?결론 부터 이야기하면 단순히 반복만 가능한 객체는 이터레이터가 아니다. 1. 반복 가능한 객체반복 가능한 객체는 요소가 여러개 들어 있고, 한 번에 값을 하나씩 꺼낼 수 있는 객체로 문자열, 리스트, 딕셔너리 등등이 있다.객체가 반복 가능한 ..
[ MODULE ] boto3:: aws api PythonBoto3 #Ubuntu 16.04 LTS#Python 3.5.2 #>> 상세 설명, 실행화면 Installation$ pip install boto3 특별한 버전을 지정해서 설치하고 싶으면 아래 처럼 버전을 적어주면 된다.$ pip install boto3==verstion Configuration아마존에서 인증 받은 key id와 access key를 입력해주어야 한다. $ aws configure 명령어를 입력하면 아래 와 같이 key_id 와 access_key를 입력하라는 표시가 하나씩 나타난다. aws_access_key_id = YOUR_ACCESS_KEYaws_secret_access_key = YOUR_SECRET_KEY 키를 입력하고 나면 그냥 enter를 2번 쳐서 넘어가도..
[ DO ] 파이썬 마이크 입력 코드 PythonMic input#Ubuntu 16.04 LTS#Python 3.5.2 코드 해석마이크 관련 코드를 찾다가 어떤 분이 블로그에 주석을 달아서 매우 잘 정리하셨길래, 참고하고자 가져왔다. #!/usr/bin/env python import pyaudiofrom six.moves import queueimport time # 녹음용 값 # 16khzRATE = 16000# 버퍼는 1600CHUNK = int(RATE / 10) # 100ms class MicrophoneStream(object): """마이크 입력 클래스""" def __init__(self, rate, chunk): self._rate = rate self._chunk = chunk # 마이크 입력 버퍼 생성 self._buff..
[ BASIC ] PEP8 - Style Guide for Python Code PythonPEP8 - Python code style 충격적인 사실별 신경 안쓰고 있다가, 유지보수할 때나 나중에 코드볼 때를 생각해서 지켜보자 하고 봤는데.. 나름 충격적이었다.나는.. 대체.. T_T 좀 더 많은 자세한 내용은 참조내용을 보자.. 1. Tab이 아닌 Spcae로 들여쓴다.2. 한 줄의 문자 길이가 79자 이하여야 한다. 3. 함수, 변수, 속성은 lowercase_underscore( 소문자, 연결 되는 단어 언더바 ) 사용4. 보호 인스턴스는 _leading_underscore( 변수명 앞에 _ 한개, 연결 되는 단어 언더바 ) 사용5. 비공개 인스턴스는 __docule_underscore( 변수명 앞에 _ _ 두개, 연결 되는 단어 언더바 ) 사용6. 클래스와 예외는 Capita..
[ Python ] 복사의 늪에서 벗어나자, 얕은 복사 vs 깊은 복사 vs 걍 복사 PythonShallow copy / Deep copy / Copy#Ubuntu 16.04 LTS#Python 3.5.2 #>> 상세 설명, 실행화면코드 동작을 시켜보고 싶으신 분은 아래 참조내용에 1. GitHub에 가셔서 코드를 다운 받아서 "main.py"를 실행 시키세요 :) 1. Copy 단순 복사단순 객체의 복사는 그냥 같은 객체 주소를 가르킨다고 생각하시면 됩니다.둘 중에 하나를 수정하면 원래의 내용도 수정된다고 생각하면 되요. 00. list1을 list2에 복사했을 때- - - - - - - - - - list 1 >[3, 'string', [1, 0, 0, 4], {'b': 'MAMAMO', 'a': 'kitty'}]id > : 3id > : stringid > : [1, 0, 0, 4..