개발자/라즈베리파이4

라즈베리파이 Python Programming 06: 파이선 기초 1/2

지구빵집 2021. 11. 1. 10:26
반응형

 

 

라즈베리파이 Python Programming 06: 파이선 기초 1/2

 

이전의 튜토리얼에서 우리는 파이썬 언어, 그것의, 구현 (CPython과 자이 썬, IronPython의 및 PyPy 포함) 응용 프로그램 및 IDE를 논의했다. 또한 Python 스크립트 및 모듈을 작성하는 방법과 통합 개발 환경(또는 IDLE) 및 Bash 셸을 통해 Python 스크립트를 실행하는 방법을 배웠습니다.

 

Python 스크립트를 통한 하드웨어 제어로 넘어가기 전에 먼저 언어에 대한 강력한 기반을 갖추는 것이 유용할 것입니다. 따라서 이 자습서에서는 Python 프로그래밍의 기본 사항에 대해 논의하고 Python에서 코드 작성 스타일을 포함하여 몇 가지 모범 사례에 대해 배웁니다.

 

이것은 집중 과정이지만 Raspberry Pi(RPi)에서 짧은 Python 스크립트를 실행할 수 있습니다. 따라서 Raspbian을 부팅하고 IDLE을 열어 두십시오. 그리고 RPi 데스크탑의 전원을 켤 때 모니터에 빈 화면이 표시되는 경우 설치 후 며칠 동안 부팅에 실패하는 경우가 있습니다.

 

몇 가지 이유: MicroSD 카드 또는 HDMI 케이블의 느슨한 연결. 이 경우 MicroSD 카드와 HDMI 케이블을 다시 연결하고 데스크탑에서 RPi의 전원을 다시 켜십시오. 그래도 문제가 해결되지 않으면 MicroSD 카드에 Raspbian을 다시 설치해 보십시오.

 

Python 구문

 

Python 구문은 다른 프로그래밍 언어와 다릅니다. 대부분의 다른 프로그래밍 언어에서 명령문(논리적 코드 줄)은 세미콜론(";")과 같은 구분 기호로 종료됩니다.

 

그러나 Python은 공백과 들여쓰기를 사용하여 스크립트의 블록 구조를 유지합니다. 따라서 줄의 시작 부분(텍스트 편집기의 실제 줄)에 의도하지 않은 공백을 추가하면 코드가 다르게 차단됩니다. 이것은 들여쓰기가 파이썬에서 매우 중요하다는 것을 의미합니다. 이것은 때때로 다른 언어에 익숙한 개발자에게 어리둥절하거나 벅찬 일입니다.

 

파이썬에서 코드의 각 물리적 라인은 계속되지 않는 한 단일 논리적 라인(코드 문장)으로 해석됩니다. 논리적 줄이 너무 길어 단일 물리적 줄에 맞지 않는 경우 첫 번째 줄은 백슬래시("\")로 끝날 수 있습니다. 이것은 논리적 라인이 다음 물리적 라인에서 계속됨을 나타냅니다.

 

논리적 줄이 다음 줄로 계속되면 두 번째 줄의 들여쓰기는 관련이 없습니다. 그러나 두 번째 줄이 첫 번째 줄 의 연속 이 아닌 경우(끝에 백슬래시가 없기 때문에) 이는 해당 논리 줄의 끝을 표시합니다. 논리적 줄이 계속되면 마지막 물리적 줄을 제외하고는 주석이 없어야 합니다.

 

그러나 다른 프로그래밍 언어와 유사하게 Python의 코드 블록은 중괄호("{") 또는 "시작/끝" 구분 기호로 표시됩니다. 코드의 첫 번째 줄은 들여쓰지 않아야 합니다. 그러나 Python에서 동일한 양만큼 들여쓰기된 모든 인접 행은 코드 블록으로 식별됩니다(중괄호 사이에 있는 것처럼).

 

Python에서는 공백이나 탭만 사용하여 코드를 들여쓰는 것이 좋지만 혼합은 피하는 것이 좋습니다(버전 3에서는 이를 허용하지 않습니다). 탭은 텍스트 편집기에 따라 다르게 처리될 수도 있으므로 사용하지 않는 것이 좋습니다. 4개의 공백(논리 열 5, 9, 13 등)을 사용하는 것이 가장 좋습니다.

 

물리적 줄에 중괄호("{"), 대괄호("[") 또는 괄호("(")와 같은 열린 구분 기호가 있는 경우 동일한 유형의 닫는 구분 기호가 나타날 때까지 다음 줄이 자동으로 계속됩니다. .

 

주석

 

파이썬의 모든 주석은 해시태그("#")로 시작합니다. 해시태그 오른쪽에 있는 모든 항목은 라인 끝까지 파이썬 인터프리터에서 주석으로 처리됩니다. 주석은 코드 행으로 처리되지 않습니다. 오히려 이것은 다른 프로그래머에게 유용한 정보를 제공하기 위해 코드에 삽입되는 텍스트 문자열입니다.

 

코드를 읽을 수 있도록 주석을 자유롭게 사용하는 것이 좋습니다. 그러한 주석은 명백한 것을 반복하지 않고 코드에 대한 중요한 것을 명시해야 합니다. 예를 들어 Python의 주석은 다음과 같습니다. 

 

# This script controls interfacing of a character
# LCD with Raspberry Pi GPIO and manage displaying
# string messages on it.

 

식별자 Identifier

 

식별자는 모든 프로그래밍 언어에서 변수, 상수, 함수, 클래스, 모듈 및 기타 개체에 부여되는 이름입니다.

Python에서 모든 식별자는 문자(ASCII 호환) 또는 밑줄로 시작해야 하며 그 뒤에 더 많은 문자, 숫자 또는 밑줄이 올 수 있습니다. 구두점 문자는 식별자로 사용할 수 없습니다.

 

Python의 식별자는 대소문자를 구분합니다. 예를 들어 "GPIO_status"와 "gpio_status"는 서로 다른 개체를 나타냅니다.

 

다음은 Python의 몇 가지 유효한 식별자입니다. 

 

LCD_message                       _display_status                    LED01
_LED_ON                              LED_OFF                               sleep

 

다음은 Python에서 잘못된 식별자의 예입니다. 

 

01LED                                  LCD@status                         123

 

키워드

 

키워드는 예약어이며 다른 개체의 식별자로 사용할 수도 없습니다. Python V2에는 31개의 키워드가 있습니다. 

 

and                     as                   assert                break
class                   continue             def                   del
elif                    else                 except                exec
finally                 for                  from                  global
if                      import               in                    is
lambda                  not                  or                    pass
print                   raise                return                try
while                   with                 yield

 

Python V3에는 33개의 키워드가 있습니다.  

and                     as                    assert              break
class                   continue              def                 del
elif                    else                  except              false
finally                 for                   from                global
if                      import                in                  is
lambda                  none                  nonlocal            not
or                      pass                  raise               return
true                    try                   while               with
yield

 

명령문

 

명령문은 데이터에 대한 작업 유형을 수행하는 논리적 코드 행입니다.

 

Python에서 명령문은 단순 또는 복합 명령문일 수 있습니다. 단순 명령문은 일반적으로 변수나 단순 표현식에 값을 할당하는 단일 논리적 코드 행입니다. 복합 명령문에는 들여쓰기가 동일한 코드 블록으로 그룹화된 둘 이상의 단순 명령문이 포함됩니다.

 

복합 명령문 내의 각 단순 명령문을 절이라고 합니다. 절에는 키워드로 시작하고 콜론(":")으로 끝날 수 있는 헤더가 있을 수 있습니다. 절을 포함하는 헤더 뒤에는 블록의 다른 명령문(또는 절)이 오고 이를 블록 본문이라고 합니다.

 

다른 프로그래밍 언어와 달리 Python에는 선언이 없으며 단순 및 복합 명령문만 있습니다.

 

객체 지향 프로그래밍

 

모든 프로그래밍 언어의 코드는 데이터를 처리하는 데 사용됩니다. 데이터는 상수 값, 순서가 지정되거나 정렬되지 않은 상수 값 그룹 또는 더 복잡한 데이터 구조(예: 클래스 및 개체)일 수 있습니다.

 

기본적으로 각 데이터 유형에는 유형이 있습니다. 데이터의 유형은 코드에서 데이터를 처리하는 방법, 가질 수 있는 속성 및 수행할 수 있는 작업(연산자, 함수 및 메서드의 형태로)을 결정합니다.

 

참조 이름은 코드의 각 데이터에 액세스합니다. 이 참조 이름은 이 범위에서 사용되는 키워드와 식별자가 아닌 식별자가 될 수 있습니다. 따라서 특정 데이터에 대한 참조는 항상 동일한 범위 내에서 고유해야 합니다.

 

내용을 변경할 수 있는 데이텀을 가리키는 참조를 변수라고 합니다. 코드에서 해당 위치의 내용을 변경할 수 있는 메모리 위치에 바인딩하는 참조로 서버 변수. 코드에서 내용이 절대 변경되지 않는 데이텀을 가리키는 참조를 상수라고 합니다.

 

상수로 정의된 참조에 할당된 값은 일단 설정되면 변경할 수 없습니다.

 

코딩 프로세스의 명령문은 변수의 내용입니다. 이러한 명령문은 단순하거나 복합적일 수 있습니다. 복합 명령문은 다른 명령문의 실행 순서를 결정하거나 변경하는 데 사용할 수 있습니다. 하나 이상의 단순 및/또는 복합 명령문이 함수라고 하는 재사용 가능한(호출 가능한) 블록으로 구성되어야 할 수도 있습니다.

 

또한 변수에 할당된 상수 값의 정렬된 그룹과 정렬되지 않은 그룹이 있을 수 있습니다. 관련된 데이터 값과 연산이 클래스로 그룹화되는 더 복잡한 데이터 구조가 있을 수도 있습니다. 일반적으로 클래스는 사람을 나타내도록 정의된 실제 개체(예: 클래스)의 유형을 나타냅니다.

 

모든 실제 개체에는 클래스의 속성으로 정의된 일부 속성이 있습니다. 이러한 속성은 특정 클래스에 바인딩되고 클래스에 의해 표현되는 개체의 속성을 나타내는 특수 변수입니다.

 

속성의 내용에 대해 몇 가지 작업이 있을 수 있습니다. 클래스 속성의 내용을 처리하는 함수(클래스에 바인딩)를 메서드라고 합니다.

 

클래스의 특정 인스턴스를 객체(코드 객체)라고 합니다. 이러한 개체에는 해당 클래스에 대해 정의된 모든 속성과 메서드가 있습니다. 개체는 기본 제공 또는 사용자 정의 클래스에 속합니다. 객체 지향 프로그래밍에서 데이터는 항상 객체의 변수 및 속성과 관련된 값으로 처리됩니다.

 

Python 객체, 클래스, 데이터 유형 및 ID

 

Python은 데이터를 처리하는 방식에서도 다른 언어와 다릅니다. 예를 들어 파이썬에서는 모든 것이 객체입니다. 여기에는 내장 데이터 유형 클래스의 객체인 변수 또는 속성에 할당된 값이 포함됩니다.

 

데이터 유형은 기술적으로 내장된 Python 클래스입니다. 값이 변수나 속성에 할당되면 값은 데이터 유형 클래스에 속하는 개체가 됩니다. 또 다른 방법으로 이렇게 말할 수 있습니다. 값은 Python 내장 데이터 유형 클래스의 인스턴스가 됩니다.

 

이것이 의미하는 바는 Python에서는 참조의 데이터 유형을 선언할 필요가 없다는 것입니다. Python은 암시적으로 참조의 데이터 유형을 가정합니다. 이것이 파이썬에서 데이터 유형을 선언할 때 키워드가 불필요한 이유입니다.

 

Python의 또 다른 흥미로운 기능은 ID입니다. 구현 및 플랫폼에 따라 Python은 메모리 위치에 고유한 값만 저장합니다. 두 참조가 동일한 값을 가리키면 동일한 ID를 가지며 동일한 메모리 위치를 가리킵니다. Python은 동일한(리터럴) 값이 다른 참조에 연결되어 있어도 복제하지 않습니다.

 

변경 가능, 불변, 반복 가능 및 반복자

 

Python 객체는 변경 가능하거나 변경 불가능할 수 있습니다. 변경할 수 없는 개체에 대해 연산자, 함수 또는 메서드를 통해 작업을 수행할 때 해당 표현식의 반환 값 데이터 유형은 항상 개체와 동일하게 유지됩니다.

가변 객체에 대한 연산을 수행할 때 각 표현식의 반환 값의 데이터 유형은 객체의 데이터 유형과 다를 수 있습니다.

 

객체는 반복 가능합니다. 즉, 객체는 인덱스로 액세스할 수 있는 항목(값 또는 기타 객체)의 모음입니다. iterable을 반복하기 위한 인덱스 제공자 역할을 하는 객체를 iterator라고 합니다.

 

흥미롭게도 모든 iterator는 iterable이지만 모든 iterable은 iterator가 아닐 수 있습니다.

 

리터럴

 

내장 데이터 유형의 상수 값에 대한 표기법을 리터럴이라고 합니다. 리터럴은 정수, 부동 소수점 숫자, 복소수, 문자열 또는 바이트일 수 있습니다. 리터럴은 변경할 수 없는 Python 객체이며 이에 대한 표현식의 반환 값은 리터럴과 동일한 데이터 유형을 갖습니다.

 

데이터 유형 클래스

 

Python은 모든 기본 데이터 유형(숫자, 문자열, 부울 등)과 사용자 정의 데이터 유형(사용자 정의 클래스)을 지원합니다. 데이터 유형은 Python의 클래스입니다. Python에는 다음을 포함하여 많은 데이터 유형이 있습니다.

 

정수 – Python 의 int 또는 long 클래스에 속합니다 . 10진수, 2진수, 8진수 또는 16진수가 될 수 있습니다.

 

  • 10진수 값은 0이 아닌 숫자로 시작하고 그 뒤에 다른 숫자가 옵니다.
  • 이진 값은 0b로 시작하고 그 뒤에 0과 1의 시퀀스가 ​​옵니다.
  • 8진수 값은 0o로 시작하고 8진수 시퀀스(0에서 7까지)가 이어집니다. 16진수 값은 0x로 시작하고 16진수 문자 시퀀스(0에서 9, A, B, C, D, E 및 F)가 뒤따릅니다.

 

Python V3에서는 int 와 long 의 구분이 없기 때문에 모든 정수는 int 클래스에 속합니다 . Python 3.6부터 정수는 시각적 지원을 위해 숫자와 문자 사이에 밑줄("_")을 포함할 수 있습니다. 예를 들어 "0b_0111_1111"은 "0b01111111"과 같습니다.

 

부동 소수점 숫자 – 이 값은 float 클래스에 속합니다 . 소수점, 지수 또는 둘 다를 포함할 수 있는 십진수입니다. Python에서 부동 소수점 값은 일반적으로 53비트 정밀도를 갖습니다.

 

복소수 – 이 값은 복소수 클래스에 속합니다 . 복소수에는 "j" 또는 "J"가 중간에 있는 두 개의 부동 소수점 값이 있거나 "j" 또는 "J"의 양쪽에 부동 소수점 값이 있을 수 있습니다. " x" 라는 변수로 정의된 복잡한 객체의 실수 부분과 허수 부분은 각각 "x.real" 및 "x.imag"로 액세스할 수 있습니다.

 

문자열 – 텍스트 값을 나타내는 일련의 문자입니다. 문자열은 Python 의 str 클래스에 속합니다 . 문자열 개체는 바이트 또는 유니코드 형식일 수 있습니다. Python V2에는 ASCII 인코딩이 있고 Python V3에는 기본적으로 유니코드 인코딩이 있습니다.

 

스크립트의 첫 번째 줄에 코딩 지시문 주석을 포함하여 Python 스크립트에 다양한 인코딩 스타일을 적용할 수 있습니다. 인코딩 스타일은 문자열과 주석에 사용할 수 있는 문자에만 영향을 줍니다.

 

코딩 지시문은 다음과 같습니다. 

 

Python에서 문자열은 작은따옴표, 큰따옴표 또는 삼중따옴표일 수 있습니다. 이스케이프 시퀀스 없이 작은 따옴표로 묶인 문자열에서 double을 사용하고 큰따옴표로 묶인 문자열에서 single을 사용할 수도 있습니다. 작은 따옴표로 묶인 문자열에서 single을 사용해야 하고 큰따옴표로 묶은 문자열에서 double을 사용해야 하는 경우 다음과 같이 백슬래시로 "이스케이프"해야 합니다. 

“He said\”get me a glass of water\””
‘I\’am going to office’

 

문자열은 다음과 같이 백슬래시를 사용하여 코드에서 둘 이상의 물리적 줄에 걸쳐 있을 수도 있습니다. 

“This is a very, very, very, \
very long text”

 

문자열에 새 줄을 포함하려면 새 줄 이스케이프 시퀀스(\n)를 다음과 같이 사용해야 합니다. 

 

“This is one line. \n This is second line”

 

여러 줄 문자열의 경우 삼중 따옴표로 묶인 문자열을 사용하는 것이 가장 좋습니다. 삼중 따옴표로 묶인 문자열에서 줄 바꿈은 줄 바꿈 문자로 처리됩니다. 다음은 예입니다. 

“””This is one line.
This is second line.
This is third line.”””

 

작은 따옴표나 큰 따옴표로 묶인 문자열은 이스케이프 처리되지 않은 따옴표를 포함할 수 없습니다. 줄이 끝나거나 백슬래시가 됩니다. 삼중 따옴표로 묶인 문자열은 이스케이프 처리되지 않은 백슬래시만 포함할 수 없습니다. 삼중 따옴표로 묶인 문자열에서 백슬래시 뒤에 새 줄이 오는 경우 백슬래시와 줄 바꿈 문자는 무시됩니다. 문자열 개체에 백슬래시, 따옴표, 줄 끝, 탭 또는 특수 문자를 포함하려면 이스케이프 시퀀스를 사용해야 합니다. Python은 문자열에서 이러한 이스케이프 시퀀스를 허용합니다. 

 

Escape sequence			String literal
\<newline>				Backslash and Newline ignored
\\						Backslash (|)
\’						Single Quote (‘)
\”						Double Quote (“)
\a						ASCII Bell
\b						ASCII Backspace
\f						ASCII Formfeed
\n						ASCII Linefeed
\r						ASCII Carriage Return
\t						ASCII Horizontal Tab
\v						ASCII Vertical tab
\ooo					Character with octal vale ooo
\xhh					Character with hexadecimal value hh
\uHHHH					Unicode character with hexadecimal value HHHH
\uHHHHHHHH				Unicode character with hexadecimal value HHHHHHHH
\N{name}				Unicode character with standard Unicode name

 

원시 문자열 – 선행 따옴표 앞에 "r" 또는 "R"이 앞에 오는 따옴표 또는 삼중 따옴표 문자열입니다. 원시 문자열에서 이스케이프 시퀀스는 해석되지 않습니다. 이스케이프 시퀀스가 ​​원시 문자열에 포함되어 있으면 해석 없이 문자열의 일부가 됩니다.

또한 원시 문자열은 홀수 개의 백슬래시 뒤에 오는 인용 부호로 끝날 수 없습니다. 이 경우 끝 따옴표가 이스케이프되어 구문 오류가 발생합니다. 원시 문자열은 문자열 값에 백슬래시가 많은 경우에 유용합니다.

원시 문자열의 몇 가지 유효한 예는 다음과 같습니다. 

 

r”\\” (equivalent to \\)
R’Hello\n’ (equivalent to Hello\n)

 

원시 문자열의 일부 잘못된 예는 다음과 같습니다. 

 

r’\’
r’\\\’
R”Hello\n\”

 

다음 튜토리얼에서 파이썬의 프로그래밍 언어 기초에 관해 논의를 계속할 것입니다. 

 

 

파이썬의 프로그래밍 언어의 기초

 

 

 

반응형