관리 메뉴

IT & Life

PYTHON 파이썬이란 무엇입니까? 당신이 알아야 할 모든 것 본문

IT 관련 정보

PYTHON 파이썬이란 무엇입니까? 당신이 알아야 할 모든 것

미운앙마 2017. 11. 4. 15:44

 


파이썬 프로그래밍 언어가 데이터 과학, 기계 학습, 시스템 자동화, 웹 및 API 개발 및 그 이상을 위해 빛나는 이유

 

1991 년에 나온 Python은 비교적 새로운 프로그래밍 언어입니다. 처음부터 파이썬은 갭 필러 (gap-filler)로 여겨졌는데, 파이썬을 배우는 데있어 하나의 유명한 책인 "지루한 것들을 자동화하는"스크립트를 작성하거나 하나 이상의 다른 언어로 구현 될 응용 프로그램을 빠르게 프로토 타입 화하는 방법입니다 .

 

그러나 지난 몇 년 동안 파이썬은 현대 소프트웨어 개발, 인프라 관리 및 데이터 분석 분야에서 일류 시민으로 부상했습니다. 이것은 더 이상 백도어 유틸리티 언어가 아니지만 웹 응용 프로그램 개발 및 시스템 관리에 중요한 역할을하며 대용량 데이터 분석 및 기계 인텔리전스가 폭발적으로 증가한 주요 원인입니다.

 

파이썬의 성공은 초보자와 전문가 모두에게 이점을 제공합니다.

 

파이썬은 배우기 쉽습니다. 언어 자체의 기능의 수는 적기 때문에 첫 프로그램을 제작하는 데 드는 시간과 노력을 거의 들이지 않아도됩니다. 파이썬 구문은 읽기 쉽고 직관적으로 설계되었습니다. 이러한 단순성 덕분에 파이썬은 이상적인 교육 언어가되었으며, 새로 온 사람들이 신속하게이를 익힐 수 있습니다. 개발자는 해결하려는 문제에 대해 생각하는 데 더 많은 시간을 할애하고 언어 복잡성에 대해 생각하거나 다른 사람들이 남긴 코드를 해독하는 데 소요되는 시간을 줄입니다.

 

파이썬은  널리 사용되고 지원됩니다.

 

Python은 Tiobe Index 와 Python을 사용 하는 많은 GitHub 프로젝트 와같은 설문 조사에서 높은 순위를 기록함 에 따라 널리 사용되고 광범위하게 사용됩니다. 파이썬은 모든 주요 운영체제와 플랫폼, 그리고 대부분의 사소한 운영체제에서 실행됩니다. 많은 주요 라이브러리와 API 기반 서비스는 Python 바인딩 또는 래퍼를 가지므로 Python이 이러한 서비스와 자유롭게 인터페이스하거나 해당 라이브러리를 직접 사용할 수 있습니다. 파이썬 은 가장 빠른 언어 는 아니지만 속도면에서 부족한 점은 다재다능합니다.

 

파이썬은 "장난감"언어가 아닙니다.

 

스크립팅과 자동화가 파이썬의 유스 케이스를 많이 포함하고 있지만 파이썬은 독립형 응용 프로그램과 웹 서비스 모두에서 강력하고 전문적인 품질의 소프트웨어를 만드는 데에도 사용됩니다.

 

 

 

파이썬은 무엇을 위해 사용됩니까?

 

파이썬의 가장 기본적인 사용 사례는 스크립팅 및 자동화 언어입니다. 파이썬은 셸 스크립트 나 배치 파일을 대체하는 것이 아니라 웹 브라우저 또는 응용 프로그램 GUI 와의 상호 작용 을 자동화 하거나 Ansible 및 Salt 와 같은 도구에서 시스템 프로비저닝 및 구성 을 자동화 하는 데 사용됩니다 . 그러나 스크립팅과 자동화는 파이썬과 함께 빙산의 일각을 나타낼뿐입니다.

 

파이썬은 일반 응용 프로그램 프로그래밍에 사용됩니다  . CLI 및 크로스 플랫폼 GUI 응용 프로그램 모두를 Python으로 작성하고 자체 포함 실행 파일로 배포 할 수 있습니다. 파이썬에는 스크립트에서 독립 실행 형 바이너리를 생성 할 수있는 기본 기능이 없지만이를 달성하기 위해 cx_Freeze 또는 PyInstaller 와 같은 타사 패키지를사용할 수 있습니다.

 

Python은 과학 및 기계 학습에 사용됩니다. 정교한 데이터 분석은 IT 분야에서 가장 빠른 영역 중 하나이며 파이썬의 스타 유스 케이스 중 하나가되었습니다. 데이터 과학이나 기계 학습에 사용되는 대다수의 라이브러리에는 Python 인터페이스가있어 기계 학습 라이브러리 및 기타 수치 알고리즘에 가장 많이 사용되는 명령 인터페이스입니다.

 

파이썬은 web 서비스와 RESTful API에 사용된다. 파이썬의 네이티브 라이브러리와 타사 웹 프레임 워크는 몇 줄의 코드에서 간단한 REST API부터 데이터 중심의 본격적인 사이트에 이르기까지 모든 것을 빠르고 쉽게 만들 수있는 방법을 제공합니다. Python의 최신 버전은 비동기 작업을 강력하게 지원하므로 사이트에서 적합한 라이브러리를 사용하여초당최대수만 건의 요청을 처리 할 수 ​​있습니다.

 

파이썬은 프로그래밍에 사용됩니다 . 파이썬에서는 언어의 모든 것이 파이썬 모듈과 라이브러리를 포함한 객체입니다. 이를 통해 Python은 매우 효율적인 코드 생성기로 작동하여 자신의 함수를 조작하는 응용 프로그램을 작성하고 다른 언어로는 어렵거나 불가능한 종류의 확장 성을 가질 수 있습니다.

파이썬은 코드 코드로 사용됩니다 . 파이썬은 종종 "접착제 언어 (glue language)"로 묘사됩니다. 즉, 서로 다른 코드 (일반적으로 C 언어 인터페이스가있는 라이브러리)를 상호 운용 할 수 있습니다. 데이터 과학 및 기계 학습에서의 사용은 이러한 맥락에서 이루어 지지만, 이는 일반적인 아이디어의 유일한 화신입니다.

 

 

또한 주목할 가치가있는 일은 파이썬이 적합 하지 않은 종류이다 . 파이썬은 고급 언어이므로 시스템 레벨 프로그래밍에는 적합하지 않습니다. 디바이스 드라이버 나 OS 커널은 곧바로 사용할 수 있습니다. 또한 플랫폼 간 독립 실행 형 바이너리 를 요구하는 상황에 이상적이지 않습니다 . Windows, Mac 및 Linux 용 독립 실행 형 Python 응용 프로그램을 만들 수 있지만 우아하게 또는 간단하게 만들 수는 없습니다. 마지막으로 Python은 속도가 애플리케이션의 모든 측면에서 절대적인 우선 순위 일 때 최고의 선택이 아닙니다. C / C ++ 나 그 다른 언어로 더 나아질 수 있습니다.

 

 

 

파이썬 언어의 장단점

 

파이썬 구문은 읽기 쉽고 깔끔하고 작은 허위로 만들어졌습니다. Python 3.x의 표준 "hello world"는 다음과 같은 것 이상입니다.

print ( " Hello world !")
파이썬은 많은 공통 프로그램 흐름을 간결하게 표현할 수있는 많은 구문 요소를 제공합니다. 텍스트 파일에서리스트 객체로 행을 읽어들이는 과정에서 끝나는 개행 문자의 각 행을 제거하는 예제 프로그램을 생각 해보자.

함께 열기 ( ' 은 myfile . TXT ') 로서 my_file :      file_lines = [ X . my_file의 x 에 대해 strip ( ' \ n ') ]
 
with/as구조는 코드 블록에 대한 소정의 객체를 생성 한 다음 그 블록의 외부에 폐기하는 효율적인 방법을 제공하는 "콘텍스트 관리자"이다. 이 경우 문제의 객체 my_file는 open() 함수로 인스턴스화됩니다 . 이것은 여러 줄의 상용구를 대신하여 파일을 열고 개별 줄을 읽은 다음 닫습니다.

[x … for x in my_file]건설은 또 다른 파이썬 특질의는 "지능형리스트."그것은 다른 항목이 포함 된 특정 항목 (여기를 허용 my_file하고 포함 된 라인)을 통해 반복되는, 각 반복 요소 (즉 각입니다 수 있도록 x수를) 처리되고 자동으로 목록에 추가됩니다.

 

당신은 수있는 형식으로 그런 일을 쓰기 for… 다른 언어에서와 마찬가지로 많은, 파이썬에서 루프. 요점은 파이썬이 여러 객체를 반복하고 루프의 각 요소에 대해 간단한 작업을 수행하거나 명시 적 인스턴스화 및 처리가 필요한 작업을 수행하는 루프와 같은 것을 경제적으로 표현할 수있는 방법이 있다는 것입니다. 이와 같은 구성으로 파이썬 개발자는 간결함과 가독성을 균형있게 조정할 수 있습니다.

 

Python의 다른 언어 기능은 일반적인 사용 사례를 보완하기위한 것입니다. 대부분의 최신 객체 유형 (예 : 유니 코드 문자열)은 언어에 직접 작성됩니다. 목록, 사전 (즉, 해시 맵), 튜플 (불변 인 객체 컬렉션 저장 용) 및 세트 (고유 객체 컬렉션 저장 용)와 같은 데이터 구조는 표준 발행 항목으로 사용할 수 있습니다.

 

C #, Java 및 Go와 마찬가지로 Python에는 가비지 수집 메모리 관리가 있습니다. 즉, 프로그래머는 객체를 추적하고 릴리스하는 코드를 구현할 필요가 없습니다. 일반적으로 가비지 콜렉션은 백그라운드에서 자동으로 발생하지만 성능상의 문제가있는 경우 수동으로 트리거하거나 완전히 비활성화 할 수 있습니다 .

 

파이썬의 중요한 측면은 역 동성 입니다. 함수 및 모듈 자체를 포함하여 언어의 모든 것이 객체로 처리됩니다. 이것은 속도를 희생 시키지만 (아래에서 더 자세히 설명 하겠지만) 상위 수준의 코드를 작성하는 것이 훨씬 쉽습니다. 개발자는 단지 몇 가지 지침만으로 복잡한 객체 조작을 수행 할 수 있으며 필요한 경우 응용 프로그램의 일부분을 추상화로 처리 할 수도 있습니다.

 

Python의 중요한 공백 사용은 Python의 가장 좋은 특성과 최악의 특성 중 하나로 인용되었습니다. 위에 표시된 두 번째 줄의 들여 쓰기는 가독성을위한 것만이 아닙니다. 그것은 파이썬 구문의 일부입니다. 파이썬 해석기는 제어 흐름을 나타 내기 위해 적절한 들여 쓰기를 사용하지 않는 프로그램을 거부합니다.

 

구문상의 공백으로 인해 코가 주름을 잡을 수 있으며, 어떤 사람들은 파이썬을 거부합니다. 하지만 엄격한 들여 쓰기 규칙은 코드 편집기가 극소수 인 경우에도 이론적으로 보일 수있는 것보다 실제로 눈에 띄지 않으며 최종 결과는보다 명확하고 읽기 쉬운 코드입니다.

특히 C 나 Java와 같은 언어에서 오는 사람들에게는 또 다른 잠재적 인 단점이 있습니다. Python이 변수 타이핑을 처리하는 방법입니다. 기본적으로 파이썬은 동적 또는 "duck"타이핑을 사용합니다. 빠른 코딩에는 좋지만 큰 코드베이스에서는 문제가 될 수 있습니다. 즉, Python은 최근 선택적 컴파일 타임 힌트에 대한 지원을 추가 했기 때문에 정적 타이핑의 이점을 누릴 수있는 프로젝트에서 사용할 수 있습니다.

 

 

 

파이썬 2 대 파이썬 3

 

파이썬은 두 가지 버전으로 제공됩니다.이 버전은 많은 새로운 사용자를 끌어 들이기에 충분합니다. 구형 "레거시"계열 인 Python 2.x는 2020 년까지 계속 지원 (예 : 공식 업데이트 수신) 될 것이며, 그 이후에도 비공식적으로 지속될 수 있습니다. Python 3.x는 언어의 현재와 미래의 화신으로, 2.x에서 발견되지 않은 많은 유용하고 중요한 기능 (예 : 더 나은 동시성 제어 및보다 효율적인 해석기)을 가지고 있습니다.

타사 라이브러리 지원이 상대적으로 부족하여 Python 3 채택이 가장 오랜 시간 지연되었습니다. 많은 Python 라이브러리는 Python 2 만 지원하므로 전환하기가 어렵습니다. 그러나 지난 2 년 동안 파이썬 2만을 지원하는 라이브러리의 수는 줄어들었다. 대부분이 두 버전 모두와 호환 됩니다. 오늘날 파이썬 3을 사용하는 데는 몇 가지 이유가 있습니다.

 

 

 

파이썬 : "배터리 포함"경험

 

파이썬의 성공은 제 1 자 및 제 3 자 소프트웨어의 풍부한 생태계에 달려 있습니다. 파이썬은 견고한 표준 라이브러리와 타사 개발자가 쉽게 구하고 쉽게 사용할 수있는 라이브러리를 제공합니다. 파이썬은 수십 년 동안의 확장과 기여로 더욱 풍성 해졌습니다.

Python의 표준 라이브러리는 수학, 문자열 처리, 파일 및 디렉토리 액세스, 네트워킹, 비동기 작업, 스레딩, 다중 프로세스 관리 등과 같은 일반적인 프로그래밍 작업을위한 모듈을 제공합니다. 또한 JSON 및 XML과 같은 구조화 된 파일 형식 읽기 및 쓰기, 압축 파일 조작, 인터넷 프로토콜 및 데이터 형식 (웹 페이지, URL, 전자 메일) 작업을 포함하여 최신 응용 프로그램에 필요한 일반적인 고수준 프로그래밍 작업을 관리하는 모듈도 포함되어 있습니다. C 호환 외부 함수 인터페이스를 노출하는 대부분의 외부 코드는 Python의 ctypes 모듈을 통해 액세스 할 수 있습니다. 기본 Python 배포판은 Tkinter를 통한 기초적이고 유용한 플랫폼 간 GUI 라이브러리와 SQLite 3 데이터베이스의 내장 복사본을 제공합니다.

Python Package Index (PyPI)를 통해 제공되는 수천 개의 타사 라이브러리는 Python의 인기와 다양성을 보여주는 가장 강력한 쇼케이스입니다. BeautifulSoup로의 라이브러리는 그것에서 HTML 및 추출 데이터를 HTML, 심지어 까다로운, 깨진 긁어위한 올인원 도구 상자를 제공합니다. Flask 및 Django와 같은 프레임 워크 는 단순 및 고급 유스 케이스 모두를 포괄하는 웹 서비스의 신속한 개발을 가능하게합니다. Apache Libcloud를 통해 Python의 객체 모델을 통해 여러 클라우드 서비스를 관리 할 수 ​​있습니다 . NumPy , Pandas 및 Matplotlib 은 수학 및 통계 작업을 가속화하고 데이터의 시각화를 쉽게 만듭니다.

 

 

모든 사람들을위한 파이썬 배포판

 

Python을 얻는 가장 간단한 방법 은 언어 작성자 인 Python Software Foundation에서 플랫폼 용 릴리스를 다운로드하는 것입니다. 이 에디션이 호출되는 CPython은 모든 주요 Linux 배포판 및 MacOS에서 스톡 파이썬 런타임으로 사용됩니다. 즉, 다른 특정 Python 배포판이 특정 사용자에게 서비스를 제공하기 위해 존재한다는 것입니다.

 

엔터프라이즈 개발자 용 Python. ActiveState는 자체 Python 배포본 인 ActivePython 을 ActiveState의 자체 Komodo IDE와 같은 풍부한 개발 도구 세트와 지원을 원하는 엔터프라이즈 사용자에게 제공합니다.

 

데이터 과학자를 위한 Python  . 아나콘다 배포 연속체 분석에 의해 생성은 기계 학습 및 데이터 논쟁에 대한 일반적인 도서관의 회전이 포함되어 있습니다. 이러한 라이브러리를 손으로 설치하는 것은 특히 Windows에서 까다로울 수 있습니다. Anaconda는 문제를 해결하고 최신 정보를 유지하고 다른 라이브러리를 같은 맥락에 설치하는 메커니즘을 제공합니다. Intel의 사용자 정의 수학 가속 확장 기능을 사용하는 Anaconda의 재 포장 인 Python 용 Intel Distribution을 참조하십시오.

 

 속도가 필요한 개발자 를 위한 Python . PyPy 는 Just-In-Time 컴파일을 통해 Python 응용 프로그램을 가속화합니다. 재 작성없이 기존 Python 응용 프로그램을 증폭시키는 편리한 방법입니다. PyPy의 가장 큰 한계는 외부 C 라이브러리를 사용하지 않는 Python 애플 리케이션에서 가장 잘 작동한다는 것입니다. 그러나 개발 팀은이 문제를 해결해 왔습니다.

 

.Net 및 Java 개발자를 위한 Python  . IronPython 및 Jython 은 .Net 및 Java Virtual Machine 런타임을 실행하는 Python 버전이 각각 존재합니다. 둘 다 파이썬이 각각의 런타임에서 다른 언어와 상호 운용 할 수있게 해줍니다. IronPython 앱이 .Net 클래스와 상호 운용 될 수 있습니다. 자이 썬 개발은 지난 몇 년 동안 크게 움직이지 않았지만, IronPython에 대한 작업은 새로운 개발 팀과 함께 재 활성화되었습니다.

파이썬이 너무 느린가요?

 

파이썬에 관한 하나의 공통주의 사항은 느리다는 것입니다. 객관적으로 사실입니다. 파이썬 프로그램은 일반적으로 C / C ++ 또는 Java에서 해당 프로그램보다 훨씬 느리게 실행됩니다. 일부 Python 프로그램은 몇 배 이상 느려질 것입니다.

왜 그렇게 느린가요? 대부분의 파이썬 런타임은 컴파일러가 아닌 인터프리터이기 때문 만은 아닙니다. 이 때문에 고유의 역동 성과 파이썬에서 객체의 전성이 어려운이 경우에도 속도의 언어를 최적화 할 수 있도록한다는 사실도 있다 컴파일. 즉, 파이썬의 속도는 문제가 아닌 것처럼 보일 수도 있고, 완화시키는 방법도 있습니다.

 

파이썬에는 속도 최적화를위한 많은 경로가 있습니다.

 

영원히 느린 느린 파이썬 프로그램의 운명이 항상 그런 것은 아닙니다. 많은 Python 프로그램은 Python이나 표준 라이브러리에있는 기능을 제대로 활용하지 못하기 때문에 속도가 느립니다. 수학 및 통계 작업은 NumPy 및 Pandas와 같은 라이브러리를 통해 엄청나게 향상 될 수 있으며, PyPy 런타임은 많은 Python 응용 프로그램에 대해 몇 배의 속도 향상을 제공 할 수 있습니다.

소프트웨어 개발의 공통된 견해는 프로그램 활동의 90 %가 코드의 10 %를 차지하는 경향이 있으므로 10 %를 최적화하면 큰 개선이있을 수 있다는 것입니다. 파이썬을 사용하면 Cython 이나 Numba 와 같은 프로젝트를 통해 10 %를 C 또는 어셈블리로 선택적으로 변환 할 수 있습니다 . 최종 결과는 종종 C로 완전히 작성된 상대방의 눈에 띄는 거리 내에서 실행되는 프로그램이지만 C의 메모리 관리 세부 사항에 쌓여 있지 않습니다.

파이썬에서 개발자 시간은 일반적으로 기계 시간보다 훨씬 더 중요합니다. 또는 다른 방법으로 말하자면 : 많은 작업에서 개발 속도가 실행 속도보다 빠릅니다 .

 

 

주어진 파이썬 프로그램은 다른 언어로 실행되는 데 6 초 정도 걸릴 수 있습니다. 그러나 개발자가 Python 프로그램을 함께 사용하는 데는 단 10 분이 걸리지 만 다른 언어에서는 1 시간 이상 개발 시간이 소요될 수 있습니다. 파이썬 프로그램의 실행에서 잃어버린 시간은 개발 프로세스에서 절약 된 시간보다 더 많이 걸린다.

 

트레이딩 애플리케이션과 같이 처리량이 높지 않고 동시성이 낮은 소프트웨어를 작성하는 경우 분명히 사실이 아닙니다. 그러나 시스템 관리에서 기계 학습에 이르기까지 많은 실제 응용 프로그램에서 파이썬은 부자가 될 수 있으며 충분히 빠르게 일할 수 있습니다. 그리고 파이썬이 가능하게하는 유연성과 개발 속도는 다른 언어로 구현하기가 더 어렵고 시간이 많이 걸리는 혁신을 가능하게합니다.

 

개발 속도와 프로그래머의 안락함이 기계 시계에서 수 초간 면도하는 것보다 더 중요 할 때, Python이이 작업을위한 최상의 도구 일 수 있습니다.

Comments