KDT 과정을 수강하며 그날 배운 내용의 확인과 복습을 위해 꾸준히 글을 써보려고 한다.
사전적인 지식보단 알기 쉽게 풀어놓은 내용으로 구성하고자 한다.
DAY 1 2023.03.03
1.파이썬이란?
하나의 프로그래밍 언어이다. 학습용 프로그래밍 언어로써 시작되었다. 다른 언어의 비해 간결하고
직관적인 언어로써 난이도가 쉬워 입문자용 언어로 추천된다. 인터프리터식 언어이다.
인터프리터란 프로그램 언어의 소스코드를 바로 실행하는 컴퓨터 프로그램을 말한다.
더쉽게 풀어 설명하면 보통 우리가 코드란것을 작성하면 컴파일러가 이를 통째로 기계어로 번역하고 실행한다.
그렇지만 인터프리터 언어는 컴파일러를 거치지 않고 한줄한줄 실행시킨다.
※컴파일러: 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 언어 번역 프로그램을 말한다.
이로 인해 파생되는 장점과 단점은 밑에 설명하겠다.
2.파이썬을 선택한 이유?
장점
● 오픈소스
오픈소스이기에 다양한 라이브러리가 존재하여 가져다 쓸 수 있는 소스가 많다.
이는 개발속도를 빠르게 해주고 안정적인 프로그램을 만들기 용이하다.
●배우기가 쉽다.
다른언어에 비해 난이도가 쉬워 다양한 사람들이 개발의 참여할 수있다.
이는 다양한 라이브러리가 존재하는 이유중 하나이다. 많은 사람들의 참여로 인해 다양한 라이브러리가 존재하고
활용할 수 있는 소스코드가 많다. 위에 설명했던 인터프리터식 언어의 특성으로 한줄 한줄 코드를 실행하여 확인 할 수 있어 교육의 이점이 있다.
※라이브러리: 주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다. 여기에는 구성 데이터, 문서 , 도움말자료, 메시지 틀, 미리 작정된 코드 등이 있다.
쉽게 생각하면 이미 다른사람들이 만들어놓은 메뉴얼 혹은 도구라고 생각하면 편하다.
라이브러리가 많은것은 파이썬의 강점중 하나이다. 많은 사람들이 만들어 놓은 라이브러리는 굉장히 방대하다. 만들어진 라이브러리를 잘 활용하는 것도 개발자의 역량이라 할 수 있다.
단점
●속도가 떨어진다.
다른언어의 비해 속도가 떨어진다. 이는 위에 설명했던 인터프리터식 언어이기 때문이다. 코드를 통째로 처리하는 컴파일러 방식과 다르게 한줄한줄 실행시키기 때문이다. 또한 오류 발생시 오류가 나기전 까지 실행하고 오류값을 리턴하기 때문에 속도가 타 언어에 비해 떨어진다. 컴파일러를 사용하면 기계어로 번역하기 전에 오류값을 리턴한다. 그러나 최근 지속된 최적화와 업데이트로 인해 개선되고 있는 중이다.
3.다양한 분야에서 활용
파이썬은 다양한 분야에서 활용된다.
1. 웹서버(웹사이트 개발)
2. 크롤링
3. 업무자동화
4. 데이터분석
5. 인공지능
6. 게임제작
4.가상환경이란
가상환경은 독립적인 파이썬 실행 환경을 의미합니다. 각각의 가상 환경은 다른 환경에 영향을 미치지 않습니다.
다른 환경과 독립적인 부분인 부분이 중요하다. 이는 서로 다른 버전의 언어와 패키지를 가질 수 있음을 의미한다.
5.가상환경을 사용하는 이유
위에 라이브러리를 설명하며 다양한 라이브러리를 끌어다 쓰는 것을 설명했다. 그러나 파이썬 언어도 꾸준한 업데이트를 거친다. 그렇다면 다른 버전에서 만들어진 라이브러리를 중구난방 사용하면 어덯게 될까. 서로 충돌이나 오류가 발생할 수있다. 이를 방지하기 위해 프로젝트마다 격리된 환경 즉 각각의 가상환경을 생성해줌으로써 프로젝트별로 패키지를 관리 할 수 있다.
6.venv
venv는 가상환경을 만들고 관리하는 데 사용되는 모듈이다. 가상환경을 만드는 하나의 방법이다. 이에 앞써 예전부터 가상환경을 생성할때 아나콘다를 많이 사용하였다. 그러나 이는 프로그램 자체가 무겁고 버그가 많다. 모든 프로그램을 자신에게 끌어가고 윈도우 환경을 파괴하기도 한다. 그런이유로 현업에서는 아나콘다를 선호하지 않는다.
venv란 파이썬에 있는 하나의 라이브러리로 별도 설치없이 바로 가상 환경 구성이 가능한 이점이 있다.
오늘 배운 KDT 의 내용을 정리하여 보았다. 앞으로 꾸준히 블로깅을 하고자 한다.
'코딩공부 > 파이썬(Python)' 카테고리의 다른 글
| Python_반복문(while) (0) | 2023.03.23 |
|---|---|
| Python_제어문(if) (0) | 2023.03.23 |
| Python_자료구조(dictionary,set) (1) | 2023.03.23 |
| Python_tuple(튜플) (2) | 2023.03.23 |
| Python_input,index(인덱싱),slicing(슬라이싱) (1) | 2023.03.23 |