필요하다고 생각하는 것은 거의 다 존재하는... 정말 다양하고 멋진 패키지들이 있기 때문이다.
그런 패키지들은 어디에 저장이 되어있을까?!
▶ PyPI (Python Package Index)
- repository of software for the Python programming language - Python package: collection of related code modules (files) bundled with metadata describing how the package should be installed and used.
https://pypi.org/
▶ pip (package installer for Python)
- standard tool to install packages from PyPI - The most popular tool for installing Python packages
https://pip.pypa.io/en/stable/
Python을 공부하면 알 수 밖에 없는 명령어가 바로 pip 이다.
Python을 설치하면 기본적으로 같이 설치되기 때문에 접근성에 있어서도 문제가 없다.
그래서 가끔 파이썬 패키지는 무조건 pip를 통해서만 설치해야 하는 줄 아는 사람도 있는데,
- 1990년대 후반 CNRI에 있던 Barry Warsaw(배리 워쇼우)가 많은 제안들을 Guido가 살펴볼 수 있도록 프로세스 도입 - RFC(Request for Comments, 인터넷 기술 및 표준에 관한 문서) 프로세스를 참조하여 (제안 → 토론 → 결론) 체계 수립
다양하게 파생된 '-EP' 문서들
▶ PEP 0 - Index of Python Enhancement Proposals (PEPs)
- PEPs로 알려진 모든 PEP 목록을 살펴볼 수 있게 제공해준다. - 다양한 기준으로 PEP 목록을 제공해준다.
▶ PEP 8 – Style Guide for Python Code
- 파이썬 답게 코드를 작성하기 (Pythonic Code)
- PEP 중에서 가장 유명하고, 필독해야 하는 문서
- 들여쓰기는 4개의 공백(space)을 사용해야 한다는 것과 같은 코드 스타일 가이드 이다.
▶ PEP 572 – Assignment Expressions
- Guido를 독재자에서 사임하게 만들었던 문제의 그 PEP
- 일명 바다코끼리 연산자(walrus operator) ":=" 도입 . 할당 표현식(assignment expression) . Python 3.8에 포함
- Guido가 제안한 내용이고 도입을 하자는 입장이었고, 커뮤니티는 파이썬 답지 않고, 간결성을 해친다며 반대
- 결국은 승인되어 파이썬 3.8에 도입되었지만, Guido는 BDFL 모델을 내려놓게 되었고
이후 "The Steering Council Model"을 통해 의사결정 하기로 함 (PEP 8016)
▶ PEP 20 – The Zen of Python
- 파이썬의 선 (파이썬이 추구하는 철학)
아름다운 것이 못생긴 것보다 좋습니다. 명시적인 것이 암시적인 것보다 좋습니다. 단순한 것이 복잡한 것보다 좋습니다. 복합적인 것이 복잡한 것보다 좋습니다. 납작한 것이 중첩된 것보다 좋습니다. 흩뿌려진 것이 모인 것보다 좋습니다. 가독성은 중요합니다. 특별한 상황이, 규칙을 깰 만큼 특별하단 얘기는 아닙니다. 실용성이 순수함을 이길 때까지는 말이죠. 에러는 조용히 넘어가서는 안됩니다. 명시적으로 조용히 만들지 않는 한. 모호한 상황이라면, 추측하려 하지 마세요. 문제를 풀 수 있는 (바람직하고 유일한) 분명한 방법이 있어야 합니다. 하지만 네덜란드 인이 아닌 이상 처음에는 분명하지 않을 수 있습니다. 지금 하는 게 하지 않는 것보단 좋습니다. 하지만 지금 당장 하는 것보다 안 하는 게 나을 때도 있습니다. 구현 방식이 설명하기 어렵다면, 그것은 좋지 않은 생각입니다. 구현 방식이 설명하기 쉽다면, 그것은 아마 좋은 생각일 겁니다. Namespaces는 쩌는 생각입니다. 더욱 이런 것들을 해봅시다!
- 1970 ~ 1980년대에 배우기 쉽고, 사용하기 쉬운 언어를 만들기 위해 개발된 프로그래밍 언어 (BASIC 언어 대체로 고안) - CWI(Centrum voor Wiskunde en Informatica, 네덜란드 국가 수학 및 컴퓨터 과학 연구소)의 프로젝트로 진행 - Leo Geurts(레오 회르츠), Lambert Meertens(람베르트 메르텐스) 및 Steven Pemberton(스티븐 펨버턴) 주도 - Guido van Rossum(귀도 반 로섬)이 1980년대초 구현자로써 참여함
생김새를 보면 정말 뭔가 상당히 친숙하다
▶ Python Created
- Guido van Rossum(귀도 반 로섬)은 1986년 CWI에서 Amoeba(아메바)라는 분산 운영체제 프로젝트로 부서 이동 - 1989년 예외 처리 및 확장에 강점을 갖는 ABC 언어와 비슷한 스크립팅 언어 개발 착수 - 1991년 2월, 유즈넷에 공개 (그 전에는 Amoeba 프로젝트에 적용하면서 계속 개발)
진짜 개발자가 명품을 만드는 것은, 보통 휴가 때 이루어지곤 한다 … (뭔가 현타가....)
▶ Guido Van Rossum
- 파이썬의 아버지이자 엄마, 시조새, 창조자, 신 !!!
- CWI, NIST, CNRI 같은 여러 연구 기관에서 근무 - 2000년 5월 기술 스타트업 BeOpen.com → 10월 파산 - 2000년 말 ~ 2003년 Zope Corporation 근무 (파이썬 기반 웹 어플 서버/커뮤니티) - 2003년 ~ 2005년 Elemental Security (회사 맞춤형 프로그래밍 언어 개발) - 2005년 ~ 2012년 Google (50% 파이썬 언어 개발, 사내 개발 도구 개발) - 2013년 ~ 2019년 DropBox (클라우드 스토리지) - 은퇴 선언 → 은퇴 번복 - 2020년 ~ Microsoft 개발 부서, 현재 명예 엔지니어 직책
2006년 OSCON
2024년 PyCon
▶ MISC
- Python 어원: Monty Python's Flying Circus(몬티 파이튼의 비행 서커스) . BBC에서 1969년~1974년 방영된 스케치 코미디 TV 쇼 . Monty Python: 영국 코미디 그룹으로 TV쇼 및 영화, 극장 공연 등 다양한 활동 - 자비로운 종신독재자(BDFL, Benevolent Dictator for Life) . 커뮤니티 논쟁이 있을 때 최종 결론을 내려줄 수 있는 역할로 소수의 오픈소스 개발 리더에게 부여 . 1995년 Python 창시자 Guido Van Rossum 호칭으로 처음 사용됨 . 2018년 7월 12일 BDFL에서 사임한다고 Guido Van Rossum이 선언 → PEP(Python Enhancement Proposal) 572 개선 제안 논란 이슈로 사임
- Custom Recipe Generator(맞춤형 레시피 생성기): Create an AI-powered tool that generates unique recipes based on available ingredients. You’ll use variables, f-strings, and AI prompts to craft personalized culinary creations.
- Smart To-Do List(스마트 할 일 목록): Build an intelligent task manager that not only stores your to-do items but also prioritizes them using AI. You’ll apply your knowledge of lists, dictionaries, and decision-making code to enhance productivity.
- Travel Blog Analyzer(여행 블로그 분석기): Develop a program that reads travel blog entries and uses AI to extract key information like restaurant names and popular dishes. This exercise showcases your ability to work with files and leverage AI for text analysis.
- Dream Vacation Planner(꿈의 여행 일정 설계자): Create a sophisticated itinerary generator that takes a multi-city trip plan and uses AI to suggest daily activities, including restaurant recommendations. You’ll work with CSV files, dictionaries, and AI prompts to build this comprehensive travel tool.
- Data Visualization Project(데이터 시각화 프로젝트): Using popular Python libraries like matplotlib, you’ll create visual representations of data. This could involve plotting price trends of used cars or visualizing travel statistics from your vacation planner.
- Web Data Extraction(웹 데이터 추출): Use the BeautifulSoup library to scrape web pages and extract useful information, opening up a world of data for your projects.
- Real-time Data Application(실시간 데이터 응용 프로그램): Build a program that interacts with web APIs to fetch and process real-time data, such as current weather information or live currency exchange rates.