라즈베리파이 Python Programming 06: 파이선 기초 2/2
이전 튜토리얼에서 파이선의 식별자, 키워드, 주석, 문, 리터럴 및 데이터 유형을 의미하는 파이썬 문법에 대해 배웠습니다. 우리는 또한 Python이 객체 지향적이며 이러한 객체가 변경 가능하거나 변경 불가능할 수 있음을 배웠습니다. 값 그룹을 가리키는 Python 객체는 반복 가능하며, 이 경우 iterator라고 합니다.
이전 튜토리얼에서 다룬 모든 데이터 유형(정수, 부동 소수점, 복소수, 문자열, 원시 문자열)은 리터럴(변수 또는 속성에 할당된 실제 값)에 대한 데이터 유형입니다. Python에는 정렬되거나 정렬되지 않은 값(항목) 그룹을 가리키는 참조용 데이터 유형도 있습니다.
또한 Python에는 다음과 같은 데이터 유형이 있습니다.
Tuple
일련의 객체. 시퀀스는 인덱스가 항목에 액세스 할 수 있는 정렬된 항목(객체) 그룹을 나타냅니다. 튜플의 항목은 변경 가능하거나 변경할 수 없는 임의의 객체일 수 있습니다.
그러나 튜플은 변경할 수 없습니다. 즉, 튜플 항목은 일단 정의되면 업데이트하거나 변경할 수 없습니다. 이것이 변경되지 않거나 업데이트가 필요하지 않는 한 튜플에서 변경 가능한 항목을 사용하는 것이 거의 권장되지 않는 이유입니다. 튜플은 상수 값 또는 개체의 그룹으로 볼 수 있으며 하나 이상의 상수를 정의하는 데 사용할 수 있습니다.
튜플은 공백이나 쉼표로 구분된 값 또는 개체 그룹으로 정의됩니다. 그룹은 선택적으로 괄호("(")로 묶을 수 있습니다. 쉼표도 선택 사항이지만, 특히 튜플이 함수에 필요한 경우 튜플 항목을 구분하는 데 쉼표를 사용하는 것이 좋습니다.
선택적으로 튜플의 마지막 항목에도 후행 쉼표가 있을 수 있습니다. 빈 튜플은 빈 괄호 쌍으로 정의됩니다. 내장 함수 tuple()을 사용하여 튜플을 정의할 수도 있습니다. 공백이나 쉼표로 구분된 항목 그룹은 기본적으로 튜플로 설정됩니다. 단일 문자열(또는 이터러블)이 튜플로 정의되면 해당 문자(또는 항목)를 튜플 항목으로 사용할 수 있습니다.
다음은 튜플의 몇 가지 유효한 예입니다.
tup1 = ‘Id’ ‘Name’ ‘Address’
tup1 = ‘Id’, ‘Name’, ‘Address’
tup1 = (‘Id’, ‘Name’, ‘Address’)
tup1 = (‘Id’, ‘Name’, ‘Address’,)
tup1 = () #Empty Tuple
tup1 = (‘Id’, 123, 0b1111_1110, 2.5j5.4, True)
tup1 = (‘Id’, 123, 0b1111_1110, 2.5j5.4, True,)
tup1 = tuple(‘Id’, ‘Name’, ‘Address’)
tup1 = tuple(‘Id’ ‘Name’ ‘Address’)
tup1 = tuple(‘ABC’) # is equivalent to tup = (‘A’, ‘B’, ‘C’)
List
변경 가능한 항목 그룹으로 정렬된 시퀀스입니다. 이는 목록의 항목을 변경하거나 수정할 수 있음을 의미합니다. 기본적으로 목록은 그룹 항목을 교체, 제거 또는 추가할 수 있는 수정 가능한 값 또는 개체 그룹입니다. 목록의 항목에는 변경 가능하거나 변경할 수 없는 임의의 개체가 포함될 수 있습니다.
목록은 대괄호("[") 내에서 쉼표로 구분된 값 및/또는 개체 그룹으로 정의됩니다. 선택적으로 목록의 마지막 항목에 후행 쉼표가 있을 수 있습니다. 내장 함수인 list를 사용하여 목록을 정의할 수도 있습니다.
빈 목록은 빈 대괄호 쌍 또는 인수가 없는 list() 함수로 정의됩니다. iterable이 목록의 유일한 항목으로 사용되는 경우 해당 항목을 목록의 항목으로 사용할 수 있습니다.
다음은 목록의 몇 가지 유효한 예입니다.
list1 = [‘Id’, ‘Name’, ‘Address’]
list1 = [‘Id’, ‘Name’, ‘Address’,]
list1 = [] #Empty List
list1 = list() #Empty List
list1 = [‘Id’, 123, 0b1111_1110, 2.5j5.4, True]
list1 = [‘Id’, 123, 0b1111_1110, 2.5j5.4, True,]
list1 = list(‘Id’, ‘Name’, ‘Address’)
list1 = list(‘Id’ ‘Name’ ‘Address’)
list1 = list(‘ABC’) # is equivalent to list1 = [‘A’, ‘B’, ‘C’]
Set
변경 가능하고 순서가 지정되지 않은 고유 항목 모음입니다. 세트의 항목은 변경할 수 없고 "해시 가능"해야 합니다. 이는 해당 값(해시 값)이 절대 변경되지 않아야 함을 의미합니다. 불변은 데이터 유형도 절대 변경되지 않아야 함을 의미합니다. 이는 세트 내에 다른 세트 없이 변경 불가능하고 해시 가능한 항목만 포함할 수 있기 때문입니다.
집합은 중괄호("{") 내에서 쉼표로 구분된 값 및/또는 (불변 및 해시 가능) 개체 그룹으로 정의됩니다. 선택적으로 세트의 마지막 항목에 후행 쉼표가 있을 수 있습니다. 내장 함수인 set을 사용하여 집합을 정의할 수도 있습니다. 빈 집합은 빈 중괄호 쌍 또는 인수가 없는 집합 함수로 정의됩니다.
다음은 세트의 유효한 예입니다.
set1 = {‘Id’, ‘Name’, ‘Address’}
set1 = {‘Id’, ‘Name’, ‘Address’,}
set1 = {} #Empty Set
set1 = set() #Empty Set
set1 = {‘Id’, 123, 0b1111_1110, 2.5j5.4, True}
set1 = {‘Id’, 123, 0b1111_1110, 2.5j5.4, True,}
set1 = set(‘Id’, ‘Name’, ‘Address’)
set1 = set(‘Id’ ‘Name’ ‘Address’)
Frozenset
세트의 변경 불가능한 버전입니다. 그것들은 frozenset() 함수에 의해 정의됩니다. 빈 frozenset은 인수 없이 frozenset 함수에 의해 정의됩니다 .
유효한 예는 다음과 같습니다.
frset1 = frozenset(‘Id’, ‘Name’, ‘Address’)
frset1 = frozenset(‘Id’ ‘Name’ ‘Address’)
frset1 = frozenset() #Empty Frozen Set
Dictionary 사전
임의의 키와 쌍을 이루는 변경 가능하고 정렬되지 않은 값 모음입니다. 이러한 키는 임의적이지만 해시 가능해야 합니다. 값에는 임의의 변경 가능하거나 변경할 수 없는 개체가 포함될 수 있습니다.
사전은 다른 프로그래밍 언어의 정렬되지 않은 맵 또는 해시 테이블과 유사합니다. 쉼표, 분리된 키 쌍 및 중괄호로 묶인 값 그룹으로 정의되거나 내장 dict() 함수에서 인수로 사용됩니다.
키-값 쌍, 키 및 값은 콜론(":")으로 구분됩니다. 에서 딕셔너리 () 함수, 한 쌍의 키 값과 동일한 부호에 의해 분리될 수 있다 ( "=") 또는 튜플에 배치될 수 있다. 선택적으로 사전의 마지막 항목(키-값 쌍)은 후행 쉼표를 가질 수 있습니다.
빈 사전은 빈 중괄호 쌍 또는 인수가 없는 dict() 함수로 정의됩니다. 값이 반복 가능하더라도 사전의 모든 항목은 키-값 쌍이어야 합니다.
다음은 사전의 유효한 예입니다.
dict1 = {x:25, y:57, z:64}
dict1 = {x:25, y:57, z:64,}
dict1 = {‘x’:25, ‘y’:57, ‘z’:64,}
dict1 = {‘x’:25, 57:’y’, z:8.9j6.5}
dict1 = dict(x=25, y=57, z=64)
dict1 = dict((x, 25), (y, 57), (z, 64))
dict1 = dict() # Empty Dictionary
dict1 = {} # Empty Dictionary
None – "객체 없음"과 동일하고 속성이나 메서드가 0인 Python의 null 객체입니다. 함수는 return 문이 없으면 None을 반환합니다.
Byte – 항목만 바이트일 수 있는 불변 시퀀스(순서화된 컬렉션)(0~255 범위의 정수). Byte 항목은 문자열, 정수, None 또는 반복 가능한 문자가 될 수 있습니다.
바이트는 문자열이나 정수 앞에 "b"를 접두사로 붙이거나 내장된 byte() 함수를 사용하여 정의할 수 있습니다. Byte() 함수를 사용하면 인코딩을 지정할 수도 있습니다.
다음은 몇 가지 유효한 예입니다.
Val = b’Python’
Val = b’123’
Val = bytes(‘Python’)
Val = bytes(‘Python’, utd-8)
Val = bytes ([1, 2, 3, 4, 5])
Byte array 바이트 배열 – 항목만 있는 가변 시퀀스(순서화된 컬렉션)(0에서 255 사이의 정수). 바이트 배열의 항목은 문자열, 정수, None 또는 반복 가능한 문자가 될 수 있습니다.
유일한 차이 바이트 및 바이트 어레이 유형의 바이트 배열 가변 반면 바이트는 불변이다. 바이트 배열은 내장 bytearray() 함수를 사용하여 정의할 수 있습니다.
다음은 몇 가지 유효한 예입니다.
Val = bytearray(“Python”, ‘utf-8’)
Val = bytearray([1, 2, 3, 4, 5,])
Val = bytearray() # Empty bytearray
Range 범위 – 각 정수 값(항목)이 단계 값을 통해 인접한 항목에 따라 달라지도록 두 정수 값 사이의 정수 시퀀스(순서화된 컬렉션)입니다. 기본적으로 인접한 값은 "1"의 차이로 구분됩니다.
범위는 내장된 range() 함수를 사용하여 구체화됩니다. range() 함수의 구문은 다음과 같습니다.
range(start, stop, step)
- range()에서 하나의 값만 인수로 제공되면 0에서 지정된 인수까지의 정수 시퀀스를 제공합니다.
- 두 값이 인수로 제공되면 두 값 사이에 정수 시퀀스가 제공되며 여기에는 두 값이 포함됩니다.
- 세 개의 값이 인수로 제공되면 세 번째 값이 각 인접 항목 간의 차이 역할을 합니다.
다음은 범위의 유효한 예입니다.
range(9) # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
range(5, 10) # 5, 6, 7, 8, 9, 10
range(2, 10, 2) #2, 4, 6, 8, 10
Boolean 부울 – 이 유형은 True 또는 False의 두 가지 값만 가질 수 있습니다. 0이 아닌 값이나 비어 있지 않은 컨테이너는 True로 간주됩니다. 모든 0 값, None 또는 빈 컨테이너는 False로 간주됩니다. True 및 False 값은 각각 "1" 및 "0"으로 표시할 수도 있습니다.
Python에는 내장 클래스(예: datetime) 또는 사용자 정의 클래스를 가질 수 있는 몇 가지 다른 데이터 유형이 있습니다. 예를 들어 목적에 따라 데이터 유형을 정의하거나 데이터 구조를 나타내는 모든 클래스는 데이터 유형 클래스로 간주될 수 있습니다.
Python에는 6가지 유형의 시퀀스(순서화된 컬렉션)가 있습니다.
1. String
2. Byte
3. Byte array
4. Range
5. Tuple
6. List
시퀀스의 인덱스는 "0"에서 시작해야 합니다(즉, 시퀀스의 첫 번째 항목은 인덱스/키가 "0"임). 집합, 고정 집합 및 사전은 Python에서 정렬되지 않은 컬렉션입니다.
명확성을 위해 다음 표를 참조하십시오.
Name of Collection | Nature of Collection | Nature of Items |
String | Immutable sequence (ordered collection) of ASCII or UTF (or other encoding) characters | ASCII or UTF characters or characters corresponding to applied encoding scheme |
Byte | Immutable sequence of bytes (0 to 255) | Byte values in range from 0 to 255 that can be integers, characters or iterables |
Byte Array | Mutable sequence of bytes | Byte values in range from 0 to 255 that can be integers, characters or iterables |
Range | Immutable sequence of integers | Integers between defined range |
Tuple | Immutable sequence of objects | Arbitrary mutable or immutable objects |
List | Mutable sequence of objects | Arbitrary mutable or immutable objects |
Set | Mutable unordered collection of objects | Arbitrary immutable objects, duplicate objects not allowed |
Frozen Set | Immutable unordered collection of objects | Arbitrary immutable objects, duplicate objects not allowed |
Dictionary | Mutable unordered collection of key-value pairs | Arbitrary immutable keys and arbitrary mutable or immutable values |
변수, 속성 및 항목
모든 것이 객체인 Python에서 데이터 값도 객체입니다. 데이터 값은 메모리에 저장됩니다. 즉, 새로운 데이터 값이 Python 코드에 나타날 때마다(코드에 정의되어 있든 런타임에 정의되든) 일부 메모리 위치에도 저장됩니다.
코드는 참조를 통해 이러한 데이터 값에 액세스 합니다. 이러한 참조는 변수, 속성, 메서드 또는 개체의 항목일 수 있습니다. 변수는 코드의 어느 곳에서나 사용할 수 있는 데이터 값에 대한 참조입니다.
속성은 개체와 연결된 호출할 수 없는 데이터 값에 대한 참조입니다. 메서드는 개체와 연결된 "호출 가능한" 데이터 값에 대한 참조입니다. 호출 가능하다는 것은 이러한 데이터 값이 발생할 때 명령문 그룹을 실행한다는 것을 의미합니다. Python에서는 클래스의 인스턴스를 항목이라고 합니다. 따라서 항목은 클래스 또는 개체의 인스턴스에 대한 참조입니다.
데이터 값이 변수, 속성, 메서드 또는 개체에 할당될 때마다 프로세스를 바인딩이라고 합니다. 데이터 값은 바인딩과 독립적으로 유지됩니다. 다른 데이터 값이 참조에 할당되면 해당 데이터 값은 다른 메모리 위치에 저장됩니다. 결과적으로 이전 데이터 값(다른 참조에 바인딩되지 않은 경우)이 바인딩 해제됩니다. 바인딩되지 않은 데이터 값 또는 개체의 정리를 가비지 수집이라고 합니다.
파이썬에는 선언이 없습니다. 참조는 즉석에서 나타나며 선언된 데이터 유형이 없습니다. 참조(데이터 값/객체에 대한)가 처리되는 방식은 표시되는 표현식과 다른 참조를 리바인드하는 데 사용되는 방식에 따라 다릅니다.
데이터 값은 할당 또는 증강 할당 문을 통해 참조에 바인딩될 수 있습니다. 할당 문에서 RHS 표현식은 LHS 대상에 바인딩되며 할당 기호("=")로 구분됩니다. 대상은 변수, 속성 또는 항목과 같은 모든 참조가 될 수 있습니다.
간단한 할당 문은 다음과 같습니다.
var = Expression
다음은 간단한 할당의 예입니다.
a= 1
데이터 값(또는 표현식의 결과)을 동시에 여러 대상에 할당할 수 있습니다.
var1 = var2 = var3 = Expression
다음은 그러한 할당의 예입니다.
a = b = c = 1
RHS 표현식이 이터러블이거나 이터러블이 되는 경우 다음과 같이 다른 이터러블(같은 크기) 또는 여러 변수(이터러블의 크기와 동일한 수)에 할당해야 합니다.
var1, var2, var3 = Iterable/Expression을 Iterable로 변환
다음은 그러한 구문의 예입니다.
a, b, c, = [1.1, 1.9, abc]
대상 참조 앞에 별 기호("*")가 있으면 다음과 같이 할당되지 않은 상태로 남아 있는 모든 데이터 값/객체 목록을 허용합니다.
var1, *var2, var3 = Iterable/Expression을 통해 Iterable이 됨
다음은 그러한 할당의 예입니다.
a, *b, c, = 1.1, 1.9, abc, 43, 2.5j4 #b = 1.9, abc, 43
증가 할당에서 +=, -=, *=, **=와 같은 증가 연산자가 할당에 사용됩니다. 이러한 명령문에서 사용하기 전에 대상 참조를 생성해야 합니다. 증강 할당에는 하나의 대상 참조만 있을 수 있습니다.
증강 할당에서 참조에 이전에 할당된 데이터 값이 수정되고 이에 다시 바인드 됩니다. 그러면 이전에 할당된 데이터 값이 바인딩 해제됩니다(특정 참조에서).
다음은 증강 할당의 예입니다.
a += b # a = a + b
데이터 값은 del 문을 사용하여 참조에서 바인딩 해제할 수 있습니다. 이를 바인딩 해제라고 합니다. 대상 참조를 쉼표로 구분하여 단일 del 문에서 여러 참조를 바인딩 해제할 수 있습니다. 그러나 del 문은 데이터 값/객체를 참조에 대한 바인딩 해제만 하고 데이터 값이나 객체를 삭제하지 않습니다. 데이터 값이 다른 참조에 바인딩되지 않은 경우 가비지 수집을 위해 남겨집니다.
다음은 del 문의 유효한 예입니다.
del a
del a, b, c
Python 연산자
연산자는 데이터 값을 조작하고 논리 표현식을 구성하는 참조와 함께 사용됩니다. 논리문에는 하나 이상의 표현식이 있을 수 있습니다. 파이썬은 많은 연산자를 지원합니다.
다음은 가장 일반적입니다.
산술 연산자 – 더하기(+), 빼기(-), 곱하기(*), 나누기(/), 모듈러스(%), 지수(**) 및 바닥 나누기(//)를 포함합니다. 더하기 연산자(*)는 문자열 및 기타 이터러블과의 연결 연산자 역할도 합니다. 마찬가지로, 곱셈 연산자(*)를 사용하여 문자열을 복사하거나 승수를 사용하여 지정된 시간만큼 반복할 수 있습니다.
할당 연산자 - 할당(=), 더하기 및 할당("+="), 빼기 및 할당(-=), 곱하기 및 할당(*=), 나누기 및 할당(/=), 모듈러스 및 할당(%=) 포함 , 지수 및 할당(**=), 바닥 나누기 및 할당(//==).
비교 연산자 – 같음(==), 같지 않음(!= 또는 <>), 보다 큼(>), 보다 작음(<), 크거나 같음(>=) 및 작거나 같음(< =).
다음과 같이 비교를 연결할 수도 있습니다.
a < b >= c # a < b 및 b >=c
논리 연산자 – 논리 AND(and), 논리 OR(or) 및 논리 NOT(not)이 포함됩니다.
비트 연산자 – 이진 AND(&), 이진 OR(|), 이진 XOR(^), 이진 1 보수(~), 이진 왼쪽 시프트(<<) 및 이진 오른쪽 시프트(>>)가 포함됩니다.
멤버십 연산자 - in(in) 및 not in(not in)을 포함합니다. 이러한 연산자는 항목이 시퀀스 또는 컬렉션에 속하는지 평가하는 데 사용됩니다. in(in) 연산자는 LHS 항목이 RHS 시퀀스/컬렉션의 구성원인 경우 true를 반환합니다. not in(not in) 연산자는 LHS 항목이 RHS 시퀀스/컬렉션의 구성원이 아닌 경우 true를 반환합니다.
아이덴티티 연산자 – 포함은 (is)이고 is not(is not)입니다. 이 연산자는 두 참조가 동일한지 평가하는 데 사용됩니다. 두 참조는 동일한 데이터 값을 가리키는 경우 동일한 ID를 가질 수 있으며, 이는 동일한 메모리 위치(운영 체제 및 플랫폼에 따라 다름)에 저장될 수 있습니다. 모두 참조가 동일한 ID가 있을 경우 (인) 연산자는 true를 반환합니다. 가 아닌 두 참조가 동일한 ID가 없는 경우 (없는) 연산자는 true를 반환합니다.
인덱싱 연산자 – 인덱싱 연산자([])는 시퀀스의 특정 항목에 액세스 하기 위해 시퀀스와 함께 사용됩니다. 모든 시퀀스의 인덱스는 "0"으로 시작하므로 시퀀스의 첫 번째 항목은 인덱스(또는 키)가 0입니다. 후속 항목의 인덱스는 "1"만큼 증가합니다. 따라서 x[2]를 사용하면 시퀀스 "x"의 세 번째 항목에 액세스 할 수 있습니다. 음수가 인덱스로 사용되는 경우 해당 항목은 첫 번째 항목이 아닌 시퀀스의 마지막 항목부터 계산하여 액세스 됩니다.
슬라이싱 연산자 – 슬라이싱 연산자([:])는 시퀀스의 여러 항목에 목록으로 액세스 하는 데 사용됩니다. 예를 들어 x[1:3]을 사용하면 시퀀스 "x"의 두 번째 및 세 번째 항목에 목록으로 액세스 할 수 있습니다. Python에는 문자열, 바이트, 바이트 배열, 범위, 튜플 및 목록의 6가지 유형의 시퀀스가 있습니다.
Python의 연산자 우선순위 다음 표에는 가장 낮은 우선순위에서 가장 높은 우선순위까지 Python의 연산자 우선순위가 요약되어 있습니다.
제어 흐름 문
Python은 다음 제어 흐름 문을 지원합니다.
If-elif-else – 조건식이 true를 반환하는 경우 명령문 실행을 허용하는 조건문입니다. 다음과 같은 구문이 있습니다.
if conditional_expression1:
statement(s)
elif conditional_expression2:
statement(s)
elif conditional_expression3:
statement(s)
else conditional_expression:
statement(s)
if 구문에서 elif와 else 문은 선택 사항입니다. 조건식이 True로 평가되면 앞의 문이 실행되고 if 문의 실행 이 거기서 끝납니다. 그러나 조건식은 명시적으로 True 또는 False로 반환할 필요가 없습니다. Python에서 모든 표현식이나 객체는 조건식으로 True 또는 False를 암시적으로 평가합니다.
따라서 다음 표현을 사용하는 것이 좋습니다.
If x:
If not x:
Rather than the following expressions:
If x == True:
If x == 1:
If x is True:
If bool(x):
If x == False:
If x == 0:
If x is False:
Python은 switch 문을 지원하지 않는다는 점에 유의하는 것이 중요합니다.
While 문 – 조건식이 True로 평가되는 경우 문 또는 문 블록을 반복합니다. 조건식이 False로 평가될 때까지 계속 반복됩니다. 이는 명령문에 조건식을 결국 False로 만드는 코드가 포함되어야 함을 의미합니다.
while 문에는 다음 구문이 있습니다.
While conditional_expression:
Statement(s)
while 문에서 반복적으로 실행되는 문을 루프 본문이라고 합니다. while 문이 함수 내부에서 사용된다면 루프 본체가 return 문을 포함하며, 리턴 명령문이 함수의 실행을 종료한다. 마찬가지로 break 및 continue 문도 while 문에 영향을 줄 수 있습니다.
For-in 문 – 반복 가능한 항목을 반복하는 동안 문 또는 문 블록을 실행할 수 있습니다. 대상 참조는 반복 가능한 항목에 액세스 합니다. iterable의 항목은 문에서 사용되거나 사용되지 않을 수 있습니다. 그러나 iterable은 목록, 집합 또는 사전을 반복하는 동안 같이 for-in 문에서 수정되어서 는 안 됩니다. 항목을 추가하거나 제거해서는 안 됩니다.
for-in 문에는 다음 구문이 있습니다.
for target_reference in iterable:
Statement(s)
iterable이 사전 또는 각 항목에 둘 이상의 데이터 값이 포함된 기타 데이터 구조인 경우 쉼표로 구분된 둘 이상의 대상 참조가 있을 수 있습니다. 예를 들어 다음 for 문은 사전을 반복합니다.
for key, value in d.items():
print(key + ‘ : ’ + value + ‘/n’)
새로운 이터러블을 얻기 위해 이터러블의 각 항목에 대해 단일 문을 실행해야 하는 경우 for 문을 다음과 같이 할당 문과 결합할 수 있습니다.
y = x+3 for x in range(5)
이러한 명령문에서 표현식의 실행은 다음과 같이 조건부일 수도 있습니다.
y = x+3 for x in range(5) if x%2==0
목록, 집합 및 사전에서도 유사한 명령문이 가능합니다.
Break 문 - 루프를 종료하기 위해 루프 본문에서 사용됩니다. if 문과 함께 자주 사용됩니다. break 문을 찾으면 루프가 종료됩니다.
다음은 break 문의 몇 가지 유효한 예입니다.
While x: #execute loop if x is not zero or none
If x<10 :
print(x)
x += 1
else:
break
While x: #execute loop if x is not zero or none
If x>10:
break
else:
print(x)
x +=1
Continue 문 - 루프 본문에서 루프의 현재 반복에 대해서만 그 뒤에 명령문 실행을 남겨두는 데 사용됩니다. if 문과 함께 자주 사용됩니다.
다음은 유효한 예입니다.
while x<=10:
if x%2 == 0: continue
print(x)
Else 문 – if , for 및 while 문과 함께 사용됩니다. for 또는 while과 함께 사용하면 루프가 자연스럽게 종료된 후(즉, for 문에서 iterable의 모든 항목 뒤 또는 while 문의 조건식이 False로 평가될 때) 문 또는 문 블록을 실행합니다.
Pass 문 – 조건식에 대해 아무 작업도 수행하지 않아야 하는 경우 if 문에서 사용됩니다. 다음과 같은 구문이 있습니다.
if conditional_expression:
Statement(s)
elif conditional_expression:
Statement(s)
elif conditional_expression:
Pass #Nothing to do if this condition meets
else:
Statement(s)
예외 처리 – Python은 예외 처리를 위해 try , except , finally , else 및 with 문을 지원합니다. raise 문에 의해 명시적으로 코드에서 예외가 발생할 수 있습니다. 암시적 또는 명시적으로 예외가 발생하면 해당 예외가 해결될 때까지 코드의 정상적인 실행이 벗어납니다.
함수
함수는 호출 가능한 문의 블록입니다. 파이썬에서 함수는 객체이기도 합니다.
- 참조(변수, 속성 및 기타 개체)에 할당됨
- iterable에 항목으로 포함됨
- 다른 함수에서 인수로 사용
함수는 다른 함수를 반환할 수도 있습니다. def 문을 사용하여 정의되며 다음 구문이 있습니다.
def function_name(parameters):
statement(s)
function-name은 함수 호출에 사용할 수 있는 식별자입니다. 매개변수는 호출될 때 함수에 제공되어야 하는 참조입니다. 매개변수(또는 인수)는 선택 사항이며 함수에 참조 제공이 필요하지 않은 경우 함수 정의에 포함할 이유가 없습니다.
매개변수가 여러 개인 경우 함수 정의에서 괄호 안에 쉼표로 구분해야 합니다. 함수 호출 시 실행되는 하나 이상의 문이 있을 수 있습니다. 이러한 명령문을 함수 본문이라고 합니다.
함수가 호출될 때 제공되거나 제공되지 않을 수 있는 함수에 선택적 매개변수가 있을 수 있습니다. 이러한 선택적 매개변수는 지정 표현식으로 지정되며, 여기서 선택적 매개변수에는 기본값이 지정됩니다.
선택적 매개변수가 있는 함수의 구문은 다음과 같습니다.
def function_name(parameter, optional_parameter = expression):
statement(s)
또한 이것은 선택적 매개변수가 있는 함수의 유효한 예입니다.
def makeList(x, y=[]):
y.append(x)
return y
함수는 함수 본문에서만 사용할 수 있는 return 문을 사용하여 모든 데이터 값이나 개체를 반환할 수 있습니다. 함수에 return 문, 표현식, 데이터 값 또는 return 키워드 뒤에 객체가 없으면 함수는 객체를 반환하지 않습니다.
선택 사항이 아닌 매개변수를 위치 매개변수라고 합니다. 매개변수 앞에 별표(*) 또는 이중 별표(**)를 접두사로 붙여 함수에 임의의 수의 위치 매개변수를 제공할 수 있습니다.
매개변수에 별표(*)를 접두사로 붙일 때 임의의 수의 위치 매개변수를 받아 튜플에 수집합니다. 매개변수에 이중 별표(*)를 접두사로 지정할 때 임의의 수의 위치 매개변수를 허용하고 사전에 수집합니다.
다음은 함수에서 임의의 수의 위치 매개변수를 수락하는 유효한 예입니다.
def add(*num)
return sum(num)
s = add(15, 20, 15) # s = 50
호출될 때 함수에 제공된 참조를 인수라고 합니다. 인수는 위치 또는 명명된 인수로 제공될 수 있습니다. 데이터 값/객체가 매개변수 참조에 할당하지 않고 인수로 사용되는 경우 함수 서명에서 나타나는 위치에 따라 함수 호출에서 허용됩니다. (참고: 함수 서명은 함수에 바인딩된 매개변수의 모음입니다).
이를 위치 인수라고 합니다. 데이터 값/객체를 매개변수 참조에 명시적으로 할당하여 객체로 사용하는 경우 함수 호출에서 나타나는 위치는 중요하지 않습니다. 이를 명명된 인수 또는 키워드 인수라고 합니다.
다음은 위치 인수의 유효한 예입니다.
def f(a, b, c):
return a = b= c
f(12, 17, 21) # returns 50
다음은 명명된(키워드) 인수의 유효한 예입니다.
def f(a, b, c):
return a = b= c
f(b = 12, a = 17, c = 21) # returns 50
파이썬에서는 다른 함수 안에 함수를 정의하는 것이 가능하며 이것이 호출됩니다. 다른 함수 내부에 정의된 함수를 중첩 함수라고 하고, 다른 함수가 정의된 함수를 외부 함수라고 합니다. 중첩 함수는 외부 함수의 매개변수와 참조를 사용할 수 있습니다. 이러한 중첩 함수를 클로저라고 합니다.
함수는 다른 시간에 값/객체를 반환할 수도 있습니다. 예를 들어 yield 또는 yield from 문을 가질 수 있습니다. 이러한 기능을 생성기라고 합니다. 제너레이터가 호출되면 첫 번째 yield 문에서 표현식의 값/객체 또는 결과를 반환하고 모든 로컬 참조를 메모리에 저장합니다.
함수가 다시 호출되면 첫 번째 yield 문 이후의 문부터 실행을 시작하고 다른 yield 문 이후에 값/객체 또는 표현식의 결과를 반환합니다. 명령문이 있는 식이 반복자이면 명령문의 yield를 사용할 수 있습니다.
다음은 생성기 함수의 유효한 예입니다.
def f(a, b, c):
yield a
yield a + b
yield a + b + c
for x in f(2, 5, 7): print(x) # returns 2, 7, 14
생성기는 yield from 문을 사용합니다.
def f(a, b, c):
yield from range(a)
yield from range(b)
yield from range(c)
for x in f(1, 2, 3): print(x) # returns 0, 1, 0, 1, 2, 0, 1, 2, 3
Python은 또한 자체 본문 내에서 스스로를 호출하는 재귀 함수를 지원합니다.
다음은 Python에서 재귀 함수의 유효한 예입니다.
def factorial(n):
if n==1: return 1
else return n * factorial(n-1)
참조 범위
Python에서 참조는 로컬 또는 전역 범위를 가질 수 있습니다. 이를 네임스페이스라고 합니다. 함수 또는 다른 개체에 바인딩하는 참조는 해당 함수 또는 개체에 대해 로컬입니다. 이러한 참조는 바인딩된 함수 또는 개체 내에서만 사용할 수 있습니다.
함수 또는 다른 개체 외부에 나타나는 참조에는 전역 범위가 있습니다. 이러한 참조는 코드의 어디에서나 사용할 수 있습니다. global 키워드를 접두사로 사용하여 참조를 전역적으로 만들 수 있습니다.
다음은 유효한 예입니다.
a = 1
def f(b):
global b
return a + b
다음 튜토리얼에서는 바이트 배열, 리스트, 세트 및 사전에 대한 자세한 내용을 알아보겠습니다. 문자열, 바이트, 범위 및 튜플은 변경할 수 없는 시퀀스이지만 바이트 배열과 목록은 Python에서 변경 가능한 시퀀스일 뿐입니다. 집합과 컬렉션은 순서가 지정되지 않은 컬렉션에서 가장 자주 사용됩니다.
'개발자 > 라즈베리파이4' 카테고리의 다른 글
라즈베리파이 4에서 VNC 접속하여 사용하기 Raspberry Pi4 VNC Connect (2) | 2021.11.10 |
---|---|
라즈베리파이 Python Programming 10: 객체 지향 Python (0) | 2021.11.05 |
라즈베리파이 Python Programming 09: 파이선 set and dictionary (0) | 2021.11.04 |
라즈베리파이 Python Programming 08: List와 Byte array (0) | 2021.11.03 |
라즈베리파이 Python Programming 06: 파이선 기초 1/2 (0) | 2021.11.01 |
라즈베리파이 파이선 프로그래밍 05: Python 소개 (0) | 2021.10.29 |
라즈베리파이 파이선 프로그래밍 04. Raspberry Pi 초기 설정 (1) | 2021.10.28 |
라즈베리파이 파이선 프로그래밍 03. Linux 시스템 기반 Raspberry Pi (0) | 2021.10.27 |
더욱 좋은 정보를 제공하겠습니다.~ ^^