SlideShare una empresa de Scribd logo
1 de 41
파이썬 생태계의 이해
정보기술 시대에 유익한 파이썬 프로그래밍 – 제 6 강 (1)
동양미래대학교
2015.7
최용 <sk8er.choi@gmail.com>
주제
• PEPs (Python Enhancement Proposals)
• Python 라이브러리와 PyPI, 패키지 관리자
• Python 언어의 구현체 및 배포본
• Python 라이선스
• Python 커뮤니티
최용 <sk8er.choi@gmail.com>
• Workload Automation (Batch Job Scheduling)
• BMC Control-M
• Python
• 왕초보를 위한 Python
• The Definitive Guide to Jython 번역
• 예제 중심의 Python
• 피겨 스케이터
• 싱글
• 아이스 댄스
https://www.youtube.com/watch?v=oOzPbCPQBHA
PEPs (Python Enhancement Proposals)
PEPs (Python Enhancement Proposals)
• PEP란?
• Python에 대한 설계 문서, 새로운 기능 설명, 기술적인 명세
https://www.python.org/dev/peps/
• PEP의 종류
• Standards Track PEP: 새로운 기능 및 구현에 대한 설명
예: PEP 255 -- Simple Generators
• Informational PEP: 설계 문제에 대한 설명, 일반적 지침
예: PEP 20 -- The Zen of Python
• Process PEP: Python 언어 외적인 프로세스에 대한 설명, Meta PEP
예: PEP 0001 -- PEP Purpose and Guidelines
PEP 1 – PEP Purpose and Guidelines
• Python’s BDFL(“Benevolent Dictator for Life”, 관대한 종신 독재자)
• Guido van Rossum: Python의 창시자 & 설계 총책임자
• 새로운 PEP에 대한 최종 승인
• 핵심 개발자에게 위임("BDFL-Delegate“)
• PEP Editors
• PEPs 메일링 리스트 구독
• PEP 점검, 교열, 승인/반송
• PEP 번호와 종류(S, F, I) 부여
• 저장소에 추가
• Champion(Author)
• 아이디어
• 논의, 합의
• PEP 작성, 제출
• 개정 https://www.python.org/dev/peps/pep-0001/
http://sk8erchoi.bitbucket.org/peps-korean/pep-0001.html
Barry Warsaw, Jeremy Hylton, David Goodger, Nick Coghlan
PEP 8 – Style Guide for Python Code
• A Foolish Consistency is the Hobgoblin of Little Minds
http://en.wikipedia.org/wiki/Self-Reliance
어리석은 '일관성'은 좁은 마음에서 나온 도깨비 같은 것으로, 그릇이 작은 정치가와
철학자, 신학자들이 숭배하는 대상이다. 일관성과 위대한 영혼은 서로 아무 관계도
없다. 일관성을 걱정하는 것은 벽에 비친 자신의 그림자를 걱정하는 것과 같다.
오늘 당신이 생각하는 것을 단호하게 말하라.
그리고 내일은 또 내일 생각하는 것을 단호하게 말하라. 오늘 말하는 것이 어제 말한
것과 모든 면에서 모순된다 해도 괜찮다.
'아, 그러면 틀림없이 오해받을 텐데.'
오해받는게 그렇게 나쁜 것인가?
피타고라스는 사람들로부터 오해를 받았다. 소크라테스도, 예수도, 루터도, 코페르니
쿠스도, 갈릴레오도, 뉴턴도 마찬가지다.
인간의 육신에 깃들었던 순수하고 현명한 정신은 모두 세상으로부터 오해를 받았다.
위대한 인물이 된다는 것은 오해를 받는다는 것이다.
자기신뢰 - 랠프 월도 에머슨
http://www.ilwar.com/pen/63815
PEP 8 – Style Guide for Python Code
• 4개의 스페이스를 들여쓰기의 단위로 사용(탭보다 스페이스가 좋음)
• 한 행에는 최대 79글자까지만 넣을 것
• 최상위 수준 함수와 클래스 정의는 두 줄을 띄워서 구분
• UTF-8로 작성
• import 순서
1. 표준 라이브러리
2. 관련이 있는 서드파티 라이브러리
3. 로컬 어플리케이션/자체 라이브러리
• 함수 호출
• 좋음: spam(1)
• 나쁨: spam (1)
• …
https://www.python.org/dev/peps/pep-0008/
http://sk8erchoi.bitbucket.org/peps-korean/pep-0008.html
Guido van Rossum <guido at python.org>
Barry Warsaw <barry at python.org>
Nick Coghlan <ncoghlan at gmail.com>
PEP 20 – 파이썬 선(禪)
아름다움이 추함보다 좋다.
명시가 암시보다 좋다.
단순함이 복잡함보다 좋다.
복잡함이 꼬인 것보다 좋다.
수평이 계층보다 좋다.
여유로운 것이 밀집한 것보다 좋다.
가독성은 중요하다.
특별한 경우라는 것은 규칙을 어겨야 할 정도로 특별한 것이 아니다.
허나 실용성은 순수성에 우선한다.
오류 앞에서 절대 침묵하지 말지어다.
…
https://www.python.org/dev/peps/pep-0020/
http://sk8erchoi.bitbucket.org/peps-korean/pep-0020.html
Tim Peters <tim at zope.com>
PEP 202 – List Comprehensions
• map(), filter(), 중첩 루프 등을 사용하여 리스트를 생성하는 것을 대신할
수 있는 간결한 방법
• Python 2.0에서 도입
>>> [i for i in range(10)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [i for i in range(20) if i % 2 == 0]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Barry Warsaw <barry at python.org>
PEP 205 – Weak References
• ARC(Automatic Reference Counting) 방식의 자동 메모리 관리
에서 발생하는 메모리 누수에 대한 해법
• Python에서 약한 참조에 대한 기존의 접근
• Object caches(weak dictionaries)
• Reduction of pain from circular references
• Dianne Hackborn's vref proposal (1995)
• 약한 참조를 생성하는 weakref 모듈을 제안
• Python 2.1에서 구현
Fred L. Drake, Jr. <fdrake at acm.org>
PEP 478 – Python 3.5 Release Schedule
• 일정
• 3.5.0 alpha 1: February 8, 2015
• 3.5.0 beta 1: May 24, 2015 ("feature freeze": 기능 추가 없음)
• 3.5.0 candidate 1: August 9, 2015
• 3.5.0 final: September 13, 2015
• 기능
• PEP 465 , a new matrix multiplication operator
• PEP 461 , %-formatting for binary strings
• PEP 471 , os.scandir()
• PEP 479 , change StopIteration handling inside generators
• PEP 441 , improved Python zip application support
• …
https://www.python.org/dev/peps/pep-0478/
Larry Hastings <larry at hastings.org>
PEP 3000 – Python 3000
• Python 3000 = Python 3.0 = Py3K
• Python 2.6 코드가 수정 없이 Python 3.0에서 동작할 필요 없음
• Python 2.6과 3.0을 함께 지원할 필요가 있는 프로젝트의 개발 모델 제시
1. Full coverage의 unit test 작성
2. Py3k 경고 모드
3. 테스트. 경고가 뜨지 않을 때까지 수정
4. 2to3 도구를 사용하여 코드 자동 변환(수작업 금지)
5. 3.0에서 테스트
6. 문제가 발견되면 2.6 코드 수정. Step 3으로.
7. 때가 되면 각각의 버전 릴리스
• C 언어로 구현하며, 완전히 새로 작성하기보다는 Python 2 코드 기반 활용
Guido van Rossum <guido at python.org>
05-Apr-2006
Python 라이브러리와 PyPI,
패키지 관리자
Python 표준 라이브러리
• 내장 함수
Built-in Functions
abs() dict() help() min() setattr()
all() dir() hex() next() slice()
any() divmod() id() object() sorted()
ascii() enumerate() input() oct() staticmethod()
bin() eval() int() open() str()
bool() exec() isinstance() ord() sum()
bytearray() filter() issubclass() pow() super()
bytes() float() iter() print() tuple()
callable() format() len() property() type()
chr() frozenset() list() range() vars()
classmethod() getattr() locals() repr() zip()
compile() globals() map() reversed() __import__()
complex() hasattr() max() round()
delattr() hash() memoryview() set()
https://docs.python.org/3/library/functions.html
Python 표준 라이브러리
• 텍스트 프로세싱: string, re, difflib, …
• 데이터 타입: datetime, calendar, collections, array, …
• 수 계산 및 수학 관련: numbers, math, random, …
• 함수형 프로그래밍: itertools, functools, operator
• 데이터 영속성(persistence): pickle, marshal, sqlite3, …
• 데이터 압축: zlib, gzip, bz2, …
• 암호화: hashlib, hmac
• 동시성: threading, multiprocessing, …
• 인터넷 데이터 핸들링: email, json, base64, …
• 인터넷 프로토콜: webbrowser, urllib, http, imaplib, …
• …
https://docs.python.org/3/library/
PyPI
• [피 와이 피 아이] 또는 [치즈샵]
• Python 소프트웨어 패키지에 대한 정보를 저장
• 패키지를 릴리스
• 각 패키지는 고유한 이름과 버전을 가짐
• https://pypi.python.org/pypi
• 참고
• https://wiki.python.org/moin/CheeseShopTutorial
• https://python-packaging-user-guide.readthedocs.org/en/latest/
PyPI Topic
• Software Development (20788)
• Internet (10035)
• Utilities (5629)
• Scientific/Engineering (4201)
• System (3351)
• Text Processing (1896)
• Database (1381)
• Communications (1189)
• Multimedia (1317)
• Office/Business (1283)
• Security (860)
• Games/Entertainment (382)
• Documentation (403)
• Terminals (323)
• Education (304)
• Text Editors (152)
• Artistic Software (105)
• Home Automation (114)
설치 도구
• pip: PyPI에 등록된 Python 패키지를 설치
• virtualenv, pyvenv: 애플리케이션의 의존성 문제를 피하기 위해
격리
• pip wheel: 차후의 설치 속도를 높이기 위하여 wheel 배포본의
캐시를 생성
• 통합된 소프트웨어 스택 관리
• buildout: 웹 개발에 특화
• Hashdist
• conda: 과학 커뮤니티를 주 대상으로 함
PIP (Pip Installs Python)
• PIP Python 2.7.9 이상, Python 3.4 이상에 기본으로 포함
• PyPI로부터의 설치를 지원
• 패키지 설치
$ pip install SomePackage # latest version
$ pip install SomePackage==1.0.4 # specific version
$ pip install 'SomePackage>=1.0.4' # minimum version
• 패키지 삭제
$ pip uninstall SomePackage
• 설치된 패키지 목록
$ pip list
• 패키지 검색
$ pip search "query“
예: $ pip search hangul
https://pip.pypa.io/en/stable/user_guide.html
패키징 도구
• setuptools: 프로젝트를 정의하고 소스 배포본을 생성
• bdist_wheel setuptools: wheel을 생성. 바이너리 익스텐션을 포
함할 경우에 특히 유용함
• twine: 배포본을 PyPI에 업로드
Python 언어의 구현체 및 배포본
Python 언어의 구현체 및 배포본
• Python
• 언어 명세
• ≒ CPython
• Jython
• PyPy
• IronPython
CPython
• C로 작성
• Python 구현의 레퍼런스
• C언어 확장 기능을 활용
• 버전
• 3.4.3
• 2.7.10
SciPy
• 수학, 과학, 공학을 위한 배포본
• 다음의 모듈 포함
• NumPy (다차원 배열 패키지)
• SciPy Library (과학 컴퓨팅을 위한 기반 라이브러리)
• Matplotlib (2D, 3D 플로팅)
• IPython (편리한 대화식 콘솔)
• Sympy (symbolic mathematics)
• Pandas (데이터 구조 및 분석)
http://www.scipy.org/
Anaconda
• 대규모 데이터 처리, 과학 컴퓨팅
• 주요 패키지 포함(NumPy, SciPy, Pandas, IPython, Matplotlib, …)
• Python 2 & 3
• 패키지 관리자(conda)
• Cpython + conda + packages + α
• https://store.continuum.io/cshop/anaconda/
• 8강에서 다룸
Jython
• Java 가상 머신에서 동작
• Java로 작성된 클래스 활용
• Jython 2.7.0 릴리스(2015년 5월)
• http://www.jython.org/
• 10강에서 다룸
IronPython
• .NET 프레임워크와 통합된 Python 구현
• .NET 프레임워크와 Python 라이브러리를 사용할 수 있음
• 비주얼 스튜디오에서 사용할 수 있는 Python Tools
http://ironpython.net/tools/
• Python 2.7
PyPy [파이파이]
1. Rpython 언어로 동적 언어의 인터프리터를 구현할 수 있게 해주는
프레임워크
2. RPython으로 구현된 Python
http://blog.dahlia.kr/post/5124874464
Just-in-Time compilation (dynamic translation)
• 프로그램을 실행하는 도중에 컴파일
• ahead-of-time compilation (AOT)과 interpretation을 결합
http://en.wikipedia.org/wiki/Just-in-time_compilation
Rpython
• RPython은 Python의 제한적인(restricted) 부분집합
• 언어의 명세와 구현을 분리
• Just-in-Time 컴파일러를 자동으로 생성
PyPy
• 속도 향상
• 메모리 적게 사용
• 호환성
“CPython에서 돌아가던 것이 PyPy에서
안 돌아가면 PyPy의 버그다”
• Stackless 모드
• 버전
• PyPy 2.6.0 (Python 2.7 호환)
• PyPy3 2.4.0 (Python 3.2.5 호환)
http://pypy.org/
http://speed.pypy.org/
Python 라이선스
Open Source Software의 라이선스
• 공통적 준수 사항
• 저작권 관련 문구 유지
• 제품명 중복 방지
• 서로 다른 라이선스를 혼용할 때에는 호환성을 확인
• 라이선스에 따라 차이가 있는 사항
• 사용 여부 명시
• 소스코드 공개
• 특허 관련 조항
오픈 소스 SW 라이선스 가이드
http://korea.gnu.org/people/chsong/copyleft/osswlg.pdf
Python의 라이선스
• Python 역사와 라이선스 https://docs.python.org/3/license.html
• PSF (Python Software Foundation) 라이선스
• Python 2.1 이상에 적용
• https://wiki.python.org/moin/PythonSoftwareFoundationLicenseFaq
• GPL 호환 라이선스
• Python을 GPL 하에서 배포된 다른 소프트웨어와 조합해 쓸 수 있다
Python이 GPL 하에서 배포된다는 뜻은 아니다
• 모든 Python 라이선스는 GPL과 다르게, 변경사항을 오픈 소스로 공개
하지 않고도 변조된 버전을 배포해도 된다
PyPI의 주요 라이선스
• OSI Approved (38416)
• PSF License (447)
• CNRI Python License (48)
• MIT License (11967)
• BSD License (11240)
• Apache Software License (3375)
• GPLv3 (1387)
• LGPL (1205)
• Zope Public License (982)
• Public … (459)
• Free … (379)
• Other/Proprietary (281)
• Database (24)
• Internet (56)
• Scientific/Engineering (72)
• Software Development (109)
• System (97)
• Utilities (101)
https://pypi.python.org/pypi?%3Aaction=browse
Python 커뮤니티
Python 커뮤니티, 소식
• 한국의 Python 사용자 그룹
• https://www.facebook.com/groups/pythonkorea/
• https://www.facebook.com/pyladieseoul
• https://www.djangogirls.org/seoul/
• 소식
• http://www.pythonweekly.com/
• http://weeklypythonkr.tumblr.com/
PyCon
• http://us.pycon.org/2015/schedule/
• YouTube 채널: PyCon 2015
https://www.youtube.com/channel/UCgxzjK6GuOHVKR_08TT4hJQ
• Keynote – Jacob Kaplan-Moss
https://www.youtube.com/watch?v=hIJdFxYlEKE
• 파이콘 한국 (8월말) http://www.pycon.kr/2015/
DjangoGirls Seoul
• https://www.djangogirls.org/seoul/
• 여성을 위한 무료 프로그래밍 워크샵
• 프로그래밍에 처음인 사람을 대상으로 함
• 10월 2~3일
• 구글 캠퍼스 서울
온라인 Python 강좌
• edx.org
• CS For All: Introduction to Computer Science and Python Programming
https://www.edx.org/course/cs-all-introduction-computer-science-harveymuddx-cs005x
• coursera.org
• https://www.coursera.org/course/pythonlearn
• codecademy.com
• https://www.codecademy.com/en/tracks/python
Q & A
연습
• https://www.youtube.com/watch?v=hIJdFxYlEKE
• https://www.codecademy.com/en/tracks/python

Más contenido relacionado

Destacado

Python 표준 라이브러리
Python 표준 라이브러리Python 표준 라이브러리
Python 표준 라이브러리용 최
 
Python on Android
Python on AndroidPython on Android
Python on Android용 최
 
Python 활용: 이미지 처리와 데이터 분석
Python 활용: 이미지 처리와 데이터 분석Python 활용: 이미지 처리와 데이터 분석
Python 활용: 이미지 처리와 데이터 분석용 최
 
Java와 Python의 만남: Jython과 Sikuli
Java와 Python의 만남: Jython과 SikuliJava와 Python의 만남: Jython과 Sikuli
Java와 Python의 만남: Jython과 Sikuli용 최
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)Heungsub Lee
 
Python 웹 프로그래밍
Python 웹 프로그래밍Python 웹 프로그래밍
Python 웹 프로그래밍용 최
 
Python 이해하기 20160815
Python 이해하기 20160815Python 이해하기 20160815
Python 이해하기 20160815Yong Joon Moon
 
Python 내장 함수
Python 내장 함수Python 내장 함수
Python 내장 함수용 최
 
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)Kyoungchan Lee
 
20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation
20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation
20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentationre4lfl0w
 
Jupyter notebok tensorboard 실행하기_20160706
Jupyter notebok tensorboard 실행하기_20160706Jupyter notebok tensorboard 실행하기_20160706
Jupyter notebok tensorboard 실행하기_20160706Yong Joon Moon
 
2016317 파이썬기초_파이썬_다중설치부터_Jupyter를이용한프로그래밍_이태영
2016317 파이썬기초_파이썬_다중설치부터_Jupyter를이용한프로그래밍_이태영2016317 파이썬기초_파이썬_다중설치부터_Jupyter를이용한프로그래밍_이태영
2016317 파이썬기초_파이썬_다중설치부터_Jupyter를이용한프로그래밍_이태영Tae Young Lee
 
141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작Changwon Choe
 
간단한 블로그를 만들며 Django 이해하기
간단한 블로그를 만들며 Django 이해하기간단한 블로그를 만들며 Django 이해하기
간단한 블로그를 만들며 Django 이해하기Kyoung Up Jung
 
The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)Eunjeong (Lucy) Park
 
Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.Kyoung Up Jung
 
파이썬 반복자 생성자 이해하기
파이썬 반복자 생성자 이해하기파이썬 반복자 생성자 이해하기
파이썬 반복자 생성자 이해하기Yong Joon Moon
 
Ch01 정보기술과 스마트경영
Ch01 정보기술과 스마트경영Ch01 정보기술과 스마트경영
Ch01 정보기술과 스마트경영AnalogueSung
 
The state of PyPy
The state of PyPyThe state of PyPy
The state of PyPym_r_e
 
Understanding PyPy - PyConEs 14
Understanding PyPy - PyConEs 14Understanding PyPy - PyConEs 14
Understanding PyPy - PyConEs 14fcofdezc
 

Destacado (20)

Python 표준 라이브러리
Python 표준 라이브러리Python 표준 라이브러리
Python 표준 라이브러리
 
Python on Android
Python on AndroidPython on Android
Python on Android
 
Python 활용: 이미지 처리와 데이터 분석
Python 활용: 이미지 처리와 데이터 분석Python 활용: 이미지 처리와 데이터 분석
Python 활용: 이미지 처리와 데이터 분석
 
Java와 Python의 만남: Jython과 Sikuli
Java와 Python의 만남: Jython과 SikuliJava와 Python의 만남: Jython과 Sikuli
Java와 Python의 만남: Jython과 Sikuli
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
 
Python 웹 프로그래밍
Python 웹 프로그래밍Python 웹 프로그래밍
Python 웹 프로그래밍
 
Python 이해하기 20160815
Python 이해하기 20160815Python 이해하기 20160815
Python 이해하기 20160815
 
Python 내장 함수
Python 내장 함수Python 내장 함수
Python 내장 함수
 
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
 
20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation
20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation
20151219_(python_korea)_How_to_automate_webhacking.kr_with_Python_presentation
 
Jupyter notebok tensorboard 실행하기_20160706
Jupyter notebok tensorboard 실행하기_20160706Jupyter notebok tensorboard 실행하기_20160706
Jupyter notebok tensorboard 실행하기_20160706
 
2016317 파이썬기초_파이썬_다중설치부터_Jupyter를이용한프로그래밍_이태영
2016317 파이썬기초_파이썬_다중설치부터_Jupyter를이용한프로그래밍_이태영2016317 파이썬기초_파이썬_다중설치부터_Jupyter를이용한프로그래밍_이태영
2016317 파이썬기초_파이썬_다중설치부터_Jupyter를이용한프로그래밍_이태영
 
141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작
 
간단한 블로그를 만들며 Django 이해하기
간단한 블로그를 만들며 Django 이해하기간단한 블로그를 만들며 Django 이해하기
간단한 블로그를 만들며 Django 이해하기
 
The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)
 
Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.
 
파이썬 반복자 생성자 이해하기
파이썬 반복자 생성자 이해하기파이썬 반복자 생성자 이해하기
파이썬 반복자 생성자 이해하기
 
Ch01 정보기술과 스마트경영
Ch01 정보기술과 스마트경영Ch01 정보기술과 스마트경영
Ch01 정보기술과 스마트경영
 
The state of PyPy
The state of PyPyThe state of PyPy
The state of PyPy
 
Understanding PyPy - PyConEs 14
Understanding PyPy - PyConEs 14Understanding PyPy - PyConEs 14
Understanding PyPy - PyConEs 14
 

Similar a Python 생태계의 이해

PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보Young Hoo Kim
 
18 2 파이썬표준라이브러리
18 2 파이썬표준라이브러리18 2 파이썬표준라이브러리
18 2 파이썬표준라이브러리Changwon National University
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)Tae Young Lee
 
2020년 5월 16일 개발 이야기 정리
2020년 5월 16일 개발 이야기 정리2020년 5월 16일 개발 이야기 정리
2020년 5월 16일 개발 이야기 정리Jay Park
 
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기Joongi Kim
 
2017 새싹교실 1교시
2017 새싹교실 1교시2017 새싹교실 1교시
2017 새싹교실 1교시Han Sung Kim
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발Jeongkyu Shin
 
Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)정명훈 Jerry Jeong
 
Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러Heungsub Lee
 
Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차Taekyung Han
 
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영) 파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영) Tae Young Lee
 
2020년 10월 24일 개발자 이야기
2020년 10월 24일 개발자 이야기2020년 10월 24일 개발자 이야기
2020년 10월 24일 개발자 이야기Jay Park
 
제로부터시작하는 Git 두번째 이야기
제로부터시작하는 Git 두번째 이야기제로부터시작하는 Git 두번째 이야기
제로부터시작하는 Git 두번째 이야기Mario Cho
 
Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Han Sung Kim
 
Open source engineering - 0.1
Open source engineering - 0.1Open source engineering - 0.1
Open source engineering - 0.1YoungSu Son
 
xecon-phpfest2014composer
xecon-phpfest2014composerxecon-phpfest2014composer
xecon-phpfest2014composerjhyeon1010
 

Similar a Python 생태계의 이해 (20)

PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
 
18 2 파이썬표준라이브러리
18 2 파이썬표준라이브러리18 2 파이썬표준라이브러리
18 2 파이썬표준라이브러리
 
JetsonTX2 Python
 JetsonTX2 Python  JetsonTX2 Python
JetsonTX2 Python
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
 
2020년 5월 16일 개발 이야기 정리
2020년 5월 16일 개발 이야기 정리2020년 5월 16일 개발 이야기 정리
2020년 5월 16일 개발 이야기 정리
 
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
 
2017 새싹교실 1교시
2017 새싹교실 1교시2017 새싹교실 1교시
2017 새싹교실 1교시
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
 
Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)
 
Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러
 
Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차
 
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영) 파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
 
2020년 10월 24일 개발자 이야기
2020년 10월 24일 개발자 이야기2020년 10월 24일 개발자 이야기
2020년 10월 24일 개발자 이야기
 
제로부터시작하는 Git 두번째 이야기
제로부터시작하는 Git 두번째 이야기제로부터시작하는 Git 두번째 이야기
제로부터시작하는 Git 두번째 이야기
 
파이썬 데이터 분석 (18년)
파이썬 데이터 분석 (18년)파이썬 데이터 분석 (18년)
파이썬 데이터 분석 (18년)
 
Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료
 
파이썬 소개
파이썬 소개 파이썬 소개
파이썬 소개
 
Open source engineering - 0.1
Open source engineering - 0.1Open source engineering - 0.1
Open source engineering - 0.1
 
xecon-phpfest2014composer
xecon-phpfest2014composerxecon-phpfest2014composer
xecon-phpfest2014composer
 
파이썬으로 익히는 딥러닝
파이썬으로 익히는 딥러닝파이썬으로 익히는 딥러닝
파이썬으로 익히는 딥러닝
 

Python 생태계의 이해

  • 1. 파이썬 생태계의 이해 정보기술 시대에 유익한 파이썬 프로그래밍 – 제 6 강 (1) 동양미래대학교 2015.7 최용 <sk8er.choi@gmail.com>
  • 2. 주제 • PEPs (Python Enhancement Proposals) • Python 라이브러리와 PyPI, 패키지 관리자 • Python 언어의 구현체 및 배포본 • Python 라이선스 • Python 커뮤니티
  • 3. 최용 <sk8er.choi@gmail.com> • Workload Automation (Batch Job Scheduling) • BMC Control-M • Python • 왕초보를 위한 Python • The Definitive Guide to Jython 번역 • 예제 중심의 Python • 피겨 스케이터 • 싱글 • 아이스 댄스 https://www.youtube.com/watch?v=oOzPbCPQBHA
  • 5. PEPs (Python Enhancement Proposals) • PEP란? • Python에 대한 설계 문서, 새로운 기능 설명, 기술적인 명세 https://www.python.org/dev/peps/ • PEP의 종류 • Standards Track PEP: 새로운 기능 및 구현에 대한 설명 예: PEP 255 -- Simple Generators • Informational PEP: 설계 문제에 대한 설명, 일반적 지침 예: PEP 20 -- The Zen of Python • Process PEP: Python 언어 외적인 프로세스에 대한 설명, Meta PEP 예: PEP 0001 -- PEP Purpose and Guidelines
  • 6. PEP 1 – PEP Purpose and Guidelines • Python’s BDFL(“Benevolent Dictator for Life”, 관대한 종신 독재자) • Guido van Rossum: Python의 창시자 & 설계 총책임자 • 새로운 PEP에 대한 최종 승인 • 핵심 개발자에게 위임("BDFL-Delegate“) • PEP Editors • PEPs 메일링 리스트 구독 • PEP 점검, 교열, 승인/반송 • PEP 번호와 종류(S, F, I) 부여 • 저장소에 추가 • Champion(Author) • 아이디어 • 논의, 합의 • PEP 작성, 제출 • 개정 https://www.python.org/dev/peps/pep-0001/ http://sk8erchoi.bitbucket.org/peps-korean/pep-0001.html Barry Warsaw, Jeremy Hylton, David Goodger, Nick Coghlan
  • 7. PEP 8 – Style Guide for Python Code • A Foolish Consistency is the Hobgoblin of Little Minds http://en.wikipedia.org/wiki/Self-Reliance 어리석은 '일관성'은 좁은 마음에서 나온 도깨비 같은 것으로, 그릇이 작은 정치가와 철학자, 신학자들이 숭배하는 대상이다. 일관성과 위대한 영혼은 서로 아무 관계도 없다. 일관성을 걱정하는 것은 벽에 비친 자신의 그림자를 걱정하는 것과 같다. 오늘 당신이 생각하는 것을 단호하게 말하라. 그리고 내일은 또 내일 생각하는 것을 단호하게 말하라. 오늘 말하는 것이 어제 말한 것과 모든 면에서 모순된다 해도 괜찮다. '아, 그러면 틀림없이 오해받을 텐데.' 오해받는게 그렇게 나쁜 것인가? 피타고라스는 사람들로부터 오해를 받았다. 소크라테스도, 예수도, 루터도, 코페르니 쿠스도, 갈릴레오도, 뉴턴도 마찬가지다. 인간의 육신에 깃들었던 순수하고 현명한 정신은 모두 세상으로부터 오해를 받았다. 위대한 인물이 된다는 것은 오해를 받는다는 것이다. 자기신뢰 - 랠프 월도 에머슨 http://www.ilwar.com/pen/63815
  • 8. PEP 8 – Style Guide for Python Code • 4개의 스페이스를 들여쓰기의 단위로 사용(탭보다 스페이스가 좋음) • 한 행에는 최대 79글자까지만 넣을 것 • 최상위 수준 함수와 클래스 정의는 두 줄을 띄워서 구분 • UTF-8로 작성 • import 순서 1. 표준 라이브러리 2. 관련이 있는 서드파티 라이브러리 3. 로컬 어플리케이션/자체 라이브러리 • 함수 호출 • 좋음: spam(1) • 나쁨: spam (1) • … https://www.python.org/dev/peps/pep-0008/ http://sk8erchoi.bitbucket.org/peps-korean/pep-0008.html Guido van Rossum <guido at python.org> Barry Warsaw <barry at python.org> Nick Coghlan <ncoghlan at gmail.com>
  • 9. PEP 20 – 파이썬 선(禪) 아름다움이 추함보다 좋다. 명시가 암시보다 좋다. 단순함이 복잡함보다 좋다. 복잡함이 꼬인 것보다 좋다. 수평이 계층보다 좋다. 여유로운 것이 밀집한 것보다 좋다. 가독성은 중요하다. 특별한 경우라는 것은 규칙을 어겨야 할 정도로 특별한 것이 아니다. 허나 실용성은 순수성에 우선한다. 오류 앞에서 절대 침묵하지 말지어다. … https://www.python.org/dev/peps/pep-0020/ http://sk8erchoi.bitbucket.org/peps-korean/pep-0020.html Tim Peters <tim at zope.com>
  • 10. PEP 202 – List Comprehensions • map(), filter(), 중첩 루프 등을 사용하여 리스트를 생성하는 것을 대신할 수 있는 간결한 방법 • Python 2.0에서 도입 >>> [i for i in range(10)] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> [i for i in range(20) if i % 2 == 0] [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] Barry Warsaw <barry at python.org>
  • 11. PEP 205 – Weak References • ARC(Automatic Reference Counting) 방식의 자동 메모리 관리 에서 발생하는 메모리 누수에 대한 해법 • Python에서 약한 참조에 대한 기존의 접근 • Object caches(weak dictionaries) • Reduction of pain from circular references • Dianne Hackborn's vref proposal (1995) • 약한 참조를 생성하는 weakref 모듈을 제안 • Python 2.1에서 구현 Fred L. Drake, Jr. <fdrake at acm.org>
  • 12. PEP 478 – Python 3.5 Release Schedule • 일정 • 3.5.0 alpha 1: February 8, 2015 • 3.5.0 beta 1: May 24, 2015 ("feature freeze": 기능 추가 없음) • 3.5.0 candidate 1: August 9, 2015 • 3.5.0 final: September 13, 2015 • 기능 • PEP 465 , a new matrix multiplication operator • PEP 461 , %-formatting for binary strings • PEP 471 , os.scandir() • PEP 479 , change StopIteration handling inside generators • PEP 441 , improved Python zip application support • … https://www.python.org/dev/peps/pep-0478/ Larry Hastings <larry at hastings.org>
  • 13. PEP 3000 – Python 3000 • Python 3000 = Python 3.0 = Py3K • Python 2.6 코드가 수정 없이 Python 3.0에서 동작할 필요 없음 • Python 2.6과 3.0을 함께 지원할 필요가 있는 프로젝트의 개발 모델 제시 1. Full coverage의 unit test 작성 2. Py3k 경고 모드 3. 테스트. 경고가 뜨지 않을 때까지 수정 4. 2to3 도구를 사용하여 코드 자동 변환(수작업 금지) 5. 3.0에서 테스트 6. 문제가 발견되면 2.6 코드 수정. Step 3으로. 7. 때가 되면 각각의 버전 릴리스 • C 언어로 구현하며, 완전히 새로 작성하기보다는 Python 2 코드 기반 활용 Guido van Rossum <guido at python.org> 05-Apr-2006
  • 15. Python 표준 라이브러리 • 내장 함수 Built-in Functions abs() dict() help() min() setattr() all() dir() hex() next() slice() any() divmod() id() object() sorted() ascii() enumerate() input() oct() staticmethod() bin() eval() int() open() str() bool() exec() isinstance() ord() sum() bytearray() filter() issubclass() pow() super() bytes() float() iter() print() tuple() callable() format() len() property() type() chr() frozenset() list() range() vars() classmethod() getattr() locals() repr() zip() compile() globals() map() reversed() __import__() complex() hasattr() max() round() delattr() hash() memoryview() set() https://docs.python.org/3/library/functions.html
  • 16. Python 표준 라이브러리 • 텍스트 프로세싱: string, re, difflib, … • 데이터 타입: datetime, calendar, collections, array, … • 수 계산 및 수학 관련: numbers, math, random, … • 함수형 프로그래밍: itertools, functools, operator • 데이터 영속성(persistence): pickle, marshal, sqlite3, … • 데이터 압축: zlib, gzip, bz2, … • 암호화: hashlib, hmac • 동시성: threading, multiprocessing, … • 인터넷 데이터 핸들링: email, json, base64, … • 인터넷 프로토콜: webbrowser, urllib, http, imaplib, … • … https://docs.python.org/3/library/
  • 17. PyPI • [피 와이 피 아이] 또는 [치즈샵] • Python 소프트웨어 패키지에 대한 정보를 저장 • 패키지를 릴리스 • 각 패키지는 고유한 이름과 버전을 가짐 • https://pypi.python.org/pypi • 참고 • https://wiki.python.org/moin/CheeseShopTutorial • https://python-packaging-user-guide.readthedocs.org/en/latest/
  • 18. PyPI Topic • Software Development (20788) • Internet (10035) • Utilities (5629) • Scientific/Engineering (4201) • System (3351) • Text Processing (1896) • Database (1381) • Communications (1189) • Multimedia (1317) • Office/Business (1283) • Security (860) • Games/Entertainment (382) • Documentation (403) • Terminals (323) • Education (304) • Text Editors (152) • Artistic Software (105) • Home Automation (114)
  • 19. 설치 도구 • pip: PyPI에 등록된 Python 패키지를 설치 • virtualenv, pyvenv: 애플리케이션의 의존성 문제를 피하기 위해 격리 • pip wheel: 차후의 설치 속도를 높이기 위하여 wheel 배포본의 캐시를 생성 • 통합된 소프트웨어 스택 관리 • buildout: 웹 개발에 특화 • Hashdist • conda: 과학 커뮤니티를 주 대상으로 함
  • 20. PIP (Pip Installs Python) • PIP Python 2.7.9 이상, Python 3.4 이상에 기본으로 포함 • PyPI로부터의 설치를 지원 • 패키지 설치 $ pip install SomePackage # latest version $ pip install SomePackage==1.0.4 # specific version $ pip install 'SomePackage>=1.0.4' # minimum version • 패키지 삭제 $ pip uninstall SomePackage • 설치된 패키지 목록 $ pip list • 패키지 검색 $ pip search "query“ 예: $ pip search hangul https://pip.pypa.io/en/stable/user_guide.html
  • 21. 패키징 도구 • setuptools: 프로젝트를 정의하고 소스 배포본을 생성 • bdist_wheel setuptools: wheel을 생성. 바이너리 익스텐션을 포 함할 경우에 특히 유용함 • twine: 배포본을 PyPI에 업로드
  • 22. Python 언어의 구현체 및 배포본
  • 23. Python 언어의 구현체 및 배포본 • Python • 언어 명세 • ≒ CPython • Jython • PyPy • IronPython
  • 24. CPython • C로 작성 • Python 구현의 레퍼런스 • C언어 확장 기능을 활용 • 버전 • 3.4.3 • 2.7.10
  • 25. SciPy • 수학, 과학, 공학을 위한 배포본 • 다음의 모듈 포함 • NumPy (다차원 배열 패키지) • SciPy Library (과학 컴퓨팅을 위한 기반 라이브러리) • Matplotlib (2D, 3D 플로팅) • IPython (편리한 대화식 콘솔) • Sympy (symbolic mathematics) • Pandas (데이터 구조 및 분석) http://www.scipy.org/
  • 26. Anaconda • 대규모 데이터 처리, 과학 컴퓨팅 • 주요 패키지 포함(NumPy, SciPy, Pandas, IPython, Matplotlib, …) • Python 2 & 3 • 패키지 관리자(conda) • Cpython + conda + packages + α • https://store.continuum.io/cshop/anaconda/ • 8강에서 다룸
  • 27. Jython • Java 가상 머신에서 동작 • Java로 작성된 클래스 활용 • Jython 2.7.0 릴리스(2015년 5월) • http://www.jython.org/ • 10강에서 다룸
  • 28. IronPython • .NET 프레임워크와 통합된 Python 구현 • .NET 프레임워크와 Python 라이브러리를 사용할 수 있음 • 비주얼 스튜디오에서 사용할 수 있는 Python Tools http://ironpython.net/tools/ • Python 2.7
  • 29. PyPy [파이파이] 1. Rpython 언어로 동적 언어의 인터프리터를 구현할 수 있게 해주는 프레임워크 2. RPython으로 구현된 Python http://blog.dahlia.kr/post/5124874464 Just-in-Time compilation (dynamic translation) • 프로그램을 실행하는 도중에 컴파일 • ahead-of-time compilation (AOT)과 interpretation을 결합 http://en.wikipedia.org/wiki/Just-in-time_compilation Rpython • RPython은 Python의 제한적인(restricted) 부분집합 • 언어의 명세와 구현을 분리 • Just-in-Time 컴파일러를 자동으로 생성
  • 30. PyPy • 속도 향상 • 메모리 적게 사용 • 호환성 “CPython에서 돌아가던 것이 PyPy에서 안 돌아가면 PyPy의 버그다” • Stackless 모드 • 버전 • PyPy 2.6.0 (Python 2.7 호환) • PyPy3 2.4.0 (Python 3.2.5 호환) http://pypy.org/ http://speed.pypy.org/
  • 32. Open Source Software의 라이선스 • 공통적 준수 사항 • 저작권 관련 문구 유지 • 제품명 중복 방지 • 서로 다른 라이선스를 혼용할 때에는 호환성을 확인 • 라이선스에 따라 차이가 있는 사항 • 사용 여부 명시 • 소스코드 공개 • 특허 관련 조항 오픈 소스 SW 라이선스 가이드 http://korea.gnu.org/people/chsong/copyleft/osswlg.pdf
  • 33. Python의 라이선스 • Python 역사와 라이선스 https://docs.python.org/3/license.html • PSF (Python Software Foundation) 라이선스 • Python 2.1 이상에 적용 • https://wiki.python.org/moin/PythonSoftwareFoundationLicenseFaq • GPL 호환 라이선스 • Python을 GPL 하에서 배포된 다른 소프트웨어와 조합해 쓸 수 있다 Python이 GPL 하에서 배포된다는 뜻은 아니다 • 모든 Python 라이선스는 GPL과 다르게, 변경사항을 오픈 소스로 공개 하지 않고도 변조된 버전을 배포해도 된다
  • 34. PyPI의 주요 라이선스 • OSI Approved (38416) • PSF License (447) • CNRI Python License (48) • MIT License (11967) • BSD License (11240) • Apache Software License (3375) • GPLv3 (1387) • LGPL (1205) • Zope Public License (982) • Public … (459) • Free … (379) • Other/Proprietary (281) • Database (24) • Internet (56) • Scientific/Engineering (72) • Software Development (109) • System (97) • Utilities (101) https://pypi.python.org/pypi?%3Aaction=browse
  • 36. Python 커뮤니티, 소식 • 한국의 Python 사용자 그룹 • https://www.facebook.com/groups/pythonkorea/ • https://www.facebook.com/pyladieseoul • https://www.djangogirls.org/seoul/ • 소식 • http://www.pythonweekly.com/ • http://weeklypythonkr.tumblr.com/
  • 37. PyCon • http://us.pycon.org/2015/schedule/ • YouTube 채널: PyCon 2015 https://www.youtube.com/channel/UCgxzjK6GuOHVKR_08TT4hJQ • Keynote – Jacob Kaplan-Moss https://www.youtube.com/watch?v=hIJdFxYlEKE • 파이콘 한국 (8월말) http://www.pycon.kr/2015/
  • 38. DjangoGirls Seoul • https://www.djangogirls.org/seoul/ • 여성을 위한 무료 프로그래밍 워크샵 • 프로그래밍에 처음인 사람을 대상으로 함 • 10월 2~3일 • 구글 캠퍼스 서울
  • 39. 온라인 Python 강좌 • edx.org • CS For All: Introduction to Computer Science and Python Programming https://www.edx.org/course/cs-all-introduction-computer-science-harveymuddx-cs005x • coursera.org • https://www.coursera.org/course/pythonlearn • codecademy.com • https://www.codecademy.com/en/tracks/python
  • 40. Q & A