Programming(175)
-
[PYTHON] 내장 순차 자료형 함수
enumerate파이썬에서 foreach를 사용할 경우 각 리스트의 값이 순차적으로 루프된다.만약에 foreach 문에 index를 추가로 확인하고 싶다면 count 변수를 추가로 선언하여 1씩 증가해야 하는 불편함이 있다.collection = [10, 9, 8, 7, 6, 5]index = 0for i in collection: index += 1 enumerate는 해당 collection의 값 뿐만 아니라 index도 함께 리턴한다.for index, value in enumerate(collection): # 처리 enumerate를 이용한 아래의 사용도 가능해진다.collection = ['apple', 'banana', 'pineapple']fruit_dict = dict(..
2015.03.03 -
[PYTHON] 튜플은 값이 바뀌지 않는다?
python에서 가장 많이 안쓰는 자료형이 튜플인 것 같다.튜플을 쓰는 용도는 거의 immutable한 데이터를 만들기 위할 때나 리턴 값을 여러개 받고 싶을 때 정도?(하지만 리턴도 왠만하면 dictionary "key:value" 형태로 좀더 명확하게 리턴을 표현해줄 때가 더 많음)튜플의 가장 큰 특징이 한번 설정한 값은 바꿀수 없다 정도인데.. 튜플로 설정한 값도 때로는 바꿀 수가 있다..(읭??? 이게 먼말???)바로 튜플안에 list가 존재하고 list 내의 아이템 값을 바꾸고자 하면 값이 바뀐다.왜냐하면 튜플이 가지고 있는 값은 list의 참조 값이지 list의 모든 값을 저장하고 있지는 않기 때문이다.예를 들어 아래와 같은 예제가 가능하다.test_tuple = ('test', [1,2], ..
2015.03.02 -
[PYTHON] 덕타이핑?
파이썬은 duck typing을 지원하는 언어이다.Duck Typing이 무엇이냐 하면..만약에 어떤 새가 오리처럼 걷고 꽥꽥거리는 소리를 낸다면, 그 새를 오리라고 간주한다는 것이다.A라는 클래스와 B라는 클래스가 있고, 이것을 파라미터로 받는 함수가 존재한다고 가정하자.아래와 같은 형태가 될 것이다.public void TestFunction(Class param)위 형태를 만족하려면 A클래스와 B클래스는 같은 부모로부터 상속을 받은 클래스이어야 한다.아무리 A클래스의 함수와 B클래스의 함수가 동일하고 해당하는 값이 동일하다고 하더라도, C++이나 JAVA에서는위 두 개의 클래스를 동일한 Type으로 간주하지 않는다.(그렇기 때문에 추상클래스라는게 있는거고.. 인터페이스를 고려해서 설계해야 하는 등등..
2015.03.01 -
[PYTHON] 배포를 쉽게 도와주는 freeze
기존에 환경에서 다른 환경으로 서버를 이전할때, 기존에 깔려 있는 패키지나 모듈등을 일일이 찾아서 다시 설치하기에는너무나 번거롭다.python에서는 freeze란 기능이 있어서 해당 기능을 사용하면 현재 서버에 깔려 있는 python 모듈들에 대한 목록을 뽑아내 준다.이전할 서버에서는 뽑혀진 목록들을 가지고 install만 실행하면 되니 무척이나 편리한 기능이라 할 수 있다.실제 사용방법을 보자면,$> pip freeze > pip-requirements.txt 라고 치면 freeze를 통해 현재 서버에 설치되어 있는 python 모듈의 목록이 pip-requirements.txt에 저장이 된다.pip-requirements.txtBeautifulSoup==3.2.1Flask=0.10.1Jinja2=..
2015.02.28 -
[PYTHON] 크롤링 시 주의사항
아래와 같이 코드를 작성하여 해당 주소에 대한 crawling을 시도하였는데 계속 response timeout이 발생하였다.import urllib2try: response = urllib2.urlopen(url)except urllib2.HTTPError, e: print e.reason.args[1]except urllib2.URLError, e: print e.reason.args[1] '어 안될리가 없는데??'하도 이상해서 브라우저 창에 직접 쳐봤더니 데이터를 제대로 가져온다.'아.. header 검사하나보다.'신속하게 아래와 같이 user-agent header 추가.import urllib2try: req = urllib2.Request(url) req.add_head..
2015.02.25 -
[ANDROID] 특수문자 처리 방법
안드로이드에서 아래와 같이 코드를 작성하였더니 에러가 발생..String value = data.split("(");아마도 "("가 특수문자로 처리되어 인식이 안되는 것처럼 보였다.그래서 앞에 "\"를 추가해 준다음 다시 동작 시켰더니 그래도 제대로 동작을 하지 않았다.찾아보니 자바에서는 특수문자 처리를 위해서는 "\\" 이렇게 두개의 역슬러시로 표현을 해줘야 한다고 한다.String value = data.split("\\(");정확하게 동작하는 것 확인!!배우고 또 배우자...
2015.02.23