글

라벨이 #Python인 게시물 표시

[Python] input() vs sys.stdin.readlines() 차이

[Python] input() vs sys.stdin.readlines() 차이 백준 알고리즘 등을 풀다보면 두 방법의 차이가 많이 나는것을 알 수 있다. 파이썬은 동적변수라지만 변수의 형태를 저장하기 위해서 input()메소드 내에서 가공을 해야 한다. raw_input()은 문자열을 반환하고 input()은 raw_input()을 evaluate한 결과를 반환한다. 참고) raw_input()은 문자열만을 받는 input sys.stdin.readline()은 한 줄의 문자열을 반환하는데 이것을 int()로 묶어서 정수로 반환하는게 더 빠르다. 출처 https://www.acmicpc.net/board/view/855

[용어 정리] 객체지향(OOP)란?

[용어 정리] 객체지향(OOP)란? 객체 지향 프로그램(Object-Oriented Programming)이란? 객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임의 하나 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 한다 보다 직관적인 코드 분석을 가능하게 하는 장점도 있다. 그러나 지나친 프로그램의 객체화 경향은 실제 세계의 모습을 그대로 반영하지 못한다는 비판도 있다. 프로그램은 특수한 목적을 가지고 데이터를 처리하기 위하여 만들어진다. 그런데 복잡한 데이터를 수많은 함수로만 처리하다 보면 여러가지 에러와 버그가 발생하는 문제점이 나타난다. 클래스는 이러한 문제를 해결하고 복잡한 데이터를 조금 더 쉽게 처리하게 도와준다. 주의점 일반적으로 프로그램을 만들때 항상 염두에 둬야 할 중요 포인트 2개 같은 코드를 반복하지 않는다. 코드는 항상 바뀔 수 있다는 것을 기억한다. 또한 클래스를 사용하면 사전이나 리스트가 지원하지 않는 상속과 같은 클래스의 기능도 사용 가능 출처 http://schoolofweb.net/blog/posts/

[Google] Google Composer란?

이미지
[Google] Google Composer란? Cloud Composer 클라우드 및 사내 구축형 데이터 센터에 걸쳐있는 파이프 라인을 작성, 예약 및 모니터링 할 수 있는 완벽하게 관리되는 workflow 통합 서비스 Apache Airflow  오픈 소스 프로젝트를 기반으로 함 Python 프로그래밍 언어를 사용 DAG(Directed Acyclic Graph)로 구성되므로 모든 수준의 사용자가 workflow를 쉽게 작성하고 일정을 쉽게 수립 가능 원 클릭 배포를 통해 풍부한 커넥터 라이브러리 및 workflow의 여러 그래픽 표현에 즉각적으로 엑세스 가능 GCP와 깊은 관련이 있어 사용자가 전체 파이프라인을 관리 가능 BigQueery, Dataflow 등등 많은 제품과의 강력한 통합 기능 Workflow가 on-premises, 여러 클라우드, GCP내에 있는 모든 경우에도 단일 괄니 도구를 통해서 파이프 라인을 연결 가능 인프라 관리의 부담을 줄어들게 해줌 Apache Airflow를 기반으로 함 다양한 플랫폼과의 통합을 제공 출처 https://cloud.google.com/composer/?hl=ko

[Python] Python으로 크롤링 해보기

[Python] Python으로 크롤링 해보기 크롤링이란? 보통 웹 크롤러를 사용하여 웹문서의 복사본을 생성함 검색 엔진은 이렇게 생성된 데이터를 인덱싱하여 빠른 검색을 할 수 있도록 함 시작하기 전에 requests와 beautifulsoup4 패키지를 설치해 줘야 함 beautifulsoup4는 크롤링에서 자주 사용하는 패키지 pip install requests beautifulsoup4 1. 웹 문서 전체 가져오기 from urllib.request import urlopen from bs4 import BeautifulSoup html = urlopen( "http://www.naver.com" )   bsObject = BeautifulSoup(html, "html.parser" ) print (bsObject) # 웹 문서 전체가 출력됩니다. urlopen :원하는 주소로부터 웹 페이지를 가져옴 BeautifulSoup객체로 변환 BeautifulSoup객체는 웹문서를 파싱한 상태 웹문서가 태그별로 분해되어 태그로 구성된 트리가 존재 출력 결과 <!DOCTYPE doctype html> <html class="svgless" lang="ko"> <head> <meta charset="utf-8"/> <meta content="origin" name="Referrer"/> <meta content="text/javascript" http-equiv="Content-Script-Type"/> <meta content="text/css" http-equiv="Content-Sty...

[How to] Anaconda(아나콘다) 명령어

[How to] Anaconda(아나콘다) 명령어 여러가지 배포판중에 가장 후발주자이지만 가장 뛰어난 완성도로 현재는 사실상의 표준이 됨 아나콘다는 패키지 의존성을 관리해주므로 가상환경에 따라 독립적으로 패키지를 관리 할 수있음 아나콘다 버전 확인 conda --version 아나콘다 최신 버전으로 업데이트 하기 conda update conda 새로운 가상환경설정  conda create --name 환경명 python=3.6.1 가상환경 비활성화 하기  window : activate 환경명 linux(Mac) : source activate 환경명 가상환경 비 활성화 하기  window : deactivate 환경명 linux(Mac) : source deactivate 환경명 가상환경 지우기 conda remove 환경명 Activation시 permission denied가 뜬다면, 아래와 같이 입력 source Anaconda설치경로/bin/activate 환경명 현재 구축된 환경 확인  conda info --envs 아나콘다 가상환경 복사도 가능하다 출처 http://egloos.zum.com/mataeoh/v/7096538 https://joonyon.tistory.com/25

[Python] Flask란?

이미지
[Python] Flask란? Flask(플라스크)란? 파이썬 웹 어플리케이션을 만드는 Framwork Django보다 더 간단하게 만들 수 있음 매우 심플하고 가벼운 느낌을 가지는 프레임 워크 가볍지만 핵심적인 내용과 기능을 가지고 있음 Flask 설치 가상환경 키기 pip install Flask Flask 기본 작동 소스 코드 소스 코드 설명 from flask import Flask Flask 모듈을 import해야 함. flask에서  Flask라는 클래스를 불러옴 app = Flask(__name__) Flask라는 객체를 생성하고 인수로써 __name__을 입력 해당 객체의 이름은  app으로 설정됨 @app.route('/') app.route(rule,options) rule: 생성한 객체의 route를 설정함. 즉, URL을 설정해줌 options: rule 객체에 전달될 인자 목록 8,9번 라인 : 객체의 run함수를 이용해서 로컬서버에서 어플리케이션을 실행하도록 함 app.run(host, port, debug, options) 응답을 받는 hostname. 127.0.0.1(localhost)가 기본값 만약 가상머신이나 외부환경을 이용하면, app.run()을 app.run(host='0.0.0.0')으로 변경하면 외부에서 접근 가능 debug : 기본값은 false, 만약 true로 설정하면, debug정보를 제공 options : Werkzeug 서버에 전달할 내용 Flask 작동시키기 python hello.py Flask의 한계 WARNING: Do not use the development server in a production environment. 메시지를 볼 수 있다 Flask는 가볍고 사용하기 쉽지만 내장 서버는 확장성이 좋지 않다 기본적으로 한번에 ...

[Python] # -*- coding: utf-8 -*-를 쓰는 이유

[Python] # -*- coding: utf-8 -*-를 쓰는 이유 파이썬2의 기본 인코딩은 ascii 이다 파이썬2는 한글을 쓸때 골치아프다.  파이썬 스크립트에서 한글을 사용하게 될 때 파이썬은 ascii 인코딩일 것으로 예상하고 해석하려고 하지만 한글을 ascii로 해석이 불가능하기 때문에 SyntaxError발생 영어만 사용하면 별로 신경 쓸게 없지만 한글은 euc-kr , utf-8 이 공존하기 때문이다. 그냥 골치아픈것도 아니고 unicode와 조합되어서도 골치아프다. unicode 관련 부분의 경우 최초부터 지원한게 아니라 파이썬 2.4부터 지원을 추가되어서 문자열을 의미하는 타입이 str 와 unicode 가 존재해서 더 골치가 아프다 파이썬3에서는 기본값이 UTF-8이기 때문에 기본값에서 벗어나거나 다른 tool( ex: IDE또는 텍스트 편집기)를 사용하는 경우에만 사용 즉, 파이썬에 관한 다른 인코딩을 사용하고자 할때만 사용하면 됨 파이썬의 기본 인코딩은 ascii 이다. 스크립트 파일이 ascii인코딩일거라고 가정하고 읽어서 파싱하려고하는데 ascii로 해석이 불가능한 한글이라는 단어가 존재하기 때문에 SyntaxError(문법 에러)가 발생 이를 해결하기 위해서는 아래와 같은 스크립트 파일 첫줄에 파일의 인코딩을 명시해주면 된다. #-*- coding: utf-8 -*-  파이썬2.x의 기본 인코딩은 ascii 이다. 파이썬 스크립트에서 한글을 사용하게 될 때 파이썬은 ascii 인코딩일 것으로 예상하고 해석하려고 하지만 한글을 ascii로 해석이 불가능 하기 때문에 SyntaxError가 발생 한다. 출처 : https://libsora.so/posts/python-hangul/

[Python] 클래스란?

이미지
[Python] 클래스란? 클래스를 쓰는 이유는? 위와 같이 똑같은 일을 하는 add1, add2라는 함수가 만들어졌고 각각의 함수에서 계산된 결과값을 유지하면서 저장하기 위한 전역변수 result1, result2가 필요하게 되었다. 상당히 비 효율적 코드  Calculator 클래스로 만들어진 cal1, cal2라는 별개의 객체가 각각의 역할을 수행 각 객체의 결과 값 역시 다른 클래스의 결과값과 상관없이 독립적으로 결과값 유지 클래스를 상당히 간단해 짐 클래스에서 가장 헷갈리는 부분 파이썬 클래스에서 가장 헷갈리는 부분 setdata라는 메서드는 매개변수로 3개를 필요로 하는데 왜 a.setdata(4,2)처럼 2개만 입력해도 실행이 될까....? 파이썬 메서드의 첫번째 매개변수명은 관례적으로 self라는 이름을 사용 호출 시 호출한 객체 자신이 전달되기 때문에 self라는 이름을 사용 물론 self말고 다른 이름을 사용해도 상관은 없다. 파이썬에서 위와 같은 코드를 자주 보게 된다.  여기서 중요한 것은 바로 self이다 a.setdata(4,2)처럼 호출했을 때 자동으로 들어오는 객체 a라고 했다. 즉,  self.first의 의미는 -> a.first 두 문장을 풀어 쓰면 위와 같게 된다. ※ 메서드의 첫번째 매개변수를 self를 명시적으로 구현해야 하는 것은 파이썬만의 독특한 특징이다. 예를들어 자바같은 언어는 첫번째 매개변수인 self가 필요없다. 생성자 위와 같은 클래스에서 __init__   메서드만 따로 떼어 내서 살펴보자 __init__ 메서드는 setdata메서드와 이름만 다르고 모든게 동일하다 단, 메서드 이름을 __init__ 으로 했기 때문에 생성자로 인식되어 객체가 생성되는 시점에 자동으로 호출되는 ...

[Python] 장고(Django)란?

이미지
[Python] 장고(Django) 파이썬으로 만들어진 무료 오픈소스 웹 어플리케이션 프레임워크 즉, 쉽고 빠르게 웹사이트를 개발할 수 있도록 돕는 구성요소로 이루어진 웹 프레임워크 웹사이트를 구축할 때, 비슷한 유형의 요소들이 항상 필요합니다.  회원가입, 로그인, 로그아웃과 같은 사용자 인증을 두라는 방법이나 웹사이트의 관리자 패널, 폼, 파일 업로드와 같은 것들을 말한다. 장점 비교적 쉬운 언어인 Python을 기반으로 두기 때문에 익히기 쉽다 익히기 쉬운 만큼 개발속도가 빠르다. 코드 완성도를 높게 유지할 수 있므며, 확장성도 좋다. 성공적인 도입 사례가 많다 ex) instagram 개발비용을 크게 절감시킬 수 있다. 단점  Python이 객체 지향 프로그램이므로, 객체 지향 프로그램에 대한 이해가 필요 Python의 단점을 대부분 포함 성능이 다른 웹 애플리케이션 프레임워크(Node.js등) 보다 좋지 못하다. 한글화된 문서가 그렇게 많지 못하다. 참고 : https://medium.com/@psychet_learn/djnago-python-django%EB%9E%80-d1165b8e640b