개발자/라즈베리파이4

라즈베리파이 파이선 프로그래밍 05: Python 소개

지구빵집 2021. 10. 29. 10:19
반응형

 

 

라즈베리파이 파이선 프로그래밍 05: Python 소개 

 

이전 튜토리얼에서 우리는 성공적으로 라즈베리파이(RPI) 리눅스 데스크톱을 설정합니다. 이제 파이썬을 배워봅시다.

 

Python 스크립트를 사용하여 하드웨어를 제어하는 ​​방법부터 시작할 수 있지만, 이는 Raspberry Pi 및 Python과 같은 VHLL(Very-High-Level-Language)을 사용하여 전자 장치를 제어하는 ​​목적을 무효화합니다.

 

확실히, 모든 마이크로컨트롤러로 전자 장치를 쉽게 제어하고 임베디드 애플리케이션을 설계할 수 있습니다. 우리가 RPi(단일 보드 컴퓨터)와 VHLL을 사용하는 이유는 임베디드 애플리케이션에서 데스크탑, 웹 및 네트워크 프로그래밍의 기능을 사용하기 위해서입니다. 이를 통해 임베디드 센서의 데이터를 조작, 공유 및 사용하기 위해 사용자 인터페이스, 그래픽, 네트워킹 및 데이터베이스를 사용하는 강력하고 복잡한 애플리케이션을 설계하고 데스크탑 또는 서버 시스템에 네트워크로 연결할 수 있는 임베디드 애플리케이션을 설계할 수 있습니다.

 

RPi를 사용하면 특정 응용 프로그램에서 기계 수준 데이터를 제공하는 다양한 내장형 추가 장치(또는 회로)를 인터페이스할 수 있습니다. 그런 다음 이 데이터를 VHLL(Python과 같은)에서 조작하고 사용하여 여러 틈새 시장에서 대규모 응용 프로그램을 설계할 수 있습니다. 여기에는 생체 인식, 로봇 공학, 자동화, 게임 및 클라우드 컴퓨팅 등이 포함될 수 있습니다.

 

예를 들어 지문 모듈을 Raspberry Pi와 인터페이스하고 생체 인식 출석 시스템을 설계할 수 있습니다. Python 기능을 사용하여 이 생체 인식 출석 시스템에서 HR 관리자가 출석 로그를 보고 직원의 생산성을 평가하고 급여 및 초과 근무 수당을 계산할 수 있는 소프트웨어 솔루션을 개발할 수도 있습니다. 우리는 완전히 통합된 HR 관리 소프트웨어를 개발할 수 있었습니다.

 

단순히 LED 매트릭스, 문자 LCD 또는 그래픽 LCD를 RPi와 인터페이스함으로써 RPi 데스크탑 기반 GUI 솔루션을 통해 맞춤형 메시지를 깜박이는 원격 제어 디스플레이 보드를 설계할 수 있습니다. 가속도계 센서와 몇 개의 버튼을 인터페이스하여 Raspberry Pi에서 게임을 위한 맞춤형 게임패드를 개발할 수 있습니다.

 

전자 제품, 운영 체제 및 VHLL의 기능을 결합하면 무한한 가능성이 있습니다. Python의 강력한 기반은 기본적인 프로그래밍 취미를 넘어서는 복잡한 응용 프로그램을 빌드할 수 있음을 의미합니다.

 

프로그래밍 언어

 

Python은 비트 및 바이트 수준에서 코딩하는 데에도 사용할 수 있는 VHLL(Very-High-Level Language)입니다. 모든 주요 운영 체제 및 하드웨어 플랫폼에서 실행할 수 있는 범용 객체 지향 크로스 플랫폼 프로그래밍 언어입니다. Python은 객체 지향이지만 OOP 소프트웨어 디자인 패턴에 국한되지 않습니다.

 

이는 절차적 또는 기능적 프로그래밍을 사용하여 Python에서 소프트웨어 솔루션을 설계할 수 있음을 의미합니다. Singleton, MVC(Model-View-Controller), Template, Proxy, Command, Observer, Factory 등과 같은 소프트웨어 디자인 패턴을 Python으로 구현할 수 있습니다. Python의 객체 지향 기능은 C++와 유사하지만 더 간단합니다.

 

VHLL로서 Python은 기본 하드웨어에서 높은 수준의 추상화를 가지고 있습니다. 이 외에도 Python은 다양한 다른 프로그래밍 언어와 통합될 수 있으며 다른 언어로 작성된 소프트웨어 구성 요소와 결합될 수 있습니다. 이러한 다양성은 거의 모든 틈새 시장에서 소프트웨어의 장점입니다.

 

그러나 Python은 해석된 언어이므로 일반적으로 컴파일된 언어에 비해 느립니다. 이는 시간이 중요한 이벤트에 응답해야 하는 애플리케이션을 설계할 때 어려울 수 있습니다. 그러나 파이썬을 미리 컴파일하거나 다른 컴파일된 언어로 작성된 모듈을 사용할 수 있습니다. 그리고 대부분의 경우 Python 애플리케이션의 성능으로 충분합니다.

 

Raspberry Pi의 임베디드 애플리케이션에 사용할 경우 사용자는 제한 사항에 직면할 수 있습니다. Python으로 임베디드 애플리케이션을 실행하는 것은 마이크로컨트롤러의 기계어보다 느릴 수 있습니다. 또한 RPi에는 아날로그-디지털 변환기, 실시간 클록 및 하드웨어 인터럽트와 같은 몇 가지 중요한 하드웨어 기능이 없습니다.

 

아날로그-디지털 변환기 또는 실시간 클록에 대한 모든 요구 사항은 외부 ADC 또는 RTC를 RPi와 인터페이스하여 보상할 수 있습니다. 인터럽트의 경우 Linux의 인터럽트 API에 의존해야 합니다. 소프트웨어 인터럽트는 스레드를 신중하게 관리해야 하며 그렇지 않으면 실제 하드웨어 인터럽트만큼 빠르게 구현되지 않습니다.

 

애플리케이션

 

Python은 다양한 애플리케이션 도메인에 사용할 수 있는 범용 프로그래밍 언어입니다. 그것은 많은 응용 프로그램과 소프트웨어 솔루션에서 파이썬을 사용할 수 있게 해주는 표준 라이브러리와 여러 확장 모듈을 가지고 있습니다.

 

전체 Linux 환경에서 Raspberry Pi, Beaglebone 및 기타와 같은 단일 보드 컴퓨터에서 Python을 실행하여 임베디드 애플리케이션에서 사용할 수 있습니다. 이러한 단일 보드 컴퓨터는 마이크로컨트롤러 및 프로그래밍 가능한 칩과 인터페이스하여 임베디드 시스템, 로봇 공학, 자동화, 생체 인식 및 기타 틈새 분야에서 흥미로운 애플리케이션을 설계할 수 있습니다.

 

MicroPython이라고 하는 Python 3 구현은 pyBoard와 같은 마이크로 컨트롤러 보드를 프로그래밍하는 데 사용할 수 있습니다. 이것은 임베디드 C를 사용하여 Arduino 및 기타 마이크로 컨트롤러를 프로그래밍하는 방법과 유사합니다. pyBoard의 MicroPython을 사용하면 Python을 사용하여 마이크로컨트롤러 애플리케이션을 프로그래밍할 수 있을 뿐만 아니라 Python을 바이트 코드 또는 기계 코드로 컴파일할 수 있습니다.

 

혼동을 피하기 위해 RPi에서 기존 Python V3을 사용합니다. 확장 모듈의 지원으로 범용 입/출력(GPIO) 및 기타 RPi 하드웨어 인터페이스를 통해 전자 회로 및 하드웨어와 상호 작용합니다. MicroPython은 pyBoard에서 펌웨어로 실행할 수 있는 바이트코드 또는 실행 가능한 기계어 코드를 생성합니다.

 

RPi를 사용하여 바이트코드나 펌웨어 기계어 코드가 아닌 Linux 프로세스로 실행되는 범용 Python 애플리케이션을 설계할 것입니다. pyBoard의 Micropython이 아닌 SBC(Statistical Process Control)에서 Python을 사용할 때의 한 가지 이점은 Python의 표준 라이브러리 및 확장 모듈에 대한 전체 액세스 권한을 얻을 수 있다는 것입니다. Micropython에는 표준 라이브러리의 대부분의 기능이 없습니다.

 

기존 Python 사용의 다른 이점은 다음을 의미합니다.

 

GPIO 및 하드웨어 인터페이스를 통해 전자 장치를 구성 및 관리하기 위해 하드웨어 제어 모듈 가져오기 소켓 라이브러리를 사용하여 사용 가능한 인터넷 서비스에 연결 USB 직렬 포트 및 Telnet 프로토콜을 통해 하드웨어 장치에 대한 인터프리터 액세스 Linux API 및 특수 Python 모듈을 사용하여 외부 장치 및 타이머 이벤트에 응답합니다. 모든 복잡성의 Python 애플리케이션을 구현하는 전원 켜기 부팅 시퀀스를 작성합니다.

 

이러한 기능과 다양성 덕분에 Python은 IoT(사물 인터넷) 응용 프로그램을 프로그래밍할 때 최고의 선택이 되었습니다. 또한 Python은 데스크톱 프로그래밍, 웹 개발, 소프트웨어 개발, 비즈니스 응용 프로그램 및 과학 컴퓨팅에 사용할 수 있습니다. Qt, wxWidgets 및 Kivy와 같은 Tk GUI 라이브러리 및 툴킷의 도움으로 데스크탑 GUI를 설계할 수 있습니다.

 

Python의 표준 라이브러리는 모든 주요 인터넷 프로토콜을 지원하고 HTML, JSON 및 XML의 사용을 지원합니다. Django, Flask, Bottle, Pyramid 및 Django CMS 및 Plone과 같은 Python 기반 콘텐츠 관리 시스템을 포함하여 웹 및 인터넷 개발을 위한 여러 Python 프레임워크가 있습니다.

 

또한 SCons, Roundup, Apache Gump 및 Buildbot과 같은 Python 기반 도구를 소프트웨어 개발에 사용할 수 있습니다. ERP(전사적 자원 관리) 및 전자 상거래 솔루션에도 사용할 수 있습니다. 과학 컴퓨팅, 데이터 분석 및 데이터 시각화에 사용할 수 있는 패키지가 있습니다.

 

Python은 제공할 것이 많지만 전자 제품과 함께 해당 기능을 가장 잘 사용하는 방법은 개발자에게 달려 있습니다.

 

구현

 

Python에는 4가지 프로덕션 품질 구현이 있습니다.

 

1. 클래식 파이썬. 이것은 가장 최신의 완전한 Python 구현입니다. 인터프리터, 컴파일러, 표준 라이브러리 및 확장 모듈을 포함한 CPython은 C 언어로 코딩됩니다. 모든 C 호환 플랫폼에서 실행할 수 있습니다. CPython은 Python 프로그래밍 언어의 사실상 구현이며 일반적으로 "Python"이라고 합니다. 특별한 프로그래밍 환경이 필요하지 않습니다.

 

2. 자이썬. Java 7 이상을 준수하는 Jython은 JVM(Java Virtual Machines)용으로 개발된 Python 구현입니다. 최신 릴리스인 Jython 2.7.1은 Python 2.7과 호환되지만 Python V3은 지원하지 않습니다. Python의 V2 및 V3 버전도 서로 호환되지 않습니다.

 

Jython은 모든 Java 라이브러리 및 프레임워크를 사용할 수 있으며 모든 Java 클래스와 확장 모듈과 호환됩니다. 자이썬 애플리케이션은 거의 모든 운영 체제 및 하드웨어 플랫폼에서 사용할 수 있는 JVM이 있는 모든 장치를 실행할 수 있는 본질적으로 순수한 Java 애플리케이션입니다.

 

3. 아이언파이썬. IronPython은 Python의 .Net(Common Language Runtime 또는 CLR) 구현입니다. CLR은 이제 오픈 소스이며 Linux 및 macOS로 이식되었습니다. CLR에는 Windows 및 기타 비 Microsoft 운영 체제에서 실행할 수 있는 플랫폼 간 구현인 Mono도 있습니다.

 

IronPython은 .Net 프레임워크가 있는 모든 대상 시스템에서 실행할 수 있습니다. C# 및 Visual Basic .Net으로 작성된 클래스를 포함하여 모든 CLR 클래스를 확장 모듈로 사용할 수 있습니다.

 

4. 파이파이 – 파이파이. "적시" 네이티브 기계 코드를 생성할 수 있는 CPython의 대체 구현입니다. PyPy는 다른 모든 구현에 비해 속도와 메모리 관리 면에서 더 빠르며 기계 코드로의 Just-In-Time 컴파일에 기여합니다. CPython은 Jython 및 IronPython보다 빠르며 PyPy보다 약간 뒤떨어집니다.

 

PyPy는 Python V2 및 V3와 호환됩니다. 대부분의 표준 Python 라이브러리를 지원하며 모든 C 코드 확장을 사용할 수 있습니다. 기본적으로 스택이 없으며 동시성을 위한 마이크로 스레드를 제공합니다.

 

또한 사용 가능한 Python으로 알려진 고성능 Python 구현이 있습니다. 그러나 Python의 구현은 실행되는 환경과 사용할 수 있는 라이브러리, 확장 모듈 및 프레임워크에 따라 다릅니다. 선택한 구현은 애플리케이션의 패키징 및 배포에도 영향을 미칩니다.

 

Raspberry Pi에서 위의 Python 구현을 설치하고 실행할 수 있습니다. 기본적으로 RPi는 CPython을 사용합니다. 더 높은 성능을 위해 기존 Python보다 2~10배 빠른 PyPy를 설치할 수 있습니다. PyPy 및 CPython은 C 코드 확장 모듈을 사용할 수 있지만 Java 라이브러리 및 모듈이 필요한 경우 Jython이 선호될 수 있습니다. CLR 라이브러리 및 확장 모듈의 경우 IronPython을 고려하십시오.

 

기억하십시오. RPi는 시간이 중요한 애플리케이션을 위한 것이 아닙니다. 따라서 Raspbian에 기본 Python 설치를 계속 사용하겠습니다. CPython이며 Python 언어의 모든 기능을 제공합니다.

 

표준 라이브러리 및 확장 모듈

 

Python의 표준 라이브러리에는 OS 관련 작업을 위한 내장 모듈(C로 작성)과 데이터 처리, 문자열 조작, 날짜-시간 연산, 수학 연산과 같은 일반적인 프로그래밍 작업을 위한 모듈(Python으로 작성)이 포함되어 있습니다. , 파일 및 디렉토리 액세스, 데이터 압축 등

 

표준 라이브러리 또는 특정 Python 구현의 확장 모듈은 기본 운영 체제 또는 기타 소프트웨어 구성 요소에 대한 추가 기능을 허용합니다. 앱별 Python 확장을 통해 다른 언어로 코딩된 애플리케이션에 Python을 포함할 수도 있습니다.

 

몇 가지 예:

 

CPython은 C++ 라이브러리와 클래스를 확장 모듈로 사용할 수 있습니다.

 

Jython은 Java 라이브러리 및 클래스를 확장 모듈로 사용할 수 있습니다.

 

IronPython은 CLR 라이브러리와 클래스를 확장 모듈로 사용할 수 있습니다.

 

그러나 확장 모듈을 사용할 때 Python 애플리케이션의 플랫폼 간 이식성이 손상될 수 있으며 그에 따라 추가 종속성이 필요할 수 있습니다. 예를 들어, Jython은 Java 라이브러리 및 클래스를 컴파일하기 위해 JVM이 필요합니다.

 

프로그래밍 환경

 

일반적으로 Python 파일은 스크립트 또는 모듈인 텍스트 파일입니다. 스크립트는 프로세스로 직접 실행되는 파일입니다. 모듈은 스크립트에 특정 기능을 제공하기 위해 가져온 소스 파일입니다. Python 파일은 모듈이 실행 가능한 스크립트 역할을 할 수 있기 때문에 가능하지만 가져올 때 다른 스크립트에 기능을 제공합니다.

 

기본적으로 모든 Python 응용 프로그램은 스크립트 및 모듈의 모음 또는 스크립트 단독으로 볼 수 있습니다.

 

소프트웨어를 개발하려면 Python 스크립트 및 모듈용 코드를 작성하기 위한 텍스트 편집기와 실행 코드를 생성하기 위한 컴파일러 및 인터프리터가 필요합니다. 텍스트 편집기, 컴파일러 및 인터프리터를 단일 프로그래밍 환경으로 결합하는 여러 통합 개발 환경을 사용할 수 있습니다.

 

Python용으로 널리 사용되는 통합 개발 환경(IDE)에는 IDLE, Eclipse, Geany 및 Thonny가 있습니다. Raspbian은 IDLE의 기본 설치와 함께 제공됩니다. 대부분의 IDE는 인터프리터를 제공하므로 Python 코드를 대화식으로 실행할 수 있습니다. 이를 대화식 세션이라고 합니다. 이러한 대화형 세션은 프롬프트 문자열 ">>>"로 식별할 수 있으며 이는 일부 Python 명령문이 실행될 것으로 예상됨을 나타냅니다.

 

스크립트 실행

 

Python 스크립트는 IDE 내에서 또는 명령줄 Python 인터프리터에서 실행할 수 있습니다. IDE 내에서 Python 문은 대화식 세션에서도 실행할 수 있지만 일반적으로 애플리케이션을 Python 스크립트로 래핑하는 것이 좋습니다. 예를 들어, RPi에서 Python 스크립트는 IDLE(또는 다른 Python IDE) 또는 Bash 셸에서 실행할 수 있습니다.

 

쉘에서 Python 스크립트를 실행할 때 "python" 또는 "python3" 명령을 사용할 수 있습니다. 명령은 대상 Python 스크립트의 이름 및/또는 경로와 필요에 따라 선택적 인수를 따라야 합니다. bash 셸은 또한 여러 줄을 단일 인수로 허용하여 여러 Python 코드 문을 함께 실행하는 데 사용할 수 있습니다. 그러나 일부 쉘은 하나 이상의 Python 명령문을 실행하고 세미콜론으로 구분할 수 있는 한 줄 명령만 허용합니다.

 

Python 스크립트 파일에는 .py 확장자가 있고(파일 이름에 대한 접미사) Python의 컴파일된 바이트코드 파일에는 .pyc 또는 .pyo 확장자가 있습니다.

 

bash 셸에서 Python 스크립트를 실행하려면 다음 명령을 사용할 수 있습니다.

 

파이썬 스크립트 이름.py

 

또는

 

python3 스크립트 이름.py

 

Python 2.7은 머신의 기본 Python 버전이 될 수 있습니다. python 명령을 실행 하면 스크립트가 기본 버전으로 실행됩니다. 실행에 python3 또는 python3.5 (설치된 경우) 명령을, 스크립트는 각각 V3 또는 V3.5 버전에서 명시 적으로 실행됩니다.

 

Raspbian에서 Python 스크립트는 IDLE을 사용하여 작성하고 컴파일할 수 있습니다. 프로그래밍 -> Python 3(IDLE)으로 이동하여 IDLE을 열 수 있습니다.

 

Raspbian에서 IDLE 열기

 

Raspbian에서 IDLE(Python 3)로 이동합니다.

 

IDLE은 다음과 같이 활성 대화형 세션으로 열립니다.

 

Raspbian의 유휴 Python IDE

 

Raspbian의 IDLE Python IDE.

 

Python 스크립트 또는 모듈을 작성하려면 파일 -> 새 파일을 클릭하십시오.

 

Raspbiian의 IDLE에서 Python 스크립트를 작성하기 위한 새 파일 만들기 Raspbian의 IDLE에서 Python 스크립트를 작성하기 위한 새 파일 만들기.

 

텍스트 편집기에서 Python 스크립트를 작성하고 파일 -> 저장을 클릭하여 저장하십시오.

 

Raspbian의 IDLE에 Python 스크립트 저장 Raspbian의 IDLE에 Python 스크립트 저장.

 

Python 스크립트를 실행하려면 IDE에서 열고 실행 -> 모듈 실행을 클릭하거나 F5 키를 누릅니다.

 

Raspbian의 IDLE에서 Python 스크립트 실행 Raspbian의 IDLE에서 Python 스크립트를 실행합니다.

 

리소스

 

Python은 지속적인 학습을 제공하는 성숙한 프로그래밍 언어입니다. Python을 탐색하기에 가장 좋은 곳은 웹사이트 입니다. Jython , IronPython 및 PyPy도 마찬가지 입니다. 표준 라이브러리 패키지 및 확장 모듈은 Python 패키지 색인 에서 다운로드할 수 있습니다 .

 

비용

 

CPython은 GPL(GNU Public License)과 호환되는 Python Software Foundation License 버전 2의 적용을 받습니다. Jython, IronPython 및 PyPy도 무료 라이선스의 적용을 받습니다. 이는 주요 Python, Jython, IronPython 및 PyPy 사이트에서 다운로드한 모든 것이 완전히 무료임을 의미합니다.

 

많은 타사 Python 소스, 도구 및 확장 모듈이 유사한 라이선스를 제공하거나 GPL 또는 Lesser GPL(LGPL)이 적용됩니다. 일부 상업적으로 개발된 모듈 및 도구에는 요금이 필요할 수 있습니다. 그러나 Python은 독점, 무료 또는 오픈 소스 소프트웨어 개발에 사용할 수 있습니다.

 

에서 다음 튜토리얼 , 우리는 파이썬 프로그래밍 언어의 기초를 다룰 것이다. 

 

 

이미지 출처: https://realpython.com/python-raspberry-pi/

 

 

 

반응형