본문 바로가기
IT/파이썬 기초 (Python)

#042 파이썬 기초 - 더 많은 것들 I

by DoitSQL 2023. 3. 25.
728x90

Python기초강의강좌, 파이썬기초강의강좌, lambda

#042 파이썬 기초 - 더 많은 것들 I

더 많은 것들 I

지금까지 앞으로 여러분이 사용하게 될 파이썬의 여러 주요한 기능들에 대해 다뤄 보았습니다. 이 챕터에서는, 여러분이 앞으로 파이썬을 사용하면서 추가로 알아두면 좋을 몇 가지를 다뤄 보겠습니다.


튜플 넘기기

>>> def get_error_details():
...  return(2, 'details')
...
>>> errnum, errstr = get_error_details()
>>> errnum
2
>>> errstr
'details'

위와 같이 a, b = <계산식>과 같이 해 주면 계산식의 결과로 넘어온 튜플이 자동으로 두 값에 알맞게 들어가게 됩니다.

 

이것을 이용하여 두 변수의 값을 바꾸어야 할 때 다음과 같이 할 수 있습니다:

>>> a = 5; b = 8
>>> a, b
(5, 8)
>>> a, b = b, a
>>> a, b
(8, 5)

특별한 메서드들

클래스에는 init이나 del 메서드처럼 특별한 일을 하는 몇 개의 메서드들이 있습니다.

 

이러한 특별한 메서드들을 이용하면 파이썬에 내장된 특정 형식들을 흉내 낼 수 있습니다. 예를 들어, 여러분이 새로 만든 클래스에서 x [key]와 같은 형태의 인덱싱 연산을 가능하게 하고 싶을 경우 (리스트나 튜플처럼), 클래스에 getitem() 메서드를 구현해 두기만 하면 됩니다. 사실 이것은 파이썬에 내장된 list 클래스에도 똑같은 방식으로 구현되어 있습니다.

 

아래에 몇 개의 유용한 특별한 메서드의 목록이 있습니다. 모든 특별한 메서드들에 대해 알고 싶으시면, 공식 설명서를 참고하세요.

https://docs.python.org/ko/3/reference/datamodel.html#special-method-names

 

3. Data model

Objects, values and types: Objects are Python’s abstraction for data. All data in a Python program is represented by objects or by relations between objects. (In a sense, and in conformance to Von ...

docs.python.org

 

init(self, …)

이 메서드는 객체가 새로 생성될 때 호출됩니다.

 

del(self)

이 메서드는 객체가 메모리에서 제거되기 직전에 호출됩니다.

(그러나 언제 호출될지 분명하지 않으므로 가능하면 사용을 피하세요).

 

str(self)

print 문이라던가 str() 등이 사용될 경우 호출됩니다.

 

lt(self, other)

작음 연산자 (<)가 사용될 경우 호출됩니다. 이와 비슷하게, 모든 연산자(+, -, 등등)에 해당하는 특별한 메서드들이 하나씩 따로 존재합니다.

 

getitem(self, key)

x [key] 형태의 인덱싱 연산이 사용될 경우 호출됩니다.

 

len(self)

열거형 객체의 길이를 얻어오기 위한 내장 함수 len() 이 사용될 경우 호출됩니다


한 줄짜리 블록

지금까지 여러분이 작성한 프로그램에서는 각 블록이 서로 다른 들여 쓰기 단계에 따라 구분되어 있었을 것입니다. 그렇지만 한 가지 예외가 있습니다. 만약 블록에 딱 한 개의 명령만 존재하는 경우, 특히 조건문이나 반복문을 사용할 때, 그 줄에 해당 명령을 이어서 지정해 줄 수 있습니다.

아래 예제를 보면 이것을 좀 더 명확하게 이해할 수 있을 것입니다:

>>> flag = True
>>> if flag: print('Yes')
...
Yes

위와 같이, 한 줄짜리 블록은 새로 블록을 생성하지 않고 그 줄 뒤에 이어서 사용됩니다. 이러한 방식을 사용하면 여러분의 프로그램을 몇 줄 줄여줄 수는 있겠지만, 디버깅을 할 때와 같은 경우를 제외하고는 가능하면 이 방법을 사용하지 않기를 강력히 권합니다. 그 주된 이유는 적절한 들여 쓰기를 사용할 경우, 그 아래에 추가 명령을 삽입하기가 좀 더 쉬워지기 때문입니다.


lambda 식

 

lambda 문은 새 함수 객체를 만들 때 사용됩니다. 기본적으로, lambda 문은 한 줄짜리 수식을 매개 변수로 넘겨받게 되어 있는데 이것이 곧 함수의 본체가 되고, 이렇게 생성된 함수를 호출하면 지정해 준 수식을 통해 계산된 결괏값이 반환됩니다.

 

예제 (  more_lambda.py로 저장하세요)

# Filename : more_lambda.py
points = [ { 'x' : 2, 'y' : 3 },
           { 'x' : 4, 'y' : 1 } ]
points.sort(key=lambda i : i['y'])
print(points)

 ▶ 실행 결과:

C:\Anaconda\envs\study_39\python.exe E:\python_study\more_lambda.py
[{'x': 4, 'y': 1}, {'x': 2, 'y': 3}]

▶ 동작 원리:

list의 sort 메서드는 key 매개 변수를 받는데, 이것은 어떻게 리스트를 정렬할 것 인지를 결정해 주는 것입니다 (주로 오름차순으로 할지 내림차순으로 할지 정도만 지정해 주지만요). 위 예제에서는 특별히 우리가 정의한 방식대로 정렬을 하려고 하며, 따라서 이 일을 해 주는 함수를 하나 만들어 주어야 합니다. 이때 def 블록을 사용하여 함수를 생성하지 않고 lambda 식을 사용하여 새 함수를 그 자리에서 바로 만들어 주었습니다.


이번 시간에는 파이썬 기초가 끝나고 더 알았으면 하는 것들에 대해 말씀드렸습니다.

다음 시간에 몇 가지 더 언급하고 기초 강좌는 끝을 낼까 합니다.

아직 파이썬에 대해서 배울 것은 많지만 기본 프로그램의 뼈대는 다 배웠다고 생각합니다.

 

이제부터의 파이썬 공부는 수많은 파이썬 라이브러리에 대한 공부가 될 것입니다.

 

감사합니다.

Do it! SQL을 찾아 주셔서 감사합니다. ♥ 댓글이 큰 힘이 됩니다.

 

 

728x90

댓글