파이썬만의 특별한 문법들에 대해 알아보자.
두 개 이상의 결과값 반환
파이썬에서는 두 개 이상의 값을 반환할 수가 있다.
단일 데이터가 아닌, 튜플을 반환할 경우 해당 튜플의 데이터 수 만큼 반환이 가능해지고, 이를 동시에 변수에 대입할 수 있다.
즉, 튜플은 해당 데이터 수만큼 동시에 변수에 대입이 가능하다.
- 앞서 튜플에 대한 설명에서 튜플은 괄호 없이 선언이 가능하다는 것을 알고있다.
따라서 아래와 같은 코드가 가능해지며, 함수의 리턴또한 괄호 없이 여러개를 반환할 수 있다.
특별한 메서드들
-
_ _ init _ _(self, …)
자바에서 생성자와 같이 파이썬에서도 객체가 생성될 때 해당 객체클래스에 정의되어 있는 init메서드를 호출 시킨다. -
_ _del_ _(self)
자바의 소멸자와 같은 기능을 하는 이 메소드는 객체가 메모리에서 제거되기 직전에 호출된다.
( 그러나 언제 호출될 지 분명하지 않으므로 가능하면 사용을 피하는 것이 좋다. )
-
str(self)
print 문이라던가 str()등이 사용될 경우 호출 된다. -
lt(self, other)
미만 연산자(<)와 동일한 역할을 하는 함수이다. 이와 비슷하게, 모든 연산자(+, -, 등등)에 해당 하는 특별한 메소드들이 하나씩 따로 존재한다. -
getitem(self, key)
x[key]형태의 인덱싱 연산과 같은 기능을 하는 함수이다. -
len(self)
열거형 객체의 길이를 얻어 오기 위한 내장 함수.
한 줄 짜리 블록
파이썬에서는 명령문의 블록을 들여쓰기로 구분하여 쓴다.
하지만, 한 블록의 명령문이 하나만 있을 경우 한 줄만 써도 가능하다. (권장사항은 아님)
리스트 축약
기존의 리스트를 기반으로 새로운 리스트를 생성할 때, 코드를 축약하여 리스트를 생성하는 방법
- list를 선언하는 대괄호 안에서 for문을 작성하여 해당 반환되는 값을 list의 목록으로 생성
함수 인자를 튜플 또는 사전 형태로 넘겨받기
함수의 인자로 튜플 또는 사전 객체자체를 받는것이 아닌, 여러개의 인자를 보낼 때 함수내에서 자동적으로 튜플 또는 사전의 형태로 변환하여 사용하도록 매개인자를 받을 수 있다.
- 함수의 인자를 튜플로 받기 위해서는 함수 정의 시 매개변수 앞에 *를 써 주어야 하고, 사전 형태로 받기 위해서는 **을 써 주어야 한다.
사전 또는 튜플객체 자체를 넘겨 줄 때는 매개인자로 그냥 변수명만 써 주어도 된다.
assert문
assert문은 어떤 조건이 참인지 아닌지 확실하게 알고 싶을 때 사용된다.
assert문을 통해 조건 확인 시 참이 아닐 경우 AssertionError이 발생된다.
ex ) mylist의 길이가 0일 경우
assert len(mylist) >= 1 은 AssertionError 발생
lambda
람다는 함수를 생성할 때 쓰는 예약어로, def보다 간결하게 사용할 수 있고 def가 쓰일 수 없는 곳에서도 쓸 수 있다는 장점이 있다.
lambda의 사용법은 함수명 = lambda 매개변수 : 기능"으로 정의가 가능하다
▶ lambda로 리스트에 함수 만들기
위와 같이 lambda로 list를 정의했을 경우, myList[0]인덱스에는 덧셈 함수가 정의되고, myList[1]인덱스에는 곱셈 함수가 정의된다.
즉, 리스트의 각각의 인덱스를 함수의 이름으로 정의하는것과 같다.
f 문자열 포맷팅
파이썬 3.6버전 이상부터 사용할 수 있는 문자열 포맷팅 문법
- 변수가 미리 선언되어 있을 경우 변수명으로 바로 사용가능
copy 모듈
객체를 직접적으로 대입하지 않고, 복사본을 만들어주는 함수
range 함수
range함수는 list를 직접 생성하지 않고, for문등에서 간편하게 반복작업 할 수 있도록 list형태의 반복구조를 만들어주는 함수이다.
- range(10)은 0~9까지의 반복구조를 만들어내며, range(3,8)은 3~7까지의 반복구조를 만들어낸다.