파이썬이란 무엇입니까? 강력하고 직관적 인 프로그래밍

1991 년부터 시작된 Python 프로그래밍 언어는 "지루한 작업을 자동화"하는 스크립트를 작성하거나 (Python 학습에 대한 인기있는 책에서 언급했듯이) 다른 언어로 구현 될 응용 프로그램의 프로토 타입을 빠르게 작성하는 방법 인 갭 필러로 간주되었습니다. .

그러나 지난 몇 년 동안 Python은 현대 소프트웨어 개발, 인프라 관리 및 데이터 분석 분야에서 일류 시민으로 부상했습니다. 더 이상 백룸 유틸리티 언어가 아니라 웹 애플리케이션 생성 및 시스템 관리의 주요 원동력이자 빅 데이터 분석 및 머신 인텔리전스 폭발의 주요 동인입니다.

관련 비디오 : Python이 프로그래밍을 더 쉽게 만드는 방법

IT에 완벽한 Python은 시스템 자동화에서 기계 학습과 같은 최첨단 분야에서의 작업에 이르기까지 다양한 종류의 작업을 단순화합니다.

Python의 주요 장점 

Python의 성공은 초보자와 전문가 모두에게 제공하는 몇 가지 이점을 중심으로 이루어집니다.

Python은 배우고 사용하기 쉽습니다.

언어 자체의 기능 수는 적기 때문에 첫 프로그램을 제작하는 데 상대적으로 적은 시간이나 노력을 투자해야합니다. Python 구문은 읽기 쉽고 간단하도록 설계되었습니다. 이러한 단순함은 Python을 이상적인 교육 언어로 만들고 초보자가 빠르게 배울 수있게합니다. 결과적으로 개발자는 해결하려는 문제에 대해 생각하는 데 더 많은 시간을 할애하고 언어 복잡성이나 다른 사람이 남긴 코드를 해독하는 데 드는 시간을 줄입니다.

Python은 광범위하게 채택되고 지원됩니다.

Python은 Tiobe Index와 같은 설문 조사 및 Python을 사용하는 많은 GitHub 프로젝트에서 높은 순위를 차지하기 때문에 널리 사용되고 널리 사용됩니다. Python은 모든 주요 운영 체제 및 플랫폼에서 실행되며 대부분의 사소한 운영 체제에서도 실행됩니다. 많은 주요 라이브러리 및 API 기반 서비스에는 Python 바인딩 또는 래퍼가있어 Python이 해당 서비스와 자유롭게 인터페이스하거나 해당 라이브러리를 직접 사용할 수 있습니다. 

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

스크립팅 및 자동화가 Python의 많은 사용 사례를 다루지 만 (나중에 자세히 설명) Python은 독립 실행 형 애플리케이션과 웹 서비스 모두에서 전문가 수준의 소프트웨어를 구축하는데도 사용됩니다. 파이썬이 가장 빠른 언어 는 아닐 수도 있지만 속도가 부족한 것은 다재다능 함을 보완합니다.

파이썬은 계속 발전합니다

Python 언어의 각 개정판은 최신 소프트웨어 개발 관행에 보조를 맞추기 위해 유용한 새 기능을 추가합니다. 예를 들어 비동기 작업과 코 루틴은 이제 언어의 표준 부분이되어 동시 처리를 수행하는 Python 앱을 더 쉽게 작성할 수 있습니다.

Python의 용도

Python의 가장 기본적인 사용 사례는 스크립팅 및 자동화 언어입니다. Python은 셸 스크립트 나 배치 파일의 대체물이 아닙니다. 또한 웹 브라우저 또는 애플리케이션 GUI와의 상호 작용을 자동화하거나 Ansible 및 Salt와 같은 도구에서 시스템 프로비저닝 및 구성을 수행하는 데 사용됩니다. 그러나 스크립팅과 자동화는 Python을 통해 빙산의 일각에 불과합니다.

G 파이썬 eneral 응용 프로그램 프로그래밍

Python을 사용하여 명령 줄 및 플랫폼 간 GUI 애플리케이션을 모두 만들고 자체 포함 된 실행 파일로 배포 할 수 있습니다. Python에는 스크립트에서 독립 실행 형 바이너리를 생성하는 기본 기능이 없지만 cx_Freeze 및 PyInstaller와 같은 타사 패키지를 사용하여이를 수행 할 수 있습니다.

Python을 사용한 데이터 과학 및 기계 학습

정교한 데이터 분석은 IT에서 가장 빠르게 움직이는 영역 중 하나이자 Python의 주요 사용 사례 중 하나가되었습니다. 데이터 과학 또는 기계 학습에 사용되는 대부분의 라이브러리에는 Python 인터페이스가있어 기계 학습 라이브러리 및 기타 수치 알고리즘에 가장 널리 사용되는 고급 명령 인터페이스입니다.

Python의 웹 서비스 및 RESTful API

Python의 기본 라이브러리와 타사 웹 프레임 워크는 몇 줄의 코드로 간단한 REST API에서 완전한 데이터 기반 사이트에 이르기까지 모든 것을 빠르고 편리하게 생성 할 수있는 방법을 제공합니다. Python의 최신 버전은 비동기 작업을 강력하게 지원하므로 사이트에서 적절한 라이브러리로 초당 수만 건의 요청을 처리 할 수 ​​있습니다.

Python에서 메타 프로그래밍 및 코드 생성

Python에서는 Python 모듈 및 라이브러리 자체를 포함하여 언어의 모든 것이 객체입니다. 이를 통해 Python은 매우 효율적인 코드 생성기로 작동하여 자체 함수를 조작하는 애플리케이션을 작성할 수 있으며 다른 언어로는 실행하기 어렵거나 불가능한 확장 성을 가질 수 있습니다.

Python을 사용하여 LLVM과 같은 코드 생성 시스템을 구동하여 다른 언어로 코드를 효율적으로 생성 할 수도 있습니다.

Python의 "글루 코드"

Python은 종종 "접착 언어"로 설명됩니다. 즉, 서로 다른 코드 (일반적으로 C 언어 인터페이스가있는 라이브러리)가 상호 운용 될 수 있습니다. 데이터 과학 및 기계 학습에서의 사용은 이러한 맥락에서 이루어 지지만 이는 일반적인 아이디어의 화신에 불과합니다. 연결하고 싶지만 서로 직접 통신 할 수없는 애플리케이션 또는 프로그램 도메인이있는 경우 Python을 사용하여 연결할 수 있습니다.

파이썬이 부족한 곳

또한 주목할 가치가있는 것은 Python이 적합 하지 않은 종류의 작업 입니다.

Python은 고수준 언어이므로 시스템 수준 프로그래밍에 적합하지 않습니다. 장치 드라이버 나 OS 커널은 불가능합니다.

크로스 플랫폼 독립 실행 형 바이너리가 필요한 상황에도 적합하지 않습니다 . Windows, MacOS 및 Linux 용 독립 실행 형 Python 앱을 빌드 할 수 있지만 우아하거나 간단하지는 않습니다.

마지막으로, 애플리케이션의 모든 측면에서 속도가 절대적인 우선 순위 인 경우 Python은 최선의 선택이 아닙니다. 이를 위해서는 C / C ++ 또는 해당 수준의 다른 언어를 사용하는 것이 좋습니다.

파이썬이 프로그래밍을 간단하게 만드는 방법

파이썬의 구문은 가독성이 높고 깔끔하며 가식이 거의 없습니다. Python 3.x의 표준 "hello world"는 다음과 같습니다.

print (“Hello world!”)

파이썬은 많은 일반적인 프로그램 흐름을 간결하게 표현하기 위해 많은 구문 요소를 제공합니다. 텍스트 파일의 행을 목록 객체로 읽어들이는 과정에서 종료 개행 문자의 각 행을 제거하는 샘플 프로그램을 고려해보십시오.

my_file로 open ( 'myfile.txt') 사용 :

    file_lines = [x.rstrip ( '\ n') for x in my_file]

with/as구조 A는 콘텍스트 관리자 코드 블록에 대한 객체를 인스턴스화하고 있음을 외부 블록 폐기하는 효율적인 방법을 제공한다. 이 경우 객체는 함수로 my_file인스턴스화됩니다 open() . 이것은 파일을 열고 개별 줄을 읽은 다음 닫는 여러 줄의 상용구를 대신합니다.

[x … for x in my_file]건설은 또 다른 파이썬 특질의 인 지능형리스트 . 다른 항목 (여기 my_file및 여기에 포함 된 행) 을 포함하는 항목을 반복 할 수 있으며 각 반복 요소 (즉, 각각 x)를 처리하고 목록에 자동으로 추가 할 수 있습니다.

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

이와 같은 구조를 통해 Python 개발자는 간결함과 가독성의 균형을 맞출 수 있습니다.

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

Python 2 대 Python 3

Python은 두 가지 버전으로 제공되며, 이는 많은 신규 사용자를 끌어 들이기에 충분합니다. 이전 "레거시"브랜치 인 Python 2.x는 2020 년까지 계속 지원 (즉, 공식 업데이트 수신)되며 그 이후에도 비공식적으로 지속될 수 있습니다. 현재와 ​​미래의 언어 인 Python 3.x에는 새로운 구문 기능 (예 : "walrus operator"), 더 나은 동시성 제어 등과 같이 Python 2.x에서 찾을 수없는 많은 유용하고 중요한 기능이 있습니다. 효율적인 통역사.

타사 라이브러리 지원이 상대적으로 부족하여 Python 3 채택이 가장 오래 지연되었습니다. 많은 Python 라이브러리가 Python 2 만 지원하므로 전환하기가 어렵습니다. 하지만 지난 몇 년 동안 Python 2 만 지원하는 라이브러리의 수가 줄어 들었습니다. 가장 인기있는 모든 라이브러리가 이제 Python 2 및 Python 3과 호환됩니다. 오늘날 Python 3은 새로운 프로젝트에 가장 적합한 선택입니다. 선택의 여지가없는 한 Python 2를 선택할 이유가 없습니다. Python 2를 사용하고 있다면 다양한 전략을 사용할 수 있습니다.

Python의 라이브러리

Python의 성공은 자사 및 타사 소프트웨어의 풍부한 생태계에 달려 있습니다. Python은 강력한 표준 라이브러리와 타사 개발자가 쉽게 구하고 쉽게 사용할 수있는 다양한 라이브러리를 모두 활용할 수 있습니다. Python은 수십 년간의 확장과 공헌으로 풍부 해졌습니다.

Python의 표준 라이브러리는 수학, 문자열 처리, 파일 및 디렉터리 액세스, 네트워킹, 비동기 작업, 스레딩, 다중 프로세스 관리 등과 같은 일반적인 프로그래밍 작업을위한 모듈을 제공합니다. 그러나 여기에는 JSON 및 XML과 같은 구조화 된 파일 형식 읽기 및 쓰기, 압축 파일 조작, 인터넷 프로토콜 및 데이터 형식 (웹 페이지, URL, 이메일) 작업 등 최신 애플리케이션에 필요한 일반적인 고급 프로그래밍 작업을 관리하는 모듈도 포함됩니다. C 호환 외부 함수 인터페이스를 노출하는 대부분의 외부 코드는 Python ctypes모듈 로 액세스 할 수 있습니다 .

기본 Python 배포는 Tkinter를 통해 기본이지만 유용한 크로스 플랫폼 GUI 라이브러리와 SQLite 3 데이터베이스의 내장 된 복사본도 제공합니다.

PyPI (Python Package Index)를 통해 사용할 수있는 수천 개의 타사 라이브러리는 Python의 인기와 다양성을 보여주는 가장 강력한 쇼케이스입니다.

예를 들면 :

  • BeautifulSoup 라이브러리는 까다 롭고 깨진 HTML조차도 HTML을 스크랩하고 그로부터 데이터를 추출 할 수있는 올인원 도구 상자를 제공합니다.
  • Requests는 규모에 맞게 HTTP 요청 작업을 쉽고 간단하게 만듭니다.
  • Flask 및 Django와 같은 프레임 워크를 사용하면 간단한 사용 사례와 고급 사용 사례를 모두 포함하는 웹 서비스를 빠르게 개발할 수 있습니다.
  • Apache Libcloud를 사용하여 Python의 개체 모델을 통해 여러 클라우드 서비스를 관리 할 수 ​​있습니다.
  • NumPy, Pandas 및 Matplotlib는 수학 및 통계 작업을 가속화하고 데이터 시각화를 쉽게 만들 수 있습니다.

파이썬의 타협

C #, Java 및 Go와 마찬가지로 Python에는 가비지 수집 메모리 관리 기능이 있습니다. 즉, 프로그래머가 개체를 추적하고 해제하기 위해 코드를 구현할 필요가 없습니다. 일반적으로 가비지 수집은 백그라운드에서 자동으로 발생하지만 성능 문제가 발생하는 경우 수동으로 트리거하거나 완전히 비활성화하거나 성능 향상을 위해 가비지 수집에서 제외 된 개체의 전체 영역을 선언 할 수 있습니다.

Python의 중요한 측면은 역 동성 입니다. 함수와 모듈 자체를 포함하여 언어의 모든 것은 객체로 처리됩니다. 이것은 속도를 희생하지만 (나중에 더 자세히 설명합니다) 높은 수준의 코드를 작성하기가 훨씬 쉽습니다. 개발자는 몇 가지 명령만으로 복잡한 개체 조작을 수행 할 수 있으며 응용 프로그램의 일부를 필요에 따라 변경할 수있는 추상화로 취급 할 수도 있습니다.

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

my_file로 open ( 'myfile.txt') 사용 :

    file_lines = [x.rstrip ( '\ n') for x in my_file]

구문상의 공백으로 인해 코가 주름 질 수 있으며 일부 사람들은 이러한 이유로 Python을 거부합니다. 그러나 엄격한 들여 쓰기 규칙은 최소한의 코드 편집기를 사용하더라도 이론상으로 보이는 것보다 실제로 눈에 거슬리지 않으며 결과적으로 더 깔끔하고 읽기 쉬운 코드가됩니다.

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

파이썬이 느립니까? 반드시 그런 것은 아니다

Python에 대한 일반적인주의 사항 중 하나는 속도가 느리다는 것입니다. 객관적으로 사실입니다. Python 프로그램은 일반적으로 C / C ++ 또는 Java의 해당 프로그램보다 훨씬 느리게 실행됩니다. 일부 Python 프로그램은 몇 배 이상 느려집니다.